Commit 59684652 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

merge trunk

parents fe0b1ec4 1f9f395d
2012-10-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (install-man, install-etc):
Apply $TRANSFORM. (Bug#12536#34)
(clean): Delete etc/emacs.tmpdesktop.
2012-10-11 Kenichi Handa <handa@gnu.org>
* .bzrignore: Add several files under admin/charsets.
......@@ -758,7 +764,7 @@
2012-06-28 Dmitry Antipov <dmantipov@yandex.ru>
* configure.in: Fix previous change. Remove --enable-asserts.
* configure.in: Fix previous change. Remove --enable-asserts.
(CPPFLAGS): Remove conditional -DXASSERTS=1.
Add --enable-link-time-optimization.
* INSTALL: Mention this.
......@@ -936,7 +942,7 @@
2012-06-03 Ulrich Müller <ulm@gentoo.org>
* configure.in (PAXCTL): Check for paxctl. (Bug#11398)
* configure.in (PAXCTL): Check for paxctl. (Bug#11398)
2012-06-01 Paul Eggert <eggert@cs.ucla.edu>
......@@ -1388,7 +1394,7 @@
2012-04-17 Dmitry Antipov <dmantipov@yandex.ru>
* configure.in (AC_CHECK_FUNCS):
Add getpwent, endpwent, getgrent, endgrent. (Bug#7900)
Add getpwent, endpwent, getgrent, endgrent. (Bug#7900)
2012-04-16 Glenn Morris <rgm@gnu.org>
......@@ -1565,7 +1571,7 @@
2011-11-04 Glenn Morris <rgm@gnu.org>
* configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929)
* configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929)
Do not include GnuTLS version info in final summary message.
2011-10-31 Eli Zaretskii <eliz@gnu.org>
......
......@@ -622,18 +622,24 @@ install-man:
thisdir=`/bin/pwd`; \
cd ${mansrcdir}; \
for page in *.1; do \
dest=`echo "$${page}" | sed '$(TRANSFORM)'`; \
(cd $${thisdir}; \
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}); \
${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${dest}); \
( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \
rm -f $(DESTDIR)${man1dir}/$${page}.gz; \
${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \
rm -f $(DESTDIR)${man1dir}/$${dest}.gz; \
${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${dest}; \
done
## Install those items from etc/ that need to end up elsewhere.
install-etc:
umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir}
${INSTALL_DATA} ${srcdir}/etc/emacs.desktop \
$(DESTDIR)${desktopdir}/emacs.desktop
dest=`echo emacs | sed '$(TRANSFORM)'`; \
tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \
sed -e "/^Exec=emacs/ s/emacs/$${dest}/" \
-e "/^Icon=emacs/ s/emacs/$${dest}/" \
${srcdir}/etc/emacs.desktop > $${tmp}; \
${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/$${dest}.desktop; \
rm -f $${tmp}
thisdir=`/bin/pwd`; \
cd ${iconsrcdir} || exit 1; umask 022 ; \
for dir in */*/apps */*/mimetypes; do \
......@@ -641,8 +647,9 @@ install-etc:
( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \
for icon in $${dir}/*.*; do \
[ -r $${icon} ] || continue ; \
dest=`echo "$${icon}" | sed -e 's|.*/||' -e '$(TRANSFORM)'` ; \
( cd $${thisdir}; \
${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${icon} ) \
${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${dir}/$${dest} ) \
|| exit 1; \
done ; \
done
......@@ -729,6 +736,7 @@ mostlyclean: FRC
###
### Delete `.dvi' files here if they are not part of the distribution.
clean: FRC
-rm -f etc/emacs.tmpdesktop
(cd src; $(MAKE) $(MFLAGS) clean)
(cd oldXMenu; $(MAKE) $(MFLAGS) clean)
(cd lwlib; $(MAKE) $(MFLAGS) clean)
......
2012-10-16 Juri Linkov <juri@jurta.org>
* search.texi (Query Replace): Document multi-buffer replacement
keys. (Bug#12655)
* maintaining.texi (Tags Search): Change link "Replace" to
"Query Replace".
2012-10-13 Chong Yidong <cyd@gnu.org>
* files.texi (File Conveniences): ImageMagick enabled by default.
......
......@@ -2221,7 +2221,7 @@ the current buffer, followed by the remaining files of the tags table.
reads a regexp to search for and a string to replace with, just like
ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x
tags-search}, but repeatedly, processing matches according to your
input. @xref{Replace}, for more information on query replace.
input. @xref{Query Replace}, for more information on query replace.
@vindex tags-case-fold-search
@cindex case-sensitivity and tags search
......
......@@ -1239,6 +1239,19 @@ occurrences.
@item !
to replace all remaining occurrences without asking again.
@item Y @r{(Upper-case)}
to replace all remaining occurrences in all remaining buffers in
multi-buffer replacements (like the Dired `Q' command which performs
query replace on selected files). It answers this question and all
subsequent questions in the series with "yes", without further
user interaction.
@item N @r{(Upper-case)}
to skip to the next buffer in multi-buffer replacements without
replacing remaining occurrences in the current buffer. It answers
this question "no", gives up on the questions for the current buffer,
and continues to the next buffer in the sequence.
@item ^
to go back to the position of the previous occurrence (or what used to
be an occurrence), in case you changed it by mistake or want to
......
2012-10-17 Gregor Zattler <grfz@gmx.de> (tiny change)
* emacs-lisp-intro.texi (Narrowing advantages):
Minor update for changed what-line implementation. (Bug#12629)
2012-06-21 Glenn Morris <rgm@gnu.org>
* Makefile.in: Rename infodir to buildinfodir throughout. (Bug#11737)
......
......@@ -6600,8 +6600,8 @@ buffer; or conversely, an Emacs Lisp function needs to work on all of a
buffer that has been narrowed. The @code{what-line} function, for
example, removes the narrowing from a buffer, if it has any narrowing
and when it has finished its job, restores the narrowing to what it was.
On the other hand, the @code{count-lines} function, which is called by
@code{what-line}, uses narrowing to restrict itself to just that portion
On the other hand, the @code{count-lines} function
uses narrowing to restrict itself to just that portion
of the buffer in which it is interested and then restores the previous
situation.
 
......
2012-10-15 Chong Yidong <cyd@gnu.org>
* macros.texi (Defining Macros): defmacro is now a macro.
Explicitly list the docstring and declare arguments.
* functions.texi (Anonymous Functions): Explicitly list the
docstring, declare, and interactive arguments to lambda.
(Defining Functions): Likewise for defun.
(Inline Functions): Likewise for defsubst.
(Declare Form): Tweak description.
2012-10-13 Chong Yidong <cyd@gnu.org>
* display.texi (ImageMagick Images): ImageMagick enabled by default.
......
......@@ -522,21 +522,20 @@ Scheme.)
is called @dfn{defining a function}, and it is done with the
@code{defun} special form.
@defmac defun name argument-list body-forms...
@defmac defun name args [doc] [declare] [interactive] body@dots{}
@code{defun} is the usual way to define new Lisp functions. It
defines the symbol @var{name} as a function that looks like this:
defines the symbol @var{name} as a function with argument list
@var{args} and body forms given by @var{body}. Neither @var{name} nor
@var{args} should be quoted.
@example
(lambda @var{argument-list} . @var{body-forms})
@end example
@var{doc}, if present, should be a string specifying the function's
documentation string (@pxref{Function Documentation}). @var{declare},
if present, should be a @code{declare} form specifying function
metadata (@pxref{Declare Form}). @var{interactive}, if present,
should be an @code{interactive} form specifying how the function is to
be called interactively (@pxref{Interactive Call}).
@code{defun} stores this lambda expression in the function cell of
@var{name}. Its return value is @emph{undefined}.
As described previously, @var{argument-list} is a list of argument
names and may include the keywords @code{&optional} and @code{&rest}.
Also, the first two of the @var{body-forms} may be a documentation
string and an interactive declaration. @xref{Lambda Components}.
The return value of @code{defun} is undefined.
Here are some examples:
......@@ -582,14 +581,14 @@ redefinition from unintentional redefinition.
@end defmac
@cindex function aliases
@defun defalias name definition &optional docstring
@defun defalias name definition &optional doc
@anchor{Definition of defalias}
This special form defines the symbol @var{name} as a function, with
definition @var{definition} (which can be any valid Lisp function).
Its return value is @emph{undefined}.
If @var{docstring} is non-@code{nil}, it becomes the function
documentation of @var{name}. Otherwise, any documentation provided by
If @var{doc} is non-@code{nil}, it becomes the function documentation
of @var{name}. Otherwise, any documentation provided by
@var{definition} is used.
The proper place to use @code{defalias} is where a specific function
......@@ -902,11 +901,14 @@ function, you can in principle use any method to construct the list.
But typically you should use the @code{lambda} macro, or the
@code{function} special form, or the @code{#'} read syntax:
@defmac lambda args body...
This macro returns an anonymous function with argument list @var{args}
and body forms given by @var{body}. In effect, this macro makes
@code{lambda} forms ``self-quoting'': evaluating a form whose @sc{car}
is @code{lambda} yields the form itself:
@defmac lambda args [doc] [interactive] body@dots{}
This macro returns an anonymous function with argument list
@var{args}, documentation string @var{doc} (if any), interactive spec
@var{interactive} (if any), and body forms given by @var{body}.
In effect, this macro makes @code{lambda} forms ``self-quoting'':
evaluating a form whose @sc{car} is @code{lambda} yields the form
itself:
@example
(lambda (x) (* x x))
......@@ -1169,13 +1171,13 @@ If provided, @var{when} should be a string indicating when the function
was first made obsolete---for example, a date or a release number.
@end defun
@defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring
@defmac define-obsolete-function-alias obsolete-name current-name &optional when doc
This convenience macro marks the function @var{obsolete-name} obsolete
and also defines it as an alias for the function @var{current-name}.
It is equivalent to the following:
@example
(defalias @var{obsolete-name} @var{current-name} @var{docstring})
(defalias @var{obsolete-name} @var{current-name} @var{doc})
(make-obsolete @var{obsolete-name} @var{current-name} @var{when})
@end example
@end defmac
......@@ -1213,16 +1215,16 @@ this:
@section Inline Functions
@cindex inline functions
@defmac defsubst name argument-list body-forms...
Define an inline function. The syntax is exactly the same as
@code{defun} (@pxref{Defining Functions}).
@end defmac
You can define an @dfn{inline function} by using @code{defsubst}
instead of @code{defun}. An inline function works just like an
ordinary function except for one thing: when you byte-compile a call
An @dfn{inline function} is a function that works just like an
ordinary function, except for one thing: when you byte-compile a call
to the function (@pxref{Byte Compilation}), the function's definition
is expanded into the caller.
is expanded into the caller. To define an inline function, use
@code{defsubst} instead of @code{defun}.
@defmac defsubst name args [doc] [declare] [interactive] body@dots{}
This macro defines an inline function. Its syntax is exactly the same
as @code{defun} (@pxref{Defining Functions}).
@end defmac
Making a function inline often makes its function calls run faster.
But it also has disadvantages. For one thing, it reduces flexibility;
......@@ -1266,16 +1268,13 @@ convention in Emacs Lisp mode.
@anchor{Definition of declare}
@defmac declare @var{specs}@dots{}
This macro ignores its arguments and evaluates to @code{nil}; it has
no run-time effect. However, when a @code{declare} form occurs as the
@emph{very first form} in the body of a @code{defun} function
definition or a @code{defmacro} macro definition (@pxref{Defining
Macros}, for a description of @code{defmacro}), it appends the
properties specified by @var{specs} to the function or macro. This
work is specially performed by the @code{defun} and @code{defmacro}
macros.
Note that if you put a @code{declare} form in an interactive function,
it should go before the @code{interactive} form.
no run-time effect. However, when a @code{declare} form occurs in the
@var{declare} argument of a @code{defun} or @code{defsubst} function
definition (@pxref{Defining Functions}) or a @code{defmacro} macro
definition (@pxref{Defining Macros}), it appends the properties
specified by @var{specs} to the function or macro. This work is
specially performed by @code{defun}, @code{defsubst}, and
@code{defmacro}.
Each element in @var{specs} should have the form @code{(@var{property}
@var{args}@dots{})}, which should not be quoted. These have the
......
......@@ -185,35 +185,38 @@ During Compile}).
@node Defining Macros
@section Defining Macros
A Lisp macro is a list whose @sc{car} is @code{macro}. Its @sc{cdr} should
be a function; expansion of the macro works by applying the function
(with @code{apply}) to the list of unevaluated argument-expressions
from the macro call.
A Lisp macro object is a list whose @sc{car} is @code{macro}, and
whose @sc{cdr} is a lambda expression. Expansion of the macro works
by applying the lambda expression (with @code{apply}) to the list of
@emph{unevaluated} arguments from the macro call.
It is possible to use an anonymous Lisp macro just like an anonymous
function, but this is never done, because it does not make sense to pass
an anonymous macro to functionals such as @code{mapcar}. In practice,
all Lisp macros have names, and they are usually defined with the
special form @code{defmacro}.
function, but this is never done, because it does not make sense to
pass an anonymous macro to functionals such as @code{mapcar}. In
practice, all Lisp macros have names, and they are almost always
defined with the @code{defmacro} macro.
@defspec defmacro name argument-list body-forms@dots{}
@code{defmacro} defines the symbol @var{name} as a macro that looks
like this:
@defmac defmacro name args [doc] [declare] body@dots{}
@code{defmacro} defines the symbol @var{name} (which should not be
quoted) as a macro that looks like this:
@example
(macro lambda @var{argument-list} . @var{body-forms})
(macro lambda @var{args} . @var{body})
@end example
(Note that the @sc{cdr} of this list is a function---a lambda expression.)
This macro object is stored in the function cell of @var{name}. Its return
value is @emph{undefined}.
The shape and meaning of @var{argument-list} is the same as in a
function, and the keywords @code{&rest} and @code{&optional} may be used
(@pxref{Argument List}). Macros may have a documentation string, but
any @code{interactive} declaration is ignored since macros cannot be
called interactively.
@end defspec
(Note that the @sc{cdr} of this list is a lambda expression.) This
macro object is stored in the function cell of @var{name}. The
meaning of @var{args} is the same as in a function, and the keywords
@code{&rest} and @code{&optional} may be used (@pxref{Argument List}).
Neither @var{name} nor @var{args} should be quoted. The return value
of @code{defmacro} is undefined.
@var{doc}, if present, should be a string specifying the macro's
documentation string. @var{declare}, if present, should be a
@code{declare} form specifying metadata for the macro (@pxref{Declare
Form}). Note that macros cannot have interactive declarations, since
they cannot be called interactively.
@end defmac
Macros often need to construct large list structures from a mixture
of constants and nonconstant parts. To make this easier, use the
......
......@@ -47,7 +47,7 @@ no warnings; on older and on non-GNU systems the generated warnings
may be useful.
---
** The configuration option '--enable-use-lisp-union-type' has been
** The configure option '--enable-use-lisp-union-type' has been
renamed to '--enable-check-lisp-object-type', as the resulting
Lisp_Object type no longer uses a union to implement the compile time
check that this option enables.
......@@ -61,6 +61,13 @@ as it was confusingly-named and rarely useful.
overwriting "emacs" in the installation bin/ directory with a link
to emacs-VERSION.
---
** The configure options `--program-prefix', `--program-suffix', and
`--program-transform-name' apply to more than just the installed
binaries. Now they also affect the man pages, icons, and the
etc/emacs.desktop file; but not the info pages, since this would break
links between the various manuals.
---
** Emacs uses libtinfo in preference to libncurses, if available.
......@@ -203,7 +210,9 @@ The PCL-CVS commands are still available via the keyboard.
---
*** Fullscreen and frame parameter fullscreen is supported.
---
*** A file dialog is used when open/saved is done from the menu/toolbar.
*** A file dialog is used for open/save operations initiated from the
menu/toolbar.
* Editing Changes in Emacs 24.3
......@@ -415,8 +424,8 @@ The global binding for `M-=', `count-words-region' is in effect.
channel keys found, if any.
** Flymake uses fringe bitmaps to indicate errors and warnings.
See flymake-fringe-indicator-position, flymake-error-bitmap and
flymake-warning-bitmap.
See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
`flymake-warning-bitmap'.
** Follow mode
......@@ -634,6 +643,10 @@ inefficiency, and not namespace-clean.
* New Modes and Packages in Emacs 24.3
FIXME? erc-desktop-notifications.el, gv.el, profiler.el,
gnus-notifications.el, mm-archive.el
* Incompatible Lisp Changes in Emacs 24.3
......@@ -848,7 +861,7 @@ describing the cycle.
** Miscellaneous new functions:
*** `autoloadp'
*** `autoload-do-load'.
*** `autoload-do-load'
+++
*** `buffer-narrowed-p' tests if the buffer is narrowed.
*** `file-name-base' returns a file name sans directory and extension.
......@@ -873,7 +886,7 @@ See the "Face Attributes" section of the Elisp manual.
*** `automount-dir-prefix'
*** `buffer-has-markers-at'
*** `macro-declaration-function' (use `macro-declarations-alist').
*** `macro-declaration-function' (use `macro-declarations-alist')
*** `window-system-version'
*** `dired-pop-to-buffer' (use `dired-mark-pop-up')
*** `query-replace-interactive'
......@@ -881,21 +894,20 @@ See the "Face Attributes" section of the Elisp manual.
* Changes in Emacs 24.3 on non-free operating systems
** New configure.bat options on MS-Windows:
*** --without-libxml2 omits support for libxml2, even if its presence
is detected.
+++
** On MS Windows, you can pass --without-libxml2 to configure.bat to omit
support for libxml2, even if its presence is detected.
** When invoked with the -nw switch to run on the Windows text-mode terminal,
Emacs now supports mouse highlight, help-echo (in the echo area), and
mouse-autoselect-window.
`mouse-autoselect-window'.
** Two new functions are available in Cygwin builds of Emacs:
cygwin-convert-path-from-windows and cygwin-convert-path-to-windows.
** Two new functions are available in Cygwin builds:
`cygwin-convert-path-from-windows' and `cygwin-convert-path-to-windows'.
These functions allow Lisp code to access the Cygwin file-name mapping
machinery to convert between Cygwin and Windows-native file names.
** On MS-Windows Vista and later Emacs now supports symbolic links.
** On MS Windows Vista and later Emacs now supports symbolic links.
* Changes in Emacs 24.2
......
2012-10-17 Michael Heerdegen <michael_heerdegen@web.de> (tiny change)
* wdired.el (wdired-old-marks): New variable.
(wdired-change-to-wdired-mode): Locally set wdired-old-marks.
(wdired-do-renames): Move point with renamed file and don't lose
mark status (Bug#11795).
2012-10-16 Juri Linkov <juri@jurta.org>
* replace.el (query-replace-help): Mention multi-buffer replacement
keys in the Help message. (Bug#12655)
2012-10-15 Chong Yidong <cyd@gnu.org>
* emacs-lisp/byte-run.el (defsubst): Doc fix.
2012-10-14 Eli Zaretskii <eliz@gnu.org>
 
* window.el (display-buffer): Doc fix.
* progmodes/compile.el (compilation-error-regexp-alist-alist):
Adjust the msft regexp to the output of Studio 2010, and move msft
before edg-1. See the discussion on emacs-devel,
......@@ -593,9 +611,9 @@
* emacs-lisp/eieio-base.el (eieio-persistent-read): New input args
specifying the expected class, and whether subclassing is allowed.
(eieio-persistent-convert-list-to-object):
(eieio-persistent-validate/fix-slot-value)
(eieio-persistent-slot-type-is-class-p): New functions.
(eieio-named::slot-missing): Doc fix.
(eieio-persistent-validate/fix-slot-value)
(eieio-persistent-slot-type-is-class-p): New functions.
(eieio-named::slot-missing): Doc fix.
 
* emacs-lisp/eieio-datadebug.el (data-debug/eieio-insert-slots):
Stop using unused publd variable.
......@@ -2038,7 +2056,7 @@
 
* ses.el (ses-widen):
* simple.el (count-words--buffer-message):
* net/browse-url.el (browse-url-of-buffer): Use it
* net/browse-url.el (browse-url-of-buffer): Use it.
 
* simple.el (count-words-region): Don't signal an error if there
is a non-nil prefix arg and the mark is not set.
......@@ -16320,7 +16338,7 @@
2011-06-22 Leo Liu <sdl.web@gmail.com>
 
* minibuffer.el (completing-read-function)
(completing-read-default): Move from minibuf.c
(completing-read-default): Move from minibuf.c.
 
2011-06-22 Richard Stallman <rms@gnu.org>
 
......@@ -18177,7 +18195,7 @@
Remove unnecessary and incorrect declarations.
 
* emacs-lisp/check-declare.el (check-declare-scan):
Handle byte-compile-initial-macro-environment in bytecomp.el
Handle byte-compile-initial-macro-environment in bytecomp.el.
 
2011-05-05 Stefan Monnier <monnier@iro.umontreal.ca>
 
......
2012-10-08 David Engster <deng@randomsample.de>>
2012-10-14 David Engster <deng@randomsample.de>
* semantic.el (semantic-error-if-unparsed): New function. Raise
error if buffer was not parsed by Semantic (bug #12045).
(navigate-menu, edit-menu, cedet-menu-map): Enable Semantic items
only if buffer was parsed. Also, replace ':active' with ':enable'
where necessary.
* semantic/wisent/python.el
(semantic-python-get-system-include-path): Use
`python-shell-internal-send-string' if available to query Python
for system paths.
* semantic/senator.el (senator-next-tag, senator-previous-tag)
(senator-go-to-up-reference): Use `semantic-error-if-unparsed'.
* semantic/complete.el (semantic-complete-jump-local)
(semantic-complete-jump, semantic-complete-jump-local-members)
(semantic-complete-self-insert): Use `semantic-error-if-unparsed'.
(semantic-complete-inline-project): Fix autoload cookie.
* semantic/analyze/complete.el
(semantic-analyze-possible-completions): Check if buffer was
parsed. Only raise an error if function was called interactively,
otherwise silently return nil.
* cedet.el (cedet-menu-map): Fix copy&paste typo in menu creation.
2012-10-08 David Engster <deng@randomsample.de>
* semantic/bovine/el.el: Add `semantic-default-elisp-setup' to
`emacs-lisp-mode-hook'. This was accidentally removed during the
......
......@@ -59,7 +59,7 @@
(define-key map [navigate-menu] 'undefined)
(define-key map [semantic-options-separator] 'undefined)
(define-key map [global-semantic-highlight-func-mode] 'undefined)
(define-key map [global-semantic-highlight-func-mode] 'undefined)
(define-key map [global-semantic-stickyfunc-mode] 'undefined)
(define-key map [global-semantic-decoration-mode] 'undefined)
(define-key map [global-semantic-idle-completions-mode] 'undefined)
(define-key map [global-semantic-idle-summary-mode] 'undefined)
......
......@@ -319,6 +319,11 @@ a parse of the buffer.")
"Return non-nil if the current buffer was set up for parsing."
semantic-new-buffer-fcn-was-run)
(defsubst semantic-error-if-unparsed ()
"Raise an error if current buffer was not parsed by Semantic."
(unless semantic-new-buffer-fcn-was-run
(error "Buffer was not parsed by Semantic.")))
(defsubst semantic--umatched-syntax-needs-refresh-p ()
"Return non-nil if the unmatched syntax cache needs a refresh.
That is, if it is dirty or if the current parse tree isn't up to date."
......@@ -907,75 +912,91 @@ Throw away all the old tags, and recreate the tag database."
;; Edit Tags submenu:
(define-key edit-menu [semantic-analyze-possible-completions]
'(menu-item "List Completions" semantic-analyze-possible-completions
:enable (semantic-active-p)
:help "Display a list of completions for the tag at point"))
(define-key edit-menu [semantic-complete-analyze-inline]
'(menu-item "Complete Tag Inline" semantic-complete-analyze-inline
:enable (semantic-active-p)
:help "Display inline completion for the tag at point"))
(define-key edit-menu [semantic-completion-separator]
'("--"))
(define-key edit-menu [senator-transpose-tags-down]
'(menu-item "Transpose Tags Down" senator-transpose-tags-down
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Transpose the current tag and the next tag"))
(define-key edit-menu [senator-transpose-tags-up]
'(menu-item "Transpose Tags Up" senator-transpose-tags-up
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Transpose the current tag and the previous tag"))
(define-key edit-menu [semantic-edit-separator]
'("--"))
(define-key edit-menu [senator-yank-tag]
'(menu-item "Yank Tag" senator-yank-tag
:active (not (ring-empty-p senator-tag-ring))
:enable (not (ring-empty-p senator-tag-ring))
:help "Yank the head of the tag ring into the buffer"))
(define-key edit-menu [senator-copy-tag-to-register]
'(menu-item "Copy Tag To Register" senator-copy-tag-to-register
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Yank the head of the tag ring into the buffer"))
(define-key edit-menu [senator-copy-tag]
'(menu-item "Copy Tag" senator-copy-tag
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Copy the current tag to the tag ring"))
(define-key edit-menu [senator-kill-tag]
'(menu-item "Kill Tag" senator-kill-tag
:active (semantic-current-tag)
:enable (and (semantic-active-p)
(semantic-current-tag))
:help "Kill the current tag, and copy it to the tag ring"))
;; Navigate Tags submenu:
(define-key navigate-menu [senator-narrow-to-defun]
'(menu-item "Narrow to Tag" senator-nar