merge trunk
This commit is contained in:
commit
596846525b
42 changed files with 468 additions and 248 deletions
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,9 @@
|
|||
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>
|
||||
|
|
20
Makefile.in
20
Makefile.in
|
@ -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)
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
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
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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.
|
||||
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
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}.
|
||||
(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.
|
||||
|
||||
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
|
||||
@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
|
||||
|
|
40
etc/NEWS
40
etc/NEWS
|
@ -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
|
||||
|
||||
|
|
|
@ -1,5 +1,23 @@
|
|||
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>
|
||||
|
||||
|
|
|
@ -1,4 +1,32 @@
|
|||
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-narrow-to-defun
|
||||
:active (semantic-current-tag)
|
||||
:enable (and (semantic-active-p)
|
||||
(semantic-current-tag))
|
||||
:help "Narrow the buffer to the bounds of the current tag"))
|
||||
(define-key navigate-menu [semantic-narrow-to-defun-separator]
|
||||
'("--"))
|
||||
(define-key navigate-menu [semantic-symref-symbol]
|
||||
'(menu-item "Find Tag References..." semantic-symref-symbol
|
||||
:enable (semantic-active-p)
|
||||
:help "Read a tag and list the references to it"))
|
||||
(define-key navigate-menu [semantic-complete-jump]
|
||||
'(menu-item "Find Tag Globally..." semantic-complete-jump
|
||||
:enable (semantic-active-p)
|
||||
:help "Read a tag name and find it in the current project"))
|
||||
(define-key navigate-menu [semantic-complete-jump-local-members]
|
||||
'(menu-item "Find Local Members ..." semantic-complete-jump-local-members
|
||||
:enable (semantic-active-p)
|
||||
:help "Read a tag name and find a local member with that name"))
|
||||
(define-key navigate-menu [semantic-complete-jump-local]
|
||||
'(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
|
||||
:enable (semantic-active-p)
|
||||
:help "Read a tag name and find it in this buffer"))
|
||||
(define-key navigate-menu [semantic-navigation-separator]
|
||||
'("--"))
|
||||
(define-key navigate-menu [senator-go-to-up-reference]
|
||||
'(menu-item "Parent Tag" senator-go-to-up-reference
|
||||
:enable (semantic-active-p)
|
||||
:help "Navigate up one reference by tag"))
|
||||
(define-key navigate-menu [senator-next-tag]
|
||||
'(menu-item "Next Tag" senator-next-tag
|
||||
:enable (semantic-active-p)
|
||||
:help "Go to the next tag"))
|
||||
(define-key navigate-menu [senator-previous-tag]
|
||||
'(menu-item "Previous Tag" senator-previous-tag
|
||||
:enable (semantic-active-p)
|
||||
:help "Go to the previous tag"))
|
||||
|
||||
;; Top level menu items:
|
||||
(define-key cedet-menu-map [semantic-force-refresh]
|
||||
'(menu-item "Reparse Buffer" semantic-force-refresh
|
||||
:help "Force a full reparse of the current buffer"
|
||||
:visible semantic-mode))
|
||||
:visible semantic-mode
|
||||
:enable (semantic-active-p)))
|
||||
(define-key cedet-menu-map [semantic-edit-menu]
|
||||
`(menu-item "Edit Tags" ,edit-menu
|
||||
:visible semantic-mode))
|
||||
|
|
|
@ -87,20 +87,25 @@ in a buffer."
|
|||
;; In theory, we don't need the below since the context will
|
||||
;; do it for us.
|
||||
;;(semantic-refresh-tags-safe)
|
||||
(with-syntax-table semantic-lex-syntax-table
|
||||
(let* ((context (if (semantic-analyze-context-child-p context)
|
||||
context
|
||||
(semantic-analyze-current-context context)))
|
||||
(ans (if (not context)
|
||||
(error "Nothing to complete")
|
||||
(:override))))
|
||||
;; If interactive, display them.
|
||||
(when (called-interactively-p 'any)
|
||||
(with-output-to-temp-buffer "*Possible Completions*"
|
||||
(semantic-analyze-princ-sequence ans "" (current-buffer)))
|
||||
(shrink-window-if-larger-than-buffer
|
||||
(get-buffer-window "*Possible Completions*")))
|
||||
ans)))
|
||||
(if (semantic-active-p)
|
||||
(with-syntax-table semantic-lex-syntax-table
|
||||
(let* ((context (if (semantic-analyze-context-child-p context)
|
||||
context
|
||||
(semantic-analyze-current-context context)))
|
||||
(ans (if (not context)
|
||||
(error "Nothing to complete")
|
||||
(:override))))
|
||||
;; If interactive, display them.
|
||||
(when (called-interactively-p 'any)
|
||||
(with-output-to-temp-buffer "*Possible Completions*"
|
||||
(semantic-analyze-princ-sequence ans "" (current-buffer)))
|
||||
(shrink-window-if-larger-than-buffer
|
||||
(get-buffer-window "*Possible Completions*")))
|
||||
ans))
|
||||
;; Buffer was not parsed by Semantic.
|
||||
;; Raise error if called interactively.
|
||||
(when (called-interactively-p 'any)
|
||||
(error "Buffer was not parsed by Semantic."))))
|
||||
|
||||
(defun semantic-analyze-possible-completions-default (context &optional flags)
|
||||
"Default method for producing smart completions.
|
||||
|
|
|
@ -2088,6 +2088,7 @@ completion works."
|
|||
(defun semantic-complete-jump-local ()
|
||||
"Jump to a local semantic symbol."
|
||||
(interactive)
|
||||
(semantic-error-if-unparsed)
|
||||
(let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: ")))
|
||||
(when (semantic-tag-p tag)
|
||||
(push-mark)
|
||||
|
@ -2101,6 +2102,7 @@ completion works."
|
|||
(defun semantic-complete-jump ()
|
||||
"Jump to a semantic symbol."
|
||||
(interactive)
|
||||
(semantic-error-if-unparsed)
|
||||
(let* ((tag (semantic-complete-read-tag-project "Jump to symbol: ")))
|
||||
(when (semantic-tag-p tag)
|
||||
(push-mark)
|
||||
|
@ -2115,6 +2117,7 @@ completion works."
|
|||
(defun semantic-complete-jump-local-members ()
|
||||
"Jump to a semantic symbol."
|
||||
(interactive)
|
||||
(semantic-error-if-unparsed)
|
||||
(let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: ")))
|
||||
(when (semantic-tag-p tag)
|
||||
(let ((start (condition-case nil (semantic-tag-start tag)
|
||||
|
@ -2216,7 +2219,7 @@ use `semantic-complete-analyze-inline' to complete."
|
|||
(error nil))
|
||||
))
|
||||
|
||||
;;;;###autoload
|
||||
;;;###autoload
|
||||
(defun semantic-complete-inline-project ()
|
||||
"Perform inline completion for any symbol in the current project.
|
||||
`semantic-analyze-possible-completions' is used to determine the
|
||||
|
|
|
@ -255,6 +255,7 @@ TEXT, BOUND, NOERROR, and COUNT arguments are interpreted."
|
|||
"Navigate to the next Semantic tag.
|
||||
Return the tag or nil if at end of buffer."
|
||||
(interactive)
|
||||
(semantic-error-if-unparsed)
|
||||
(let ((pos (point))
|
||||
(tag (semantic-current-tag))
|
||||
where)
|
||||
|
@ -294,6 +295,7 @@ Return the tag or nil if at end of buffer."
|
|||
"Navigate to the previous Semantic tag.
|
||||
Return the tag or nil if at beginning of buffer."
|
||||
(interactive)
|
||||
(semantic-error-if-unparsed)
|
||||
(let ((pos (point))
|
||||
(tag (semantic-current-tag))
|
||||
where)
|
||||
|
@ -519,6 +521,7 @@ If that parent which is only a reference in the function tag
|
|||
is found, we can jump to it.
|
||||
Some tags such as includes have other reference features."
|
||||
(interactive)
|
||||
(semantic-error-if-unparsed)
|
||||
(let ((result (semantic-up-reference (or tag (semantic-current-tag)))))
|
||||
(if (not result)
|
||||
(error "No up reference found")
|
||||
|
|
|
@ -48,24 +48,15 @@
|
|||
|
||||
(defun semantic-python-get-system-include-path ()
|
||||
"Evaluate some Python code that determines the system include path."
|
||||
(python-proc)
|
||||
(if python-buffer
|
||||
(with-current-buffer python-buffer
|
||||
(set (make-local-variable 'python-preoutput-result) nil)
|
||||
(python-send-string
|
||||
"import sys; print '_emacs_out ' + '\\0'.join(sys.path)")
|
||||
(accept-process-output (python-proc) 2)
|
||||
(if python-preoutput-result
|
||||
(split-string python-preoutput-result "[\0\n]" t)
|
||||
;; Try a second, Python3k compatible shot
|
||||
(python-send-string
|
||||
"import sys; print('_emacs_out ' + '\\0'.join(sys.path))")
|
||||
(accept-process-output (python-proc) 2)
|
||||
(if python-preoutput-result
|
||||
(split-string python-preoutput-result "[\0\n]" t)
|
||||
(message "Timeout while querying Python for system include path.")
|
||||
nil)))
|
||||
(message "Python seems to be unavailable on this system.")))
|
||||
(delq nil
|
||||
(mapcar
|
||||
(lambda (dir)
|
||||
(when (file-directory-p dir)
|
||||
dir))
|
||||
(split-string
|
||||
(python-shell-internal-send-string
|
||||
"import sys;print ('\\n'.join(sys.path))")
|
||||
"\n" t))))
|
||||
|
||||
(defcustom-mode-local-semantic-dependency-system-include-path
|
||||
python-mode semantic-python-dependency-system-include-path
|
||||
|
|
|
@ -232,7 +232,8 @@ The return value is undefined.
|
|||
;; fns)))
|
||||
|
||||
(defmacro defsubst (name arglist &rest body)
|
||||
"Define an inline function. The syntax is just like that of `defun'."
|
||||
"Define an inline function. The syntax is just like that of `defun'.
|
||||
\(fn NAME ARGLIST &optional DOCSTRING DECL &rest BODY)"
|
||||
(declare (debug defun) (doc-string 3))
|
||||
(or (memq (get name 'byte-optimizer)
|
||||
'(nil byte-compile-inline-expand))
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2012-10-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* erc.el (erc-log): Make it into a defsubst.
|
||||
(erc-with-server-buffer, define-erc-module, erc-with-buffer)
|
||||
(erc-with-all-buffers-of-server): Use `declare'.
|
||||
* erc-backend.el (erc-log): Adjust autoload accordingly.
|
||||
|
||||
2012-10-07 Deniz Dogan <deniz@dogan.se>
|
||||
|
||||
* erc-log.el (erc-generate-log-file-name-function):
|
||||
|
@ -42,8 +49,8 @@
|
|||
|
||||
2012-08-21 Julien Danjou <julien@danjou.info>
|
||||
|
||||
* erc-match.el (erc-match-message): Use
|
||||
`erc-match-exclude-server-buffer' not
|
||||
* erc-match.el (erc-match-message):
|
||||
Use `erc-match-exclude-server-buffer' not
|
||||
`erc-track-exclude-server-buffer'.
|
||||
|
||||
2012-08-20 Josh Feinstein <jlf@foxtail.org>
|
||||
|
@ -56,8 +63,8 @@
|
|||
(erc-lurker-threshold-time): New variables.
|
||||
(erc-lurker-maybe-trim, erc-lurker-initialize, erc-lurker-cleanup)
|
||||
(erc-hide-current-message-p, erc-canonicalize-server-name)
|
||||
(erc-lurker-update-status, erc-lurker-p): New functions. Together
|
||||
they maintain state about which users have spoken in the last
|
||||
(erc-lurker-update-status, erc-lurker-p): New functions.
|
||||
Together they maintain state about which users have spoken in the last
|
||||
erc-lurker-threshold-time, with all other users being considered
|
||||
lurkers whose messages of types in erc-lurker-hide-list will not
|
||||
be displayed by erc-display-message.
|
||||
|
@ -192,7 +199,7 @@
|
|||
|
||||
* erc.el (erc-ssl): Made into a synonym for erc-tls, which
|
||||
provides a superset of the same functionality.
|
||||
(erc-open-ssl-stream): Removed.
|
||||
(erc-open-ssl-stream): Remove.
|
||||
(erc-open-tls-stream): Use `open-network-stream' instead of
|
||||
`open-tls-stream' directly to be able to use the built-in TLS
|
||||
support.
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
(require 'erc-compat)
|
||||
(eval-when-compile (require 'cl))
|
||||
(autoload 'erc-with-buffer "erc" nil nil 'macro)
|
||||
(autoload 'erc-log "erc" nil nil 'macro)
|
||||
(autoload 'erc-log "erc")
|
||||
|
||||
;;;; Variables and options
|
||||
|
||||
|
|
|
@ -362,13 +362,12 @@ nicknames with erc-server-user struct instances.")
|
|||
(defmacro erc-with-server-buffer (&rest body)
|
||||
"Execute BODY in the current ERC server buffer.
|
||||
If no server buffer exists, return nil."
|
||||
(declare (indent 0) (debug (body)))
|
||||
(let ((buffer (make-symbol "buffer")))
|
||||
`(let ((,buffer (erc-server-buffer)))
|
||||
(when (buffer-live-p ,buffer)
|
||||
(with-current-buffer ,buffer
|
||||
,@body)))))
|
||||
(put 'erc-with-server-buffer 'lisp-indent-function 0)
|
||||
(put 'erc-with-server-buffer 'edebug-form-spec '(body))
|
||||
|
||||
(defstruct (erc-server-user (:type vector) :named)
|
||||
;; User data
|
||||
|
@ -1236,6 +1235,7 @@ Example:
|
|||
'erc-replace-insert))
|
||||
((remove-hook 'erc-insert-modify-hook
|
||||
'erc-replace-insert)))"
|
||||
(declare (doc-string 3))
|
||||
(let* ((sn (symbol-name name))
|
||||
(mode (intern (format "erc-%s-mode" (downcase sn))))
|
||||
(group (intern (format "erc-%s" (downcase sn))))
|
||||
|
@ -1281,8 +1281,6 @@ if ARG is omitted or nil.
|
|||
(put ',enable 'definition-name ',name)
|
||||
(put ',disable 'definition-name ',name))))
|
||||
|
||||
(put 'define-erc-module 'doc-string-elt 3)
|
||||
|
||||
(defun erc-once-with-server-event (event &rest forms)
|
||||
"Execute FORMS the next time EVENT occurs in the `current-buffer'.
|
||||
|
||||
|
@ -1334,10 +1332,10 @@ connection over which the data was received that triggered EVENT."
|
|||
(add-hook hook fun nil nil)
|
||||
fun))
|
||||
|
||||
(defmacro erc-log (string)
|
||||
(defsubst erc-log (string)
|
||||
"Logs STRING if logging is on (see `erc-log-p')."
|
||||
`(when erc-log-p
|
||||
(erc-log-aux ,string)))
|
||||
(when erc-log-p
|
||||
(erc-log-aux string)))
|
||||
|
||||
(defun erc-server-buffer ()
|
||||
"Return the server buffer for the current buffer's process.
|
||||
|
@ -1621,6 +1619,7 @@ See `erc-get-buffer' for details.
|
|||
See also `with-current-buffer'.
|
||||
|
||||
\(fn (TARGET [PROCESS]) BODY...)"
|
||||
(declare (indent 1) (debug ((form &optional form) body)))
|
||||
(let ((buf (make-symbol "buf"))
|
||||
(proc (make-symbol "proc"))
|
||||
(target (make-symbol "target"))
|
||||
|
@ -1637,8 +1636,6 @@ See also `with-current-buffer'.
|
|||
(when (buffer-live-p ,buf)
|
||||
(with-current-buffer ,buf
|
||||
,@body)))))
|
||||
(put 'erc-with-buffer 'lisp-indent-function 1)
|
||||
(put 'erc-with-buffer 'edebug-form-spec '((form &optional form) body))
|
||||
|
||||
(defun erc-get-buffer (target &optional proc)
|
||||
"Return the buffer matching TARGET in the process PROC.
|
||||
|
@ -1688,6 +1685,7 @@ needs to match PROC."
|
|||
FORMS will be evaluated in all buffers having the process PROCESS and
|
||||
where PRED matches or in all buffers of the server process if PRED is
|
||||
nil."
|
||||
(declare (indent 1) (debug (form form body)))
|
||||
;; Make the evaluation have the correct order
|
||||
(let ((pre (make-symbol "pre"))
|
||||
(pro (make-symbol "pro")))
|
||||
|
@ -1701,8 +1699,6 @@ nil."
|
|||
;; Silence the byte-compiler by binding the result of mapcar to
|
||||
;; a variable.
|
||||
res)))
|
||||
(put 'erc-with-all-buffers-of-server 'lisp-indent-function 1)
|
||||
(put 'erc-with-all-buffers-of-server 'edebug-form-spec '(form form body))
|
||||
|
||||
;; (iswitchb-mode) will autoload iswitchb.el
|
||||
(defvar iswitchb-temp-buflist)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2012-10-17 Kazuhiro Ito <kzhr@d1.dion.ne.jp> (tiny change)
|
||||
|
||||
* starttls.el (starttls-extra-arguments): Doc fix.
|
||||
|
||||
2012-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* shr.el (shr-insert): \r is also not inserted, so don't try to delete
|
||||
|
|
|
@ -149,7 +149,7 @@ These apply when the `starttls' command is used, i.e. when
|
|||
:group 'starttls)
|
||||
|
||||
(defcustom starttls-extra-arguments nil
|
||||
"Extra arguments to `starttls-program'.
|
||||
"Extra arguments to `starttls-gnutls-program'.
|
||||
These apply when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil.
|
||||
|
||||
For example, non-TLS compliant servers may require
|
||||
|
|
|
@ -1603,9 +1603,13 @@ Comma to replace but not move point immediately,
|
|||
C-r to enter recursive edit (\\[exit-recursive-edit] to get out again),
|
||||
C-w to delete match and recursive edit,
|
||||
C-l to clear the screen, redisplay, and offer same replacement again,
|
||||
! to replace all remaining matches with no more questions,
|
||||
! to replace all remaining matches in this buffer with no more questions,
|
||||
^ to move point back to previous match,
|
||||
E to edit the replacement string"
|
||||
E to edit the replacement string.
|
||||
In multi-buffer replacements type `Y' to replace all remaining
|
||||
matches in all remaining buffers with no more questions,
|
||||
`N' to skip to the next buffer without replacing remaining matches
|
||||
in the current buffer."
|
||||
"Help message while in `query-replace'.")
|
||||
|
||||
(defvar query-replace-map
|
||||
|
|
|
@ -180,7 +180,7 @@ program `dired-chmod-program', which must exist."
|
|||
(defvar wdired-col-perm) ;; Column where the permission bits start
|
||||
(defvar wdired-old-content)
|
||||
(defvar wdired-old-point)
|
||||
|
||||
(defvar wdired-old-marks)
|
||||
|
||||
(defun wdired-mode ()
|
||||
"Writable Dired (WDired) mode.
|
||||
|
@ -221,6 +221,8 @@ See `wdired-mode'."
|
|||
(error "Not a Dired buffer"))
|
||||
(set (make-local-variable 'wdired-old-content)
|
||||
(buffer-substring (point-min) (point-max)))
|
||||
(set (make-local-variable 'wdired-old-marks)
|
||||
(dired-remember-marks (point-min) (point-max)))
|
||||
(set (make-local-variable 'wdired-old-point) (point))
|
||||
(set (make-local-variable 'query-replace-skip-read-only) t)
|
||||
(set (make-local-variable 'isearch-filter-predicate)
|
||||
|
@ -455,7 +457,8 @@ non-nil means return old filename."
|
|||
(push (cons tmp file-new) residue))))
|
||||
(t
|
||||
(setq progress t)
|
||||
(let ((file-ori (car rename)))
|
||||
(let* ((file-ori (car rename))
|
||||
(old-mark (cdr (assoc file-ori wdired-old-marks))))
|
||||
(if wdired-use-interactive-rename
|
||||
(wdired-search-and-rename file-ori file-new)
|
||||
;; If dired-rename-file autoloads dired-aux while
|
||||
|
@ -466,12 +469,17 @@ non-nil means return old filename."
|
|||
(condition-case err
|
||||
(let ((dired-backup-overwrite nil))
|
||||
(dired-rename-file file-ori file-new
|
||||
overwrite))
|
||||
overwrite)
|
||||
(dired-remove-file file-ori)
|
||||
(dired-add-file file-new (if (integerp dired-keep-marker-rename)
|
||||
dired-keep-marker-rename
|
||||
old-mark)))
|
||||
(error
|
||||
(setq errors (1+ errors))
|
||||
(dired-log (concat "Rename `" file-ori "' to `"
|
||||
file-new "' failed:\n%s\n")
|
||||
err)))))))))
|
||||
err)
|
||||
(dired-add-entry file-ori old-mark)))))))))
|
||||
errors))
|
||||
|
||||
|
||||
|
|
|
@ -5361,8 +5361,16 @@ BUFFER-OR-NAME must be a buffer or the name of an existing
|
|||
buffer. Return the window chosen for displaying BUFFER-OR-NAME,
|
||||
or nil if no such window is found.
|
||||
|
||||
Optional argument ACTION should have the form (FUNCTION . ALIST).
|
||||
FUNCTION is either a function or a list of functions.
|
||||
Optional argument ACTION, if non-nil, should specify a display
|
||||
action. Its form is described below.
|
||||
|
||||
Optional argument FRAME, if non-nil, acts like an additional
|
||||
ALIST entry (reusable-frames . FRAME) to the action list of ACTION,
|
||||
specifying the frame(s) to search for a window that is already
|
||||
displaying the buffer. See `display-buffer-reuse-window'
|
||||
|
||||
If ACTION is non-nil, it should have the form (FUNCTION . ALIST),
|
||||
where FUNCTION is either a function or a list of functions, and
|
||||
ALIST is an arbitrary association list (alist).
|
||||
|
||||
Each such FUNCTION should accept two arguments: the buffer to
|
||||
|
@ -5379,6 +5387,9 @@ function in the combined function list in turn, passing the
|
|||
buffer as the first argument and the combined alist as the second
|
||||
argument, until one of the functions returns non-nil.
|
||||
|
||||
If ACTION is nil, the function list and the alist are built using
|
||||
only the other variables mentioned above.
|
||||
|
||||
Available action functions include:
|
||||
`display-buffer-same-window'
|
||||
`display-buffer-reuse-window'
|
||||
|
@ -5407,12 +5418,7 @@ The ACTION argument to `display-buffer' can also have a non-nil
|
|||
and non-list value. This means to display the buffer in a window
|
||||
other than the selected one, even if it is already displayed in
|
||||
the selected window. If called interactively with a prefix
|
||||
argument, ACTION is t.
|
||||
|
||||
Optional argument FRAME, if non-nil, acts like an additional
|
||||
ALIST entry (reusable-frames . FRAME), specifying the frame(s) to
|
||||
search for a window that is already displaying the buffer. See
|
||||
`display-buffer-reuse-window'."
|
||||
argument, ACTION is t."
|
||||
(interactive (list (read-buffer "Display buffer: " (other-buffer))
|
||||
(if current-prefix-arg t)))
|
||||
(let ((buffer (if (bufferp buffer-or-name)
|
||||
|
|
10
nt/ChangeLog
10
nt/ChangeLog
|
@ -32,13 +32,13 @@
|
|||
(offset_to_section, relocate_offset, OFFSET_TO_RVA)
|
||||
(RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA)
|
||||
(OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN)
|
||||
(copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main): Use
|
||||
DWORD_PTR instead of DWORD for compatibility with x64.
|
||||
(copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main):
|
||||
Use DWORD_PTR instead of DWORD for compatibility with x64.
|
||||
|
||||
* nmake.defs: Support AMD64.
|
||||
(EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros.
|
||||
|
||||
* gmake.defs: (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST):
|
||||
* gmake.defs (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST):
|
||||
New macros.
|
||||
|
||||
* addsection.c (pfnCheckSumMappedFile, rva_to_section)
|
||||
|
@ -478,7 +478,7 @@
|
|||
|
||||
2012-02-05 Christoph Scholtes <cschol2112@googlemail.com>
|
||||
|
||||
* README.W32: Clarification for inclusion in source tarball. (Bug#9750)
|
||||
* README.W32: Clarification for inclusion in source tarball (bug#9750).
|
||||
|
||||
* gmake.defs (PRAGMA_SYSTEM_HEADER): Add for GCC.
|
||||
|
||||
|
@ -487,7 +487,7 @@
|
|||
* makefile.w32-in (maybe-copy-distfiles)
|
||||
(maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH)
|
||||
(create-tmp-dist-dir): Add to make --distfiles optional.
|
||||
(dist): Use create-tmp-dist-dir and maybe-copy-distfiles. (Bug#10261)
|
||||
(dist): Use create-tmp-dist-dir and maybe-copy-distfiles (bug#10261).
|
||||
|
||||
2012-02-04 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
|
|
@ -3,6 +3,58 @@
|
|||
* xdisp.c (reseat_1): Make the information stored in it->cmp_it
|
||||
invalidate.
|
||||
|
||||
2012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* buffer.c (Fkill_buffer): When unchaining the marker,
|
||||
reset its buffer pointer to NULL (Bug#12652).
|
||||
|
||||
2012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Do not verify indirection counters of killed buffers (Bug#12579).
|
||||
* buffer.h (BUFFER_CHECK_INDIRECTION): New macro.
|
||||
* buffer.c (compact_buffer, set_buffer_internal_1): Use it.
|
||||
|
||||
2012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* alloc.c (Fmake_byte_code): Fix typo in comment.
|
||||
* print.c (print_interval): Define as static to match prototype.
|
||||
* indent.c (disptab_matches_widthtab, recompute_width_table):
|
||||
Convert to eassert.
|
||||
|
||||
2012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* editfns.c (get_system_name): Remove.
|
||||
* lisp.h (get_system_name): Remove prototype.
|
||||
* xrdb.c (getenv, getpwuid, getpwnam): Remove prototypes.
|
||||
(get_environ_db): Use Vsystem_name. Avoid call to strlen.
|
||||
|
||||
2012-10-15 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
* dbusbind.c: Add comment explaining reason for previous change.
|
||||
|
||||
2012-10-15 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* window.c (Fwindow_end): Rewrite check whether cached position
|
||||
can be used (Bug#12600).
|
||||
(resize_frame_windows, grow_mini_window, shrink_mini_window):
|
||||
Set windows_or_buffers_changed.
|
||||
|
||||
2012-10-15 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
* dbusbind.c: Fix cygw32 build break when compiling with dbus
|
||||
enabled by undefining the symbol "interface", which the platform
|
||||
headers define to something incompatible.
|
||||
|
||||
2012-10-14 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
* image.c (init_tiff_functions, init_imagemagick_functions)
|
||||
(init_svg_functions): Fix cygw32 build break by using these
|
||||
functions only when WINDOWSNT _and_ HAVE_NTGUI.
|
||||
|
||||
2012-10-14 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* nsterm.m (ns_select): Count fd:s in writefs also (Bug#12422).
|
||||
|
||||
2012-10-13 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* gtkutil.c (xg_set_widget_bg): Divide by 65535 (Bug#12612).
|
||||
|
@ -58,8 +110,7 @@
|
|||
a file exists. This avoids expensive system calls on MS-Windows.
|
||||
(Bug#12587)
|
||||
|
||||
* w32.c (init_environment): Call 'check_existing' instead of
|
||||
'stat'.
|
||||
* w32.c (init_environment): Call 'check_existing' instead of 'stat'.
|
||||
|
||||
* lread.c (openp) [WINDOWSNT]: Call 'access' instead of 'stat' to
|
||||
determine whether a file exists and is not a directory.
|
||||
|
@ -199,7 +250,7 @@
|
|||
* nsfont.m (Vfonts_in_cache): Remove, not needed as font.c handles
|
||||
caching.
|
||||
(nsfont_open): Remove setting of Vfonts_in_cache.
|
||||
(syms_of_nsfont): Remove initialization of Vfonts_in_cache
|
||||
(syms_of_nsfont): Remove initialization of Vfonts_in_cache.
|
||||
|
||||
2012-10-09 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
@ -266,7 +317,7 @@
|
|||
* w32select.h (HAVE_W32SELECT): Remove.
|
||||
|
||||
* w32select.c, w32proc.c, w32menu.c, w32console.c, w32.c: Include
|
||||
w32common.h instead of w32heap.h
|
||||
w32common.h instead of w32heap.h.
|
||||
|
||||
* w32heap.h (ROUND_UP, ROUND_DOWN, get_page_size)
|
||||
(get_allocation_unit, get_processor_type, get_w32_major_version)
|
||||
|
@ -277,8 +328,8 @@
|
|||
|
||||
* w32heap.c: Include w32common.h.
|
||||
(sysinfo_cache, syspage_mask, osinfo_cache, w32_major_version)
|
||||
(w32_minor_version, w32_build_number, w32_subtype): Remove
|
||||
duplicate definitions.
|
||||
(w32_minor_version, w32_build_number, w32_subtype):
|
||||
Remove duplicate definitions.
|
||||
|
||||
* w32fns.c: Include w32common.h; include w32heap.h only in
|
||||
WINDOWSNT.
|
||||
|
@ -389,7 +440,7 @@
|
|||
Cygwin builds. Remove w32select declarations.
|
||||
|
||||
* w32console.c (w32_sys_ring_bell, Fset_message_beep): Move to
|
||||
w32fns.c. w32console.c is WINDOWSNT-only.
|
||||
w32fns.c. w32console.c is WINDOWSNT-only.
|
||||
|
||||
* w32fns.c: Include cygw32.h or w32.h depending on CYGWIN; more
|
||||
NTGUI_UNICODE tweaks. (See above.) Change _snprintf to the more
|
||||
|
@ -490,12 +541,12 @@
|
|||
|
||||
* nsterm.m (ns_in_resize): Remove (Bug#12479).
|
||||
(ns_resize_handle_rect, mouseDown, mouseUp, mouseDragged): Remove.
|
||||
(ns_clear_frame, sendEvent, windowDidResize, drawRect:): Remove
|
||||
ns_in_resize check.
|
||||
(ns_clear_frame, sendEvent, windowDidResize, drawRect:):
|
||||
Remove ns_in_resize check.
|
||||
(ns_clear_frame_area): Remove resize handle code.
|
||||
|
||||
* nsfns.m (ns_in_resize): Remove.
|
||||
(x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove
|
||||
(x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove
|
||||
ns_in_resize check.
|
||||
|
||||
2012-10-07 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
@ -524,7 +575,7 @@
|
|||
(initFrameFromEmacs:): tbar_height renamed tibar_height.
|
||||
(windowDidEnterFullScreen:): Toggle toolbar for fullscreen to fix
|
||||
error in drawing background.
|
||||
(toggleFullScreen:): Remove comment. Rearrange calls.
|
||||
(toggleFullScreen:): Remove comment. Rearrange calls.
|
||||
Set toolbar values to zero, save old height in tobar_height.
|
||||
Restore tool bar height when leaving fullscreen.
|
||||
(canBecomeMainWindow): New function.
|
||||
|
@ -538,8 +589,8 @@
|
|||
* w32proc.c (stop_timer_thread): Fix declaration of 'err'.
|
||||
|
||||
* w32.c (utime): Open the file with FILE_FLAG_BACKUP_SEMANTICS, so
|
||||
that time stamps of directories could also be changed. Don't
|
||||
request the too broad GENERIC_WRITE, only the more restrictive
|
||||
that time stamps of directories could also be changed.
|
||||
Don't request the too broad GENERIC_WRITE, only the more restrictive
|
||||
FILE_WRITE_ATTRIBUTES access rights.
|
||||
|
||||
* fileio.c (Fset_file_times): Special-case ignoring errors for
|
||||
|
@ -947,7 +998,7 @@
|
|||
Call setCollectionBehavior if NEW_STYLE_FS. Initialize bwidth and
|
||||
tbar_height.
|
||||
(windowWillUseStandardFrame:defaultFrame:): Update frame parameter
|
||||
fullscreen. Set maximized_width/height. Act on next_maximized.
|
||||
fullscreen. Set maximized_width/height. Act on next_maximized.
|
||||
|
||||
* nsterm.h (MAC_OS_X_VERSION_10_7, MAC_OS_X_VERSION_10_8): New.
|
||||
(EmacsView): Add variables for fullscreen.
|
||||
|
@ -1603,7 +1654,7 @@
|
|||
2012-09-19 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* w32inevt.c (w32_console_read_socket): Return -1 on failure, not 0.
|
||||
Ignore 'expected'. See Eli Zaretskii in
|
||||
Ignore 'expected'. See Eli Zaretskii in
|
||||
<http://bugs.gnu.org/12471#8> (last line).
|
||||
|
||||
* frame.c (read_integer): Remove. All uses replaced by strtol/strtoul.
|
||||
|
@ -1670,7 +1721,7 @@
|
|||
(bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc)
|
||||
(emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc):
|
||||
[!SYSTEM_MALLOC && !SYNC_INPUT]:
|
||||
Remove. All uses removed.
|
||||
Remove. All uses removed.
|
||||
(MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different
|
||||
implementation, one that depends on whether the new macro
|
||||
XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT
|
||||
|
@ -1960,7 +2011,7 @@
|
|||
* alloc.c (discard_killed_buffers): New function.
|
||||
(mark_object): Use it for deleted windows and frames.
|
||||
(mark_object): If symbol's value is set up for a killed buffer
|
||||
or deleted frame, restore it's global binding.
|
||||
or deleted frame, restore its global binding.
|
||||
* data.c (swap_in_global_binding): Add GC notice.
|
||||
(swap_in_symval_forwarding): Use convenient set_blv_where.
|
||||
* window.c (wset_next_buffers, wset_prev_buffers): Move ...
|
||||
|
@ -4267,7 +4318,7 @@
|
|||
|
||||
* nsterm.m (ns_set_vertical_scroll_bar, ns_redeem_scroll_bar)
|
||||
(EmacsWindow-accessibilityAttributeValue, EmacsScroller-initFrame:)
|
||||
(EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114)
|
||||
(EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114)
|
||||
* nsfns.m (ns_set_name_as_filename): Likewise.
|
||||
* nsmenu.m (ns_update_menubar): Likewise.
|
||||
* nsselect.m (symbol_to_nsstring): Adjust to use SVAR.
|
||||
|
@ -6363,7 +6414,7 @@
|
|||
Fix block vector allocation code to allow VECTOR_BLOCK_SIZE
|
||||
values which aren't power of 2.
|
||||
* alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro.
|
||||
Verify it's value and the value of VECTOR_BLOCK_SIZE. Adjust users
|
||||
Verify its value and the value of VECTOR_BLOCK_SIZE. Adjust users
|
||||
accordingly.
|
||||
|
||||
2012-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
@ -7532,7 +7583,7 @@
|
|||
bitfields where appropriate, remove unused fields.
|
||||
* window.h (struct window): Remove unused 'last_mark_x' and
|
||||
'last_mark_y' fields. Rename 'mini_p' field to 'mini',
|
||||
change it's type from Lisp_Object to bitfield.
|
||||
change its type from Lisp_Object to bitfield.
|
||||
Change type of 'force_start', 'optional_new_start',
|
||||
'last_had_star', 'update_mode_line' and 'start_at_line_beg'
|
||||
fields from Lisp_Object to bitfield. Adjust users accordingly.
|
||||
|
|
|
@ -3100,7 +3100,7 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
|
|||
ptrdiff_t i;
|
||||
register struct Lisp_Vector *p;
|
||||
|
||||
/* We used to purecopy everything here, if purify-flga was set. This worked
|
||||
/* We used to purecopy everything here, if purify-flag was set. This worked
|
||||
OK for Emacs-23, but with Emacs-24's lexical binding code, it can be
|
||||
dangerous, since make-byte-code is used during execution to build
|
||||
closures, so any closure built during the preload phase would end up
|
||||
|
|
38
src/buffer.c
38
src/buffer.c
|
@ -1663,18 +1663,11 @@ No argument or nil as argument means do this for the current buffer. */)
|
|||
void
|
||||
compact_buffer (struct buffer *buffer)
|
||||
{
|
||||
/* Verify indirection counters. */
|
||||
if (buffer->base_buffer)
|
||||
{
|
||||
eassert (buffer->indirections == -1);
|
||||
eassert (buffer->base_buffer->indirections > 0);
|
||||
}
|
||||
else
|
||||
eassert (buffer->indirections >= 0);
|
||||
BUFFER_CHECK_INDIRECTION (buffer);
|
||||
|
||||
/* Skip dead buffers, indirect buffers and buffers
|
||||
which aren't changed since last compaction. */
|
||||
if (!NILP (buffer->INTERNAL_FIELD (name))
|
||||
if (BUFFER_LIVE_P (buffer)
|
||||
&& (buffer->base_buffer == NULL)
|
||||
&& (buffer->text->compact != buffer->text->modiff))
|
||||
{
|
||||
|
@ -1888,19 +1881,20 @@ cleaning up all windows currently displaying the buffer to be killed. */)
|
|||
|
||||
if (b->base_buffer)
|
||||
{
|
||||
{ /* Unchain all markers that belong to this indirect buffer.
|
||||
Don't unchain the markers that belong to the base buffer
|
||||
or its other indirect buffers. */
|
||||
struct Lisp_Marker **mp;
|
||||
for (mp = &BUF_MARKERS (b); *mp; )
|
||||
{
|
||||
struct Lisp_Marker *m = *mp;
|
||||
if (m->buffer == b)
|
||||
/* Unchain all markers that belong to this indirect buffer.
|
||||
Don't unchain the markers that belong to the base buffer
|
||||
or its other indirect buffers. */
|
||||
struct Lisp_Marker **mp = &BUF_MARKERS (b);
|
||||
while ((m = *mp))
|
||||
{
|
||||
if (m->buffer == b)
|
||||
{
|
||||
m->buffer = NULL;
|
||||
*mp = m->next;
|
||||
else
|
||||
mp = &m->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
mp = &m->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2114,6 +2108,8 @@ set_buffer_internal_1 (register struct buffer *b)
|
|||
if (current_buffer == b)
|
||||
return;
|
||||
|
||||
BUFFER_CHECK_INDIRECTION (b);
|
||||
|
||||
old_buf = current_buffer;
|
||||
current_buffer = b;
|
||||
last_known_column_point = -1; /* invalidate indentation cache */
|
||||
|
|
16
src/buffer.h
16
src/buffer.h
|
@ -963,6 +963,22 @@ bset_width_table (struct buffer *b, Lisp_Object val)
|
|||
|
||||
#define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name)))
|
||||
|
||||
/* Verify indirection counters. */
|
||||
|
||||
#define BUFFER_CHECK_INDIRECTION(b) \
|
||||
do { \
|
||||
if (BUFFER_LIVE_P (b)) \
|
||||
{ \
|
||||
if (b->base_buffer) \
|
||||
{ \
|
||||
eassert (b->indirections == -1); \
|
||||
eassert (b->base_buffer->indirections > 0); \
|
||||
} \
|
||||
else \
|
||||
eassert (b->indirections >= 0); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Chain of all buffers, including killed ones. */
|
||||
|
||||
extern struct buffer *all_buffers;
|
||||
|
|
|
@ -32,6 +32,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define DBUS_NUM_MESSAGE_TYPES 5
|
||||
#endif
|
||||
|
||||
|
||||
/* Some platforms define the symbol "interface", but we want to use it
|
||||
* as a variable name below. */
|
||||
|
||||
#ifdef interface
|
||||
#undef interface
|
||||
#endif
|
||||
|
||||
|
||||
/* Subroutines. */
|
||||
static Lisp_Object Qdbus_init_bus;
|
||||
|
|
|
@ -1339,15 +1339,6 @@ DEFUN ("system-name", Fsystem_name, Ssystem_name, 0, 0, 0,
|
|||
return Vsystem_name;
|
||||
}
|
||||
|
||||
const char *
|
||||
get_system_name (void)
|
||||
{
|
||||
if (STRINGP (Vsystem_name))
|
||||
return SSDATA (Vsystem_name);
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0,
|
||||
doc: /* Return the process ID of Emacs, as a number. */)
|
||||
(void)
|
||||
|
|
|
@ -6577,7 +6577,7 @@ static const struct image_keyword tiff_format[TIFF_LAST] =
|
|||
{":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0}
|
||||
};
|
||||
|
||||
#ifdef HAVE_NTGUI
|
||||
#if defined HAVE_NTGUI && defined WINDOWSNT
|
||||
static bool init_tiff_functions (void);
|
||||
#else
|
||||
#define init_tiff_functions NULL
|
||||
|
@ -7529,7 +7529,7 @@ static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] =
|
|||
{":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0}
|
||||
};
|
||||
|
||||
#ifdef HAVE_NTGUI
|
||||
#if defined HAVE_NTGUI && defined WINDOWSNT
|
||||
static bool init_imagemagick_functions (void);
|
||||
#else
|
||||
#define init_imagemagick_functions NULL
|
||||
|
@ -8083,7 +8083,7 @@ static const struct image_keyword svg_format[SVG_LAST] =
|
|||
{":background", IMAGE_STRING_OR_NIL_VALUE, 0}
|
||||
};
|
||||
|
||||
#ifdef HAVE_NTGUI
|
||||
#if defined HAVE_NTGUI && defined WINDOWSNT
|
||||
static bool init_svg_functions (void);
|
||||
#else
|
||||
#define init_svg_functions NULL
|
||||
|
|
|
@ -119,8 +119,7 @@ disptab_matches_widthtab (struct Lisp_Char_Table *disptab, struct Lisp_Vector *w
|
|||
{
|
||||
int i;
|
||||
|
||||
if (widthtab->header.size != 256)
|
||||
emacs_abort ();
|
||||
eassert (widthtab->header.size == 256);
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
if (character_width (i, disptab)
|
||||
|
@ -141,8 +140,7 @@ recompute_width_table (struct buffer *buf, struct Lisp_Char_Table *disptab)
|
|||
if (!VECTORP (BVAR (buf, width_table)))
|
||||
bset_width_table (buf, Fmake_vector (make_number (256), make_number (0)));
|
||||
widthtab = XVECTOR (BVAR (buf, width_table));
|
||||
if (widthtab->header.size != 256)
|
||||
emacs_abort ();
|
||||
eassert (widthtab->header.size == 256);
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
XSETFASTINT (widthtab->contents[i], character_width (i, disptab));
|
||||
|
|
|
@ -3127,7 +3127,6 @@ extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
|
|||
extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
|
||||
ptrdiff_t, bool);
|
||||
extern void init_editfns (void);
|
||||
const char *get_system_name (void);
|
||||
extern void syms_of_editfns (void);
|
||||
extern void set_time_zone_rule (const char *);
|
||||
|
||||
|
|
|
@ -3444,7 +3444,10 @@ overwriting cursor (usually when cursor on a tab) */
|
|||
/* NSTRACE (ns_select); */
|
||||
|
||||
for (k = 0; readfds && k < nfds+1; k++)
|
||||
if (FD_ISSET(k, readfds)) ++nr;
|
||||
{
|
||||
if (FD_ISSET(k, readfds)) ++nr;
|
||||
if (FD_ISSET(k, writefds)) ++nr;
|
||||
}
|
||||
|
||||
if (NSApp == nil
|
||||
|| (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0))
|
||||
|
|
|
@ -2075,7 +2075,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
|
|||
/* Print a description of INTERVAL using PRINTCHARFUN.
|
||||
This is part of printing a string that has text properties. */
|
||||
|
||||
void
|
||||
static void
|
||||
print_interval (INTERVAL interval, Lisp_Object printcharfun)
|
||||
{
|
||||
if (NILP (interval->plist))
|
||||
|
|
|
@ -1464,9 +1464,7 @@ if it isn't already recorded. */)
|
|||
#endif
|
||||
|
||||
if (! NILP (update)
|
||||
&& ! (! NILP (w->window_end_valid)
|
||||
&& w->last_modified >= BUF_MODIFF (b)
|
||||
&& w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b))
|
||||
&& (windows_or_buffers_changed || NILP (w->window_end_valid))
|
||||
&& !noninteractive)
|
||||
{
|
||||
struct text_pos startp;
|
||||
|
@ -3795,6 +3793,8 @@ resize_frame_windows (struct frame *f, int size, int horflag)
|
|||
(m, make_number (XINT (r->top_line) + XINT (r->total_lines)));
|
||||
}
|
||||
}
|
||||
|
||||
windows_or_buffers_changed++;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4208,6 +4208,7 @@ grow_mini_window (struct window *w, int delta)
|
|||
w->last_modified = 0;
|
||||
w->last_overlay_modified = 0;
|
||||
|
||||
windows_or_buffers_changed++;
|
||||
adjust_glyphs (f);
|
||||
unblock_input ();
|
||||
}
|
||||
|
@ -4245,6 +4246,7 @@ shrink_mini_window (struct window *w)
|
|||
w->last_modified = 0;
|
||||
w->last_overlay_modified = 0;
|
||||
|
||||
windows_or_buffers_changed++;
|
||||
adjust_glyphs (f);
|
||||
unblock_input ();
|
||||
}
|
||||
|
|
12
src/xrdb.c
12
src/xrdb.c
|
@ -24,7 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <epaths.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "lisp.h"
|
||||
|
@ -48,11 +48,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include "keyboard.h"
|
||||
#endif
|
||||
|
||||
extern char *getenv (const char *);
|
||||
|
||||
extern struct passwd *getpwuid (uid_t);
|
||||
extern struct passwd *getpwnam (const char *);
|
||||
|
||||
char *x_get_string_resource (XrmDatabase rdb, const char *name,
|
||||
const char *class);
|
||||
static int file_p (const char *filename);
|
||||
|
@ -429,8 +424,9 @@ get_environ_db (void)
|
|||
{
|
||||
static char const xdefaults[] = ".Xdefaults-";
|
||||
char *home = gethomedir ();
|
||||
char const *host = get_system_name ();
|
||||
ptrdiff_t pathsize = strlen (home) + sizeof xdefaults + strlen (host);
|
||||
char const *host = SSDATA (Vsystem_name);
|
||||
ptrdiff_t pathsize = (strlen (home) + sizeof xdefaults
|
||||
+ SBYTES (Vsystem_name));
|
||||
path = xrealloc (home, pathsize);
|
||||
strcat (strcat (path, xdefaults), host);
|
||||
p = path;
|
||||
|
|
Loading…
Add table
Reference in a new issue