aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2012-10-17 22:33:48 +0900
committerKenichi Handa2012-10-17 22:33:48 +0900
commit596846525bf5f515541ab1ca9a459f4842d55d1d (patch)
treee1e4f64ebb40daf0d9ee16b84ef824da30cfbffc
parentfe0b1ec40988638025db569a936b09f0295749a1 (diff)
parent1f9f395d8063fd633ba73f6cc025ded953bab502 (diff)
downloademacs-596846525bf5f515541ab1ca9a459f4842d55d1d.tar.gz
emacs-596846525bf5f515541ab1ca9a459f4842d55d1d.zip
merge trunk
-rw-r--r--ChangeLog14
-rw-r--r--Makefile.in20
-rw-r--r--doc/emacs/ChangeLog8
-rw-r--r--doc/emacs/maintaining.texi2
-rw-r--r--doc/emacs/search.texi13
-rw-r--r--doc/lispintro/ChangeLog5
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi4
-rw-r--r--doc/lispref/ChangeLog11
-rw-r--r--doc/lispref/functions.texi81
-rw-r--r--doc/lispref/macros.texi47
-rw-r--r--etc/NEWS40
-rw-r--r--lisp/ChangeLog30
-rw-r--r--lisp/cedet/ChangeLog30
-rw-r--r--lisp/cedet/cedet.el2
-rw-r--r--lisp/cedet/semantic.el37
-rw-r--r--lisp/cedet/semantic/analyze/complete.el33
-rw-r--r--lisp/cedet/semantic/complete.el5
-rw-r--r--lisp/cedet/semantic/senator.el3
-rw-r--r--lisp/cedet/semantic/wisent/python.el27
-rw-r--r--lisp/emacs-lisp/byte-run.el3
-rw-r--r--lisp/erc/ChangeLog17
-rw-r--r--lisp/erc/erc-backend.el2
-rw-r--r--lisp/erc/erc.el18
-rw-r--r--lisp/gnus/ChangeLog4
-rw-r--r--lisp/gnus/starttls.el2
-rw-r--r--lisp/replace.el8
-rw-r--r--lisp/wdired.el16
-rw-r--r--lisp/window.el22
-rw-r--r--nt/ChangeLog10
-rw-r--r--src/ChangeLog91
-rw-r--r--src/alloc.c2
-rw-r--r--src/buffer.c38
-rw-r--r--src/buffer.h16
-rw-r--r--src/dbusbind.c8
-rw-r--r--src/editfns.c9
-rw-r--r--src/image.c6
-rw-r--r--src/indent.c6
-rw-r--r--src/lisp.h1
-rw-r--r--src/nsterm.m5
-rw-r--r--src/print.c2
-rw-r--r--src/window.c8
-rw-r--r--src/xrdb.c12
42 files changed, 469 insertions, 249 deletions
diff --git a/ChangeLog b/ChangeLog
index 9c839658429..b8c7adb8708 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
12012-10-15 Glenn Morris <rgm@gnu.org>
2
3 * Makefile.in (install-man, install-etc):
4 Apply $TRANSFORM. (Bug#12536#34)
5 (clean): Delete etc/emacs.tmpdesktop.
6
12012-10-11 Kenichi Handa <handa@gnu.org> 72012-10-11 Kenichi Handa <handa@gnu.org>
2 8
3 * .bzrignore: Add several files under admin/charsets. 9 * .bzrignore: Add several files under admin/charsets.
@@ -758,7 +764,7 @@
758 764
7592012-06-28 Dmitry Antipov <dmantipov@yandex.ru> 7652012-06-28 Dmitry Antipov <dmantipov@yandex.ru>
760 766
761 * configure.in: Fix previous change. Remove --enable-asserts. 767 * configure.in: Fix previous change. Remove --enable-asserts.
762 (CPPFLAGS): Remove conditional -DXASSERTS=1. 768 (CPPFLAGS): Remove conditional -DXASSERTS=1.
763 Add --enable-link-time-optimization. 769 Add --enable-link-time-optimization.
764 * INSTALL: Mention this. 770 * INSTALL: Mention this.
@@ -936,7 +942,7 @@
936 942
9372012-06-03 Ulrich Müller <ulm@gentoo.org> 9432012-06-03 Ulrich Müller <ulm@gentoo.org>
938 944
939 * configure.in (PAXCTL): Check for paxctl. (Bug#11398) 945 * configure.in (PAXCTL): Check for paxctl. (Bug#11398)
940 946
9412012-06-01 Paul Eggert <eggert@cs.ucla.edu> 9472012-06-01 Paul Eggert <eggert@cs.ucla.edu>
942 948
@@ -1388,7 +1394,7 @@
13882012-04-17 Dmitry Antipov <dmantipov@yandex.ru> 13942012-04-17 Dmitry Antipov <dmantipov@yandex.ru>
1389 1395
1390 * configure.in (AC_CHECK_FUNCS): 1396 * configure.in (AC_CHECK_FUNCS):
1391 Add getpwent, endpwent, getgrent, endgrent. (Bug#7900) 1397 Add getpwent, endpwent, getgrent, endgrent. (Bug#7900)
1392 1398
13932012-04-16 Glenn Morris <rgm@gnu.org> 13992012-04-16 Glenn Morris <rgm@gnu.org>
1394 1400
@@ -1565,7 +1571,7 @@
1565 1571
15662011-11-04 Glenn Morris <rgm@gnu.org> 15722011-11-04 Glenn Morris <rgm@gnu.org>
1567 1573
1568 * configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929) 1574 * configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929)
1569 Do not include GnuTLS version info in final summary message. 1575 Do not include GnuTLS version info in final summary message.
1570 1576
15712011-10-31 Eli Zaretskii <eliz@gnu.org> 15772011-10-31 Eli Zaretskii <eliz@gnu.org>
diff --git a/Makefile.in b/Makefile.in
index 571013e3244..d929160c597 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -622,18 +622,24 @@ install-man:
622 thisdir=`/bin/pwd`; \ 622 thisdir=`/bin/pwd`; \
623 cd ${mansrcdir}; \ 623 cd ${mansrcdir}; \
624 for page in *.1; do \ 624 for page in *.1; do \
625 dest=`echo "$${page}" | sed '$(TRANSFORM)'`; \
625 (cd $${thisdir}; \ 626 (cd $${thisdir}; \
626 ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}); \ 627 ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${dest}); \
627 ( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \ 628 ( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \
628 rm -f $(DESTDIR)${man1dir}/$${page}.gz; \ 629 rm -f $(DESTDIR)${man1dir}/$${dest}.gz; \
629 ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \ 630 ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${dest}; \
630 done 631 done
631 632
632## Install those items from etc/ that need to end up elsewhere. 633## Install those items from etc/ that need to end up elsewhere.
633install-etc: 634install-etc:
634 umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir} 635 umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir}
635 ${INSTALL_DATA} ${srcdir}/etc/emacs.desktop \ 636 dest=`echo emacs | sed '$(TRANSFORM)'`; \
636 $(DESTDIR)${desktopdir}/emacs.desktop 637 tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \
638 sed -e "/^Exec=emacs/ s/emacs/$${dest}/" \
639 -e "/^Icon=emacs/ s/emacs/$${dest}/" \
640 ${srcdir}/etc/emacs.desktop > $${tmp}; \
641 ${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/$${dest}.desktop; \
642 rm -f $${tmp}
637 thisdir=`/bin/pwd`; \ 643 thisdir=`/bin/pwd`; \
638 cd ${iconsrcdir} || exit 1; umask 022 ; \ 644 cd ${iconsrcdir} || exit 1; umask 022 ; \
639 for dir in */*/apps */*/mimetypes; do \ 645 for dir in */*/apps */*/mimetypes; do \
@@ -641,8 +647,9 @@ install-etc:
641 ( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \ 647 ( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \
642 for icon in $${dir}/*.*; do \ 648 for icon in $${dir}/*.*; do \
643 [ -r $${icon} ] || continue ; \ 649 [ -r $${icon} ] || continue ; \
650 dest=`echo "$${icon}" | sed -e 's|.*/||' -e '$(TRANSFORM)'` ; \
644 ( cd $${thisdir}; \ 651 ( cd $${thisdir}; \
645 ${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${icon} ) \ 652 ${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${dir}/$${dest} ) \
646 || exit 1; \ 653 || exit 1; \
647 done ; \ 654 done ; \
648 done 655 done
@@ -729,6 +736,7 @@ mostlyclean: FRC
729### 736###
730### Delete `.dvi' files here if they are not part of the distribution. 737### Delete `.dvi' files here if they are not part of the distribution.
731clean: FRC 738clean: FRC
739 -rm -f etc/emacs.tmpdesktop
732 (cd src; $(MAKE) $(MFLAGS) clean) 740 (cd src; $(MAKE) $(MFLAGS) clean)
733 (cd oldXMenu; $(MAKE) $(MFLAGS) clean) 741 (cd oldXMenu; $(MAKE) $(MFLAGS) clean)
734 (cd lwlib; $(MAKE) $(MFLAGS) clean) 742 (cd lwlib; $(MAKE) $(MFLAGS) clean)
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 47a4c8da522..5ab3c1ab5b8 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,11 @@
12012-10-16 Juri Linkov <juri@jurta.org>
2
3 * search.texi (Query Replace): Document multi-buffer replacement
4 keys. (Bug#12655)
5
6 * maintaining.texi (Tags Search): Change link "Replace" to
7 "Query Replace".
8
12012-10-13 Chong Yidong <cyd@gnu.org> 92012-10-13 Chong Yidong <cyd@gnu.org>
2 10
3 * files.texi (File Conveniences): ImageMagick enabled by default. 11 * files.texi (File Conveniences): ImageMagick enabled by default.
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index d21e3af83dd..67214bde22c 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2221,7 +2221,7 @@ the current buffer, followed by the remaining files of the tags table.
2221reads a regexp to search for and a string to replace with, just like 2221reads a regexp to search for and a string to replace with, just like
2222ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x 2222ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x
2223tags-search}, but repeatedly, processing matches according to your 2223tags-search}, but repeatedly, processing matches according to your
2224input. @xref{Replace}, for more information on query replace. 2224input. @xref{Query Replace}, for more information on query replace.
2225 2225
2226@vindex tags-case-fold-search 2226@vindex tags-case-fold-search
2227@cindex case-sensitivity and tags search 2227@cindex case-sensitivity and tags search
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 21db02c8ab8..7e46e416219 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1239,6 +1239,19 @@ occurrences.
1239@item ! 1239@item !
1240to replace all remaining occurrences without asking again. 1240to replace all remaining occurrences without asking again.
1241 1241
1242@item Y @r{(Upper-case)}
1243to replace all remaining occurrences in all remaining buffers in
1244multi-buffer replacements (like the Dired `Q' command which performs
1245query replace on selected files). It answers this question and all
1246subsequent questions in the series with "yes", without further
1247user interaction.
1248
1249@item N @r{(Upper-case)}
1250to skip to the next buffer in multi-buffer replacements without
1251replacing remaining occurrences in the current buffer. It answers
1252this question "no", gives up on the questions for the current buffer,
1253and continues to the next buffer in the sequence.
1254
1242@item ^ 1255@item ^
1243to go back to the position of the previous occurrence (or what used to 1256to go back to the position of the previous occurrence (or what used to
1244be an occurrence), in case you changed it by mistake or want to 1257be an occurrence), in case you changed it by mistake or want to
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index 11eacf25c96..6c524f5a0ae 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,8 @@
12012-10-17 Gregor Zattler <grfz@gmx.de> (tiny change)
2
3 * emacs-lisp-intro.texi (Narrowing advantages):
4 Minor update for changed what-line implementation. (Bug#12629)
5
12012-06-21 Glenn Morris <rgm@gnu.org> 62012-06-21 Glenn Morris <rgm@gnu.org>
2 7
3 * Makefile.in: Rename infodir to buildinfodir throughout. (Bug#11737) 8 * Makefile.in: Rename infodir to buildinfodir throughout. (Bug#11737)
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index 04e3e0c8649..55c3ef4e09e 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -6600,8 +6600,8 @@ buffer; or conversely, an Emacs Lisp function needs to work on all of a
6600buffer that has been narrowed. The @code{what-line} function, for 6600buffer that has been narrowed. The @code{what-line} function, for
6601example, removes the narrowing from a buffer, if it has any narrowing 6601example, removes the narrowing from a buffer, if it has any narrowing
6602and when it has finished its job, restores the narrowing to what it was. 6602and when it has finished its job, restores the narrowing to what it was.
6603On the other hand, the @code{count-lines} function, which is called by 6603On the other hand, the @code{count-lines} function
6604@code{what-line}, uses narrowing to restrict itself to just that portion 6604uses narrowing to restrict itself to just that portion
6605of the buffer in which it is interested and then restores the previous 6605of the buffer in which it is interested and then restores the previous
6606situation. 6606situation.
6607 6607
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 40c457ffe07..acf6f8a51ff 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,14 @@
12012-10-15 Chong Yidong <cyd@gnu.org>
2
3 * macros.texi (Defining Macros): defmacro is now a macro.
4 Explicitly list the docstring and declare arguments.
5
6 * functions.texi (Anonymous Functions): Explicitly list the
7 docstring, declare, and interactive arguments to lambda.
8 (Defining Functions): Likewise for defun.
9 (Inline Functions): Likewise for defsubst.
10 (Declare Form): Tweak description.
11
12012-10-13 Chong Yidong <cyd@gnu.org> 122012-10-13 Chong Yidong <cyd@gnu.org>
2 13
3 * display.texi (ImageMagick Images): ImageMagick enabled by default. 14 * display.texi (ImageMagick Images): ImageMagick enabled by default.
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 845561f91ec..c94e46dad18 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -522,21 +522,20 @@ Scheme.)
522is called @dfn{defining a function}, and it is done with the 522is called @dfn{defining a function}, and it is done with the
523@code{defun} special form. 523@code{defun} special form.
524 524
525@defmac defun name argument-list body-forms... 525@defmac defun name args [doc] [declare] [interactive] body@dots{}
526@code{defun} is the usual way to define new Lisp functions. It 526@code{defun} is the usual way to define new Lisp functions. It
527defines the symbol @var{name} as a function that looks like this: 527defines the symbol @var{name} as a function with argument list
528@var{args} and body forms given by @var{body}. Neither @var{name} nor
529@var{args} should be quoted.
528 530
529@example 531@var{doc}, if present, should be a string specifying the function's
530(lambda @var{argument-list} . @var{body-forms}) 532documentation string (@pxref{Function Documentation}). @var{declare},
531@end example 533if present, should be a @code{declare} form specifying function
534metadata (@pxref{Declare Form}). @var{interactive}, if present,
535should be an @code{interactive} form specifying how the function is to
536be called interactively (@pxref{Interactive Call}).
532 537
533@code{defun} stores this lambda expression in the function cell of 538The return value of @code{defun} is undefined.
534@var{name}. Its return value is @emph{undefined}.
535
536As described previously, @var{argument-list} is a list of argument
537names and may include the keywords @code{&optional} and @code{&rest}.
538Also, the first two of the @var{body-forms} may be a documentation
539string and an interactive declaration. @xref{Lambda Components}.
540 539
541Here are some examples: 540Here are some examples:
542 541
@@ -582,14 +581,14 @@ redefinition from unintentional redefinition.
582@end defmac 581@end defmac
583 582
584@cindex function aliases 583@cindex function aliases
585@defun defalias name definition &optional docstring 584@defun defalias name definition &optional doc
586@anchor{Definition of defalias} 585@anchor{Definition of defalias}
587This special form defines the symbol @var{name} as a function, with 586This special form defines the symbol @var{name} as a function, with
588definition @var{definition} (which can be any valid Lisp function). 587definition @var{definition} (which can be any valid Lisp function).
589Its return value is @emph{undefined}. 588Its return value is @emph{undefined}.
590 589
591If @var{docstring} is non-@code{nil}, it becomes the function 590If @var{doc} is non-@code{nil}, it becomes the function documentation
592documentation of @var{name}. Otherwise, any documentation provided by 591of @var{name}. Otherwise, any documentation provided by
593@var{definition} is used. 592@var{definition} is used.
594 593
595The proper place to use @code{defalias} is where a specific function 594The 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.
902But typically you should use the @code{lambda} macro, or the 901But typically you should use the @code{lambda} macro, or the
903@code{function} special form, or the @code{#'} read syntax: 902@code{function} special form, or the @code{#'} read syntax:
904 903
905@defmac lambda args body... 904@defmac lambda args [doc] [interactive] body@dots{}
906This macro returns an anonymous function with argument list @var{args} 905This macro returns an anonymous function with argument list
907and body forms given by @var{body}. In effect, this macro makes 906@var{args}, documentation string @var{doc} (if any), interactive spec
908@code{lambda} forms ``self-quoting'': evaluating a form whose @sc{car} 907@var{interactive} (if any), and body forms given by @var{body}.
909is @code{lambda} yields the form itself: 908
909In effect, this macro makes @code{lambda} forms ``self-quoting'':
910evaluating a form whose @sc{car} is @code{lambda} yields the form
911itself:
910 912
911@example 913@example
912(lambda (x) (* x x)) 914(lambda (x) (* x x))
@@ -1169,13 +1171,13 @@ If provided, @var{when} should be a string indicating when the function
1169was first made obsolete---for example, a date or a release number. 1171was first made obsolete---for example, a date or a release number.
1170@end defun 1172@end defun
1171 1173
1172@defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring 1174@defmac define-obsolete-function-alias obsolete-name current-name &optional when doc
1173This convenience macro marks the function @var{obsolete-name} obsolete 1175This convenience macro marks the function @var{obsolete-name} obsolete
1174and also defines it as an alias for the function @var{current-name}. 1176and also defines it as an alias for the function @var{current-name}.
1175It is equivalent to the following: 1177It is equivalent to the following:
1176 1178
1177@example 1179@example
1178(defalias @var{obsolete-name} @var{current-name} @var{docstring}) 1180(defalias @var{obsolete-name} @var{current-name} @var{doc})
1179(make-obsolete @var{obsolete-name} @var{current-name} @var{when}) 1181(make-obsolete @var{obsolete-name} @var{current-name} @var{when})
1180@end example 1182@end example
1181@end defmac 1183@end defmac
@@ -1213,16 +1215,16 @@ this:
1213@section Inline Functions 1215@section Inline Functions
1214@cindex inline functions 1216@cindex inline functions
1215 1217
1216@defmac defsubst name argument-list body-forms... 1218 An @dfn{inline function} is a function that works just like an
1217Define an inline function. The syntax is exactly the same as 1219ordinary function, except for one thing: when you byte-compile a call
1218@code{defun} (@pxref{Defining Functions}).
1219@end defmac
1220
1221 You can define an @dfn{inline function} by using @code{defsubst}
1222instead of @code{defun}. An inline function works just like an
1223ordinary function except for one thing: when you byte-compile a call
1224to the function (@pxref{Byte Compilation}), the function's definition 1220to the function (@pxref{Byte Compilation}), the function's definition
1225is expanded into the caller. 1221is expanded into the caller. To define an inline function, use
1222@code{defsubst} instead of @code{defun}.
1223
1224@defmac defsubst name args [doc] [declare] [interactive] body@dots{}
1225This macro defines an inline function. Its syntax is exactly the same
1226as @code{defun} (@pxref{Defining Functions}).
1227@end defmac
1226 1228
1227 Making a function inline often makes its function calls run faster. 1229 Making a function inline often makes its function calls run faster.
1228But it also has disadvantages. For one thing, it reduces flexibility; 1230But it also has disadvantages. For one thing, it reduces flexibility;
@@ -1266,16 +1268,13 @@ convention in Emacs Lisp mode.
1266@anchor{Definition of declare} 1268@anchor{Definition of declare}
1267@defmac declare @var{specs}@dots{} 1269@defmac declare @var{specs}@dots{}
1268This macro ignores its arguments and evaluates to @code{nil}; it has 1270This macro ignores its arguments and evaluates to @code{nil}; it has
1269no run-time effect. However, when a @code{declare} form occurs as the 1271no run-time effect. However, when a @code{declare} form occurs in the
1270@emph{very first form} in the body of a @code{defun} function 1272@var{declare} argument of a @code{defun} or @code{defsubst} function
1271definition or a @code{defmacro} macro definition (@pxref{Defining 1273definition (@pxref{Defining Functions}) or a @code{defmacro} macro
1272Macros}, for a description of @code{defmacro}), it appends the 1274definition (@pxref{Defining Macros}), it appends the properties
1273properties specified by @var{specs} to the function or macro. This 1275specified by @var{specs} to the function or macro. This work is
1274work is specially performed by the @code{defun} and @code{defmacro} 1276specially performed by @code{defun}, @code{defsubst}, and
1275macros. 1277@code{defmacro}.
1276
1277Note that if you put a @code{declare} form in an interactive function,
1278it should go before the @code{interactive} form.
1279 1278
1280Each element in @var{specs} should have the form @code{(@var{property} 1279Each element in @var{specs} should have the form @code{(@var{property}
1281@var{args}@dots{})}, which should not be quoted. These have the 1280@var{args}@dots{})}, which should not be quoted. These have the
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index 0a5152a43a1..8be6a3fbcde 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -185,35 +185,38 @@ During Compile}).
185@node Defining Macros 185@node Defining Macros
186@section Defining Macros 186@section Defining Macros
187 187
188 A Lisp macro is a list whose @sc{car} is @code{macro}. Its @sc{cdr} should 188 A Lisp macro object is a list whose @sc{car} is @code{macro}, and
189be a function; expansion of the macro works by applying the function 189whose @sc{cdr} is a lambda expression. Expansion of the macro works
190(with @code{apply}) to the list of unevaluated argument-expressions 190by applying the lambda expression (with @code{apply}) to the list of
191from the macro call. 191@emph{unevaluated} arguments from the macro call.
192 192
193 It is possible to use an anonymous Lisp macro just like an anonymous 193 It is possible to use an anonymous Lisp macro just like an anonymous
194function, but this is never done, because it does not make sense to pass 194function, but this is never done, because it does not make sense to
195an anonymous macro to functionals such as @code{mapcar}. In practice, 195pass an anonymous macro to functionals such as @code{mapcar}. In
196all Lisp macros have names, and they are usually defined with the 196practice, all Lisp macros have names, and they are almost always
197special form @code{defmacro}. 197defined with the @code{defmacro} macro.
198 198
199@defspec defmacro name argument-list body-forms@dots{} 199@defmac defmacro name args [doc] [declare] body@dots{}
200@code{defmacro} defines the symbol @var{name} as a macro that looks 200@code{defmacro} defines the symbol @var{name} (which should not be
201like this: 201quoted) as a macro that looks like this:
202 202
203@example 203@example
204(macro lambda @var{argument-list} . @var{body-forms}) 204(macro lambda @var{args} . @var{body})
205@end example 205@end example
206 206
207(Note that the @sc{cdr} of this list is a function---a lambda expression.) 207(Note that the @sc{cdr} of this list is a lambda expression.) This
208This macro object is stored in the function cell of @var{name}. Its return 208macro object is stored in the function cell of @var{name}. The
209value is @emph{undefined}. 209meaning of @var{args} is the same as in a function, and the keywords
210 210@code{&rest} and @code{&optional} may be used (@pxref{Argument List}).
211The shape and meaning of @var{argument-list} is the same as in a 211Neither @var{name} nor @var{args} should be quoted. The return value
212function, and the keywords @code{&rest} and @code{&optional} may be used 212of @code{defmacro} is undefined.
213(@pxref{Argument List}). Macros may have a documentation string, but 213
214any @code{interactive} declaration is ignored since macros cannot be 214@var{doc}, if present, should be a string specifying the macro's
215called interactively. 215documentation string. @var{declare}, if present, should be a
216@end defspec 216@code{declare} form specifying metadata for the macro (@pxref{Declare
217Form}). Note that macros cannot have interactive declarations, since
218they cannot be called interactively.
219@end defmac
217 220
218 Macros often need to construct large list structures from a mixture 221 Macros often need to construct large list structures from a mixture
219of constants and nonconstant parts. To make this easier, use the 222of constants and nonconstant parts. To make this easier, use the
diff --git a/etc/NEWS b/etc/NEWS
index 5a310d8f82c..00d5109aba6 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -47,7 +47,7 @@ no warnings; on older and on non-GNU systems the generated warnings
47may be useful. 47may be useful.
48 48
49--- 49---
50** The configuration option '--enable-use-lisp-union-type' has been 50** The configure option '--enable-use-lisp-union-type' has been
51renamed to '--enable-check-lisp-object-type', as the resulting 51renamed to '--enable-check-lisp-object-type', as the resulting
52Lisp_Object type no longer uses a union to implement the compile time 52Lisp_Object type no longer uses a union to implement the compile time
53check that this option enables. 53check that this option enables.
@@ -62,6 +62,13 @@ overwriting "emacs" in the installation bin/ directory with a link
62to emacs-VERSION. 62to emacs-VERSION.
63 63
64--- 64---
65** The configure options `--program-prefix', `--program-suffix', and
66`--program-transform-name' apply to more than just the installed
67binaries. Now they also affect the man pages, icons, and the
68etc/emacs.desktop file; but not the info pages, since this would break
69links between the various manuals.
70
71---
65** Emacs uses libtinfo in preference to libncurses, if available. 72** Emacs uses libtinfo in preference to libncurses, if available.
66 73
67--- 74---
@@ -203,7 +210,9 @@ The PCL-CVS commands are still available via the keyboard.
203--- 210---
204*** Fullscreen and frame parameter fullscreen is supported. 211*** Fullscreen and frame parameter fullscreen is supported.
205--- 212---
206*** A file dialog is used when open/saved is done from the menu/toolbar. 213*** A file dialog is used for open/save operations initiated from the
214menu/toolbar.
215
207 216
208* Editing Changes in Emacs 24.3 217* Editing Changes in Emacs 24.3
209 218
@@ -415,8 +424,8 @@ The global binding for `M-=', `count-words-region' is in effect.
415channel keys found, if any. 424channel keys found, if any.
416 425
417** Flymake uses fringe bitmaps to indicate errors and warnings. 426** Flymake uses fringe bitmaps to indicate errors and warnings.
418See flymake-fringe-indicator-position, flymake-error-bitmap and 427See `flymake-fringe-indicator-position', `flymake-error-bitmap' and
419flymake-warning-bitmap. 428`flymake-warning-bitmap'.
420 429
421** Follow mode 430** Follow mode
422 431
@@ -634,6 +643,10 @@ inefficiency, and not namespace-clean.
634 643
635 644
636* New Modes and Packages in Emacs 24.3 645* New Modes and Packages in Emacs 24.3
646
647FIXME? erc-desktop-notifications.el, gv.el, profiler.el,
648gnus-notifications.el, mm-archive.el
649
637 650
638* Incompatible Lisp Changes in Emacs 24.3 651* Incompatible Lisp Changes in Emacs 24.3
639 652
@@ -848,7 +861,7 @@ describing the cycle.
848** Miscellaneous new functions: 861** Miscellaneous new functions:
849 862
850*** `autoloadp' 863*** `autoloadp'
851*** `autoload-do-load'. 864*** `autoload-do-load'
852+++ 865+++
853*** `buffer-narrowed-p' tests if the buffer is narrowed. 866*** `buffer-narrowed-p' tests if the buffer is narrowed.
854*** `file-name-base' returns a file name sans directory and extension. 867*** `file-name-base' returns a file name sans directory and extension.
@@ -873,7 +886,7 @@ See the "Face Attributes" section of the Elisp manual.
873 886
874*** `automount-dir-prefix' 887*** `automount-dir-prefix'
875*** `buffer-has-markers-at' 888*** `buffer-has-markers-at'
876*** `macro-declaration-function' (use `macro-declarations-alist'). 889*** `macro-declaration-function' (use `macro-declarations-alist')
877*** `window-system-version' 890*** `window-system-version'
878*** `dired-pop-to-buffer' (use `dired-mark-pop-up') 891*** `dired-pop-to-buffer' (use `dired-mark-pop-up')
879*** `query-replace-interactive' 892*** `query-replace-interactive'
@@ -881,21 +894,20 @@ See the "Face Attributes" section of the Elisp manual.
881 894
882* Changes in Emacs 24.3 on non-free operating systems 895* Changes in Emacs 24.3 on non-free operating systems
883 896
884** New configure.bat options on MS-Windows: 897+++
885 898** On MS Windows, you can pass --without-libxml2 to configure.bat to omit
886*** --without-libxml2 omits support for libxml2, even if its presence 899support for libxml2, even if its presence is detected.
887is detected.
888 900
889** When invoked with the -nw switch to run on the Windows text-mode terminal, 901** When invoked with the -nw switch to run on the Windows text-mode terminal,
890Emacs now supports mouse highlight, help-echo (in the echo area), and 902Emacs now supports mouse highlight, help-echo (in the echo area), and
891mouse-autoselect-window. 903`mouse-autoselect-window'.
892 904
893** Two new functions are available in Cygwin builds of Emacs: 905** Two new functions are available in Cygwin builds:
894cygwin-convert-path-from-windows and cygwin-convert-path-to-windows. 906`cygwin-convert-path-from-windows' and `cygwin-convert-path-to-windows'.
895These functions allow Lisp code to access the Cygwin file-name mapping 907These functions allow Lisp code to access the Cygwin file-name mapping
896machinery to convert between Cygwin and Windows-native file names. 908machinery to convert between Cygwin and Windows-native file names.
897 909
898** On MS-Windows Vista and later Emacs now supports symbolic links. 910** On MS Windows Vista and later Emacs now supports symbolic links.
899 911
900* Changes in Emacs 24.2 912* Changes in Emacs 24.2
901 913
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7393bbc2845..9b1929eae6b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,23 @@
12012-10-17 Michael Heerdegen <michael_heerdegen@web.de> (tiny change)
2
3 * wdired.el (wdired-old-marks): New variable.
4 (wdired-change-to-wdired-mode): Locally set wdired-old-marks.
5 (wdired-do-renames): Move point with renamed file and don't lose
6 mark status (Bug#11795).
7
82012-10-16 Juri Linkov <juri@jurta.org>
9
10 * replace.el (query-replace-help): Mention multi-buffer replacement
11 keys in the Help message. (Bug#12655)
12
132012-10-15 Chong Yidong <cyd@gnu.org>
14
15 * emacs-lisp/byte-run.el (defsubst): Doc fix.
16
12012-10-14 Eli Zaretskii <eliz@gnu.org> 172012-10-14 Eli Zaretskii <eliz@gnu.org>
2 18
19 * window.el (display-buffer): Doc fix.
20
3 * progmodes/compile.el (compilation-error-regexp-alist-alist): 21 * progmodes/compile.el (compilation-error-regexp-alist-alist):
4 Adjust the msft regexp to the output of Studio 2010, and move msft 22 Adjust the msft regexp to the output of Studio 2010, and move msft
5 before edg-1. See the discussion on emacs-devel, 23 before edg-1. See the discussion on emacs-devel,
@@ -593,9 +611,9 @@
593 * emacs-lisp/eieio-base.el (eieio-persistent-read): New input args 611 * emacs-lisp/eieio-base.el (eieio-persistent-read): New input args
594 specifying the expected class, and whether subclassing is allowed. 612 specifying the expected class, and whether subclassing is allowed.
595 (eieio-persistent-convert-list-to-object): 613 (eieio-persistent-convert-list-to-object):
596 (eieio-persistent-validate/fix-slot-value) 614 (eieio-persistent-validate/fix-slot-value)
597 (eieio-persistent-slot-type-is-class-p): New functions. 615 (eieio-persistent-slot-type-is-class-p): New functions.
598 (eieio-named::slot-missing): Doc fix. 616 (eieio-named::slot-missing): Doc fix.
599 617
600 * emacs-lisp/eieio-datadebug.el (data-debug/eieio-insert-slots): 618 * emacs-lisp/eieio-datadebug.el (data-debug/eieio-insert-slots):
601 Stop using unused publd variable. 619 Stop using unused publd variable.
@@ -2038,7 +2056,7 @@
2038 2056
2039 * ses.el (ses-widen): 2057 * ses.el (ses-widen):
2040 * simple.el (count-words--buffer-message): 2058 * simple.el (count-words--buffer-message):
2041 * net/browse-url.el (browse-url-of-buffer): Use it 2059 * net/browse-url.el (browse-url-of-buffer): Use it.
2042 2060
2043 * simple.el (count-words-region): Don't signal an error if there 2061 * simple.el (count-words-region): Don't signal an error if there
2044 is a non-nil prefix arg and the mark is not set. 2062 is a non-nil prefix arg and the mark is not set.
@@ -16320,7 +16338,7 @@
163202011-06-22 Leo Liu <sdl.web@gmail.com> 163382011-06-22 Leo Liu <sdl.web@gmail.com>
16321 16339
16322 * minibuffer.el (completing-read-function) 16340 * minibuffer.el (completing-read-function)
16323 (completing-read-default): Move from minibuf.c 16341 (completing-read-default): Move from minibuf.c.
16324 16342
163252011-06-22 Richard Stallman <rms@gnu.org> 163432011-06-22 Richard Stallman <rms@gnu.org>
16326 16344
@@ -18177,7 +18195,7 @@
18177 Remove unnecessary and incorrect declarations. 18195 Remove unnecessary and incorrect declarations.
18178 18196
18179 * emacs-lisp/check-declare.el (check-declare-scan): 18197 * emacs-lisp/check-declare.el (check-declare-scan):
18180 Handle byte-compile-initial-macro-environment in bytecomp.el 18198 Handle byte-compile-initial-macro-environment in bytecomp.el.
18181 18199
181822011-05-05 Stefan Monnier <monnier@iro.umontreal.ca> 182002011-05-05 Stefan Monnier <monnier@iro.umontreal.ca>
18183 18201
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 14e8d6c1d64..e89e8ed258b 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,4 +1,32 @@
12012-10-08 David Engster <deng@randomsample.de>> 12012-10-14 David Engster <deng@randomsample.de>
2
3 * semantic.el (semantic-error-if-unparsed): New function. Raise
4 error if buffer was not parsed by Semantic (bug #12045).
5 (navigate-menu, edit-menu, cedet-menu-map): Enable Semantic items
6 only if buffer was parsed. Also, replace ':active' with ':enable'
7 where necessary.
8
9 * semantic/wisent/python.el
10 (semantic-python-get-system-include-path): Use
11 `python-shell-internal-send-string' if available to query Python
12 for system paths.
13
14 * semantic/senator.el (senator-next-tag, senator-previous-tag)
15 (senator-go-to-up-reference): Use `semantic-error-if-unparsed'.
16
17 * semantic/complete.el (semantic-complete-jump-local)
18 (semantic-complete-jump, semantic-complete-jump-local-members)
19 (semantic-complete-self-insert): Use `semantic-error-if-unparsed'.
20 (semantic-complete-inline-project): Fix autoload cookie.
21
22 * semantic/analyze/complete.el
23 (semantic-analyze-possible-completions): Check if buffer was
24 parsed. Only raise an error if function was called interactively,
25 otherwise silently return nil.
26
27 * cedet.el (cedet-menu-map): Fix copy&paste typo in menu creation.
28
292012-10-08 David Engster <deng@randomsample.de>
2 30
3 * semantic/bovine/el.el: Add `semantic-default-elisp-setup' to 31 * semantic/bovine/el.el: Add `semantic-default-elisp-setup' to
4 `emacs-lisp-mode-hook'. This was accidentally removed during the 32 `emacs-lisp-mode-hook'. This was accidentally removed during the
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el
index 5c21e4ab538..327a72f9dc7 100644
--- a/lisp/cedet/cedet.el
+++ b/lisp/cedet/cedet.el
@@ -59,7 +59,7 @@
59 (define-key map [navigate-menu] 'undefined) 59 (define-key map [navigate-menu] 'undefined)
60 (define-key map [semantic-options-separator] 'undefined) 60 (define-key map [semantic-options-separator] 'undefined)
61 (define-key map [global-semantic-highlight-func-mode] 'undefined) 61 (define-key map [global-semantic-highlight-func-mode] 'undefined)
62 (define-key map [global-semantic-highlight-func-mode] 'undefined) 62 (define-key map [global-semantic-stickyfunc-mode] 'undefined)
63 (define-key map [global-semantic-decoration-mode] 'undefined) 63 (define-key map [global-semantic-decoration-mode] 'undefined)
64 (define-key map [global-semantic-idle-completions-mode] 'undefined) 64 (define-key map [global-semantic-idle-completions-mode] 'undefined)
65 (define-key map [global-semantic-idle-summary-mode] 'undefined) 65 (define-key map [global-semantic-idle-summary-mode] 'undefined)
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index e02790cbfa8..373864a43d5 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -319,6 +319,11 @@ a parse of the buffer.")
319 "Return non-nil if the current buffer was set up for parsing." 319 "Return non-nil if the current buffer was set up for parsing."
320 semantic-new-buffer-fcn-was-run) 320 semantic-new-buffer-fcn-was-run)
321 321
322(defsubst semantic-error-if-unparsed ()
323 "Raise an error if current buffer was not parsed by Semantic."
324 (unless semantic-new-buffer-fcn-was-run
325 (error "Buffer was not parsed by Semantic.")))
326
322(defsubst semantic--umatched-syntax-needs-refresh-p () 327(defsubst semantic--umatched-syntax-needs-refresh-p ()
323 "Return non-nil if the unmatched syntax cache needs a refresh. 328 "Return non-nil if the unmatched syntax cache needs a refresh.
324That is, if it is dirty or if the current parse tree isn't up to date." 329That 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."
907 ;; Edit Tags submenu: 912 ;; Edit Tags submenu:
908 (define-key edit-menu [semantic-analyze-possible-completions] 913 (define-key edit-menu [semantic-analyze-possible-completions]
909 '(menu-item "List Completions" semantic-analyze-possible-completions 914 '(menu-item "List Completions" semantic-analyze-possible-completions
915 :enable (semantic-active-p)
910 :help "Display a list of completions for the tag at point")) 916 :help "Display a list of completions for the tag at point"))
911 (define-key edit-menu [semantic-complete-analyze-inline] 917 (define-key edit-menu [semantic-complete-analyze-inline]
912 '(menu-item "Complete Tag Inline" semantic-complete-analyze-inline 918 '(menu-item "Complete Tag Inline" semantic-complete-analyze-inline
919 :enable (semantic-active-p)
913 :help "Display inline completion for the tag at point")) 920 :help "Display inline completion for the tag at point"))
914 (define-key edit-menu [semantic-completion-separator] 921 (define-key edit-menu [semantic-completion-separator]
915 '("--")) 922 '("--"))
916 (define-key edit-menu [senator-transpose-tags-down] 923 (define-key edit-menu [senator-transpose-tags-down]
917 '(menu-item "Transpose Tags Down" senator-transpose-tags-down 924 '(menu-item "Transpose Tags Down" senator-transpose-tags-down
918 :active (semantic-current-tag) 925 :enable (and (semantic-active-p)
926 (semantic-current-tag))
919 :help "Transpose the current tag and the next tag")) 927 :help "Transpose the current tag and the next tag"))
920 (define-key edit-menu [senator-transpose-tags-up] 928 (define-key edit-menu [senator-transpose-tags-up]
921 '(menu-item "Transpose Tags Up" senator-transpose-tags-up 929 '(menu-item "Transpose Tags Up" senator-transpose-tags-up
922 :active (semantic-current-tag) 930 :enable (and (semantic-active-p)
931 (semantic-current-tag))
923 :help "Transpose the current tag and the previous tag")) 932 :help "Transpose the current tag and the previous tag"))
924 (define-key edit-menu [semantic-edit-separator] 933 (define-key edit-menu [semantic-edit-separator]
925 '("--")) 934 '("--"))
926 (define-key edit-menu [senator-yank-tag] 935 (define-key edit-menu [senator-yank-tag]
927 '(menu-item "Yank Tag" senator-yank-tag 936 '(menu-item "Yank Tag" senator-yank-tag
928 :active (not (ring-empty-p senator-tag-ring)) 937 :enable (not (ring-empty-p senator-tag-ring))
929 :help "Yank the head of the tag ring into the buffer")) 938 :help "Yank the head of the tag ring into the buffer"))
930 (define-key edit-menu [senator-copy-tag-to-register] 939 (define-key edit-menu [senator-copy-tag-to-register]
931 '(menu-item "Copy Tag To Register" senator-copy-tag-to-register 940 '(menu-item "Copy Tag To Register" senator-copy-tag-to-register
932 :active (semantic-current-tag) 941 :enable (and (semantic-active-p)
942 (semantic-current-tag))
933 :help "Yank the head of the tag ring into the buffer")) 943 :help "Yank the head of the tag ring into the buffer"))
934 (define-key edit-menu [senator-copy-tag] 944 (define-key edit-menu [senator-copy-tag]
935 '(menu-item "Copy Tag" senator-copy-tag 945 '(menu-item "Copy Tag" senator-copy-tag
936 :active (semantic-current-tag) 946 :enable (and (semantic-active-p)
947 (semantic-current-tag))
937 :help "Copy the current tag to the tag ring")) 948 :help "Copy the current tag to the tag ring"))
938 (define-key edit-menu [senator-kill-tag] 949 (define-key edit-menu [senator-kill-tag]
939 '(menu-item "Kill Tag" senator-kill-tag 950 '(menu-item "Kill Tag" senator-kill-tag
940 :active (semantic-current-tag) 951 :enable (and (semantic-active-p)
952 (semantic-current-tag))
941 :help "Kill the current tag, and copy it to the tag ring")) 953 :help "Kill the current tag, and copy it to the tag ring"))
942 954
943 ;; Navigate Tags submenu: 955 ;; Navigate Tags submenu:
944 (define-key navigate-menu [senator-narrow-to-defun] 956 (define-key navigate-menu [senator-narrow-to-defun]
945 '(menu-item "Narrow to Tag" senator-narrow-to-defun 957 '(menu-item "Narrow to Tag" senator-narrow-to-defun
946 :active (semantic-current-tag) 958 :enable (and (semantic-active-p)
959 (semantic-current-tag))
947 :help "Narrow the buffer to the bounds of the current tag")) 960 :help "Narrow the buffer to the bounds of the current tag"))
948 (define-key navigate-menu [semantic-narrow-to-defun-separator] 961 (define-key navigate-menu [semantic-narrow-to-defun-separator]
949 '("--")) 962 '("--"))
950 (define-key navigate-menu [semantic-symref-symbol] 963 (define-key navigate-menu [semantic-symref-symbol]
951 '(menu-item "Find Tag References..." semantic-symref-symbol 964 '(menu-item "Find Tag References..." semantic-symref-symbol
965 :enable (semantic-active-p)
952 :help "Read a tag and list the references to it")) 966 :help "Read a tag and list the references to it"))
953 (define-key navigate-menu [semantic-complete-jump] 967 (define-key navigate-menu [semantic-complete-jump]
954 '(menu-item "Find Tag Globally..." semantic-complete-jump 968 '(menu-item "Find Tag Globally..." semantic-complete-jump
969 :enable (semantic-active-p)
955 :help "Read a tag name and find it in the current project")) 970 :help "Read a tag name and find it in the current project"))
956 (define-key navigate-menu [semantic-complete-jump-local-members] 971 (define-key navigate-menu [semantic-complete-jump-local-members]
957 '(menu-item "Find Local Members ..." semantic-complete-jump-local-members 972 '(menu-item "Find Local Members ..." semantic-complete-jump-local-members
973 :enable (semantic-active-p)
958 :help "Read a tag name and find a local member with that name")) 974 :help "Read a tag name and find a local member with that name"))
959 (define-key navigate-menu [semantic-complete-jump-local] 975 (define-key navigate-menu [semantic-complete-jump-local]
960 '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local 976 '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
977 :enable (semantic-active-p)
961 :help "Read a tag name and find it in this buffer")) 978 :help "Read a tag name and find it in this buffer"))
962 (define-key navigate-menu [semantic-navigation-separator] 979 (define-key navigate-menu [semantic-navigation-separator]
963 '("--")) 980 '("--"))
964 (define-key navigate-menu [senator-go-to-up-reference] 981 (define-key navigate-menu [senator-go-to-up-reference]
965 '(menu-item "Parent Tag" senator-go-to-up-reference 982 '(menu-item "Parent Tag" senator-go-to-up-reference
983 :enable (semantic-active-p)
966 :help "Navigate up one reference by tag")) 984 :help "Navigate up one reference by tag"))
967 (define-key navigate-menu [senator-next-tag] 985 (define-key navigate-menu [senator-next-tag]
968 '(menu-item "Next Tag" senator-next-tag 986 '(menu-item "Next Tag" senator-next-tag
987 :enable (semantic-active-p)
969 :help "Go to the next tag")) 988 :help "Go to the next tag"))
970 (define-key navigate-menu [senator-previous-tag] 989 (define-key navigate-menu [senator-previous-tag]
971 '(menu-item "Previous Tag" senator-previous-tag 990 '(menu-item "Previous Tag" senator-previous-tag
991 :enable (semantic-active-p)
972 :help "Go to the previous tag")) 992 :help "Go to the previous tag"))
973 993
974 ;; Top level menu items: 994 ;; Top level menu items:
975 (define-key cedet-menu-map [semantic-force-refresh] 995 (define-key cedet-menu-map [semantic-force-refresh]
976 '(menu-item "Reparse Buffer" semantic-force-refresh 996 '(menu-item "Reparse Buffer" semantic-force-refresh
977 :help "Force a full reparse of the current buffer" 997 :help "Force a full reparse of the current buffer"
978 :visible semantic-mode)) 998 :visible semantic-mode
999 :enable (semantic-active-p)))
979 (define-key cedet-menu-map [semantic-edit-menu] 1000 (define-key cedet-menu-map [semantic-edit-menu]
980 `(menu-item "Edit Tags" ,edit-menu 1001 `(menu-item "Edit Tags" ,edit-menu
981 :visible semantic-mode)) 1002 :visible semantic-mode))
diff --git a/lisp/cedet/semantic/analyze/complete.el b/lisp/cedet/semantic/analyze/complete.el
index edc3cdc230c..a83f4ff0ac8 100644
--- a/lisp/cedet/semantic/analyze/complete.el
+++ b/lisp/cedet/semantic/analyze/complete.el
@@ -87,20 +87,25 @@ in a buffer."
87 ;; In theory, we don't need the below since the context will 87 ;; In theory, we don't need the below since the context will
88 ;; do it for us. 88 ;; do it for us.
89 ;;(semantic-refresh-tags-safe) 89 ;;(semantic-refresh-tags-safe)
90 (with-syntax-table semantic-lex-syntax-table 90 (if (semantic-active-p)
91 (let* ((context (if (semantic-analyze-context-child-p context) 91 (with-syntax-table semantic-lex-syntax-table
92 context 92 (let* ((context (if (semantic-analyze-context-child-p context)
93 (semantic-analyze-current-context context))) 93 context
94 (ans (if (not context) 94 (semantic-analyze-current-context context)))
95 (error "Nothing to complete") 95 (ans (if (not context)
96 (:override)))) 96 (error "Nothing to complete")
97 ;; If interactive, display them. 97 (:override))))
98 (when (called-interactively-p 'any) 98 ;; If interactive, display them.
99 (with-output-to-temp-buffer "*Possible Completions*" 99 (when (called-interactively-p 'any)
100 (semantic-analyze-princ-sequence ans "" (current-buffer))) 100 (with-output-to-temp-buffer "*Possible Completions*"
101 (shrink-window-if-larger-than-buffer 101 (semantic-analyze-princ-sequence ans "" (current-buffer)))
102 (get-buffer-window "*Possible Completions*"))) 102 (shrink-window-if-larger-than-buffer
103 ans))) 103 (get-buffer-window "*Possible Completions*")))
104 ans))
105 ;; Buffer was not parsed by Semantic.
106 ;; Raise error if called interactively.
107 (when (called-interactively-p 'any)
108 (error "Buffer was not parsed by Semantic."))))
104 109
105(defun semantic-analyze-possible-completions-default (context &optional flags) 110(defun semantic-analyze-possible-completions-default (context &optional flags)
106 "Default method for producing smart completions. 111 "Default method for producing smart completions.
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 9c2da9faefa..59d17f2f8bb 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -2088,6 +2088,7 @@ completion works."
2088(defun semantic-complete-jump-local () 2088(defun semantic-complete-jump-local ()
2089 "Jump to a local semantic symbol." 2089 "Jump to a local semantic symbol."
2090 (interactive) 2090 (interactive)
2091 (semantic-error-if-unparsed)
2091 (let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: "))) 2092 (let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: ")))
2092 (when (semantic-tag-p tag) 2093 (when (semantic-tag-p tag)
2093 (push-mark) 2094 (push-mark)
@@ -2101,6 +2102,7 @@ completion works."
2101(defun semantic-complete-jump () 2102(defun semantic-complete-jump ()
2102 "Jump to a semantic symbol." 2103 "Jump to a semantic symbol."
2103 (interactive) 2104 (interactive)
2105 (semantic-error-if-unparsed)
2104 (let* ((tag (semantic-complete-read-tag-project "Jump to symbol: "))) 2106 (let* ((tag (semantic-complete-read-tag-project "Jump to symbol: ")))
2105 (when (semantic-tag-p tag) 2107 (when (semantic-tag-p tag)
2106 (push-mark) 2108 (push-mark)
@@ -2115,6 +2117,7 @@ completion works."
2115(defun semantic-complete-jump-local-members () 2117(defun semantic-complete-jump-local-members ()
2116 "Jump to a semantic symbol." 2118 "Jump to a semantic symbol."
2117 (interactive) 2119 (interactive)
2120 (semantic-error-if-unparsed)
2118 (let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: "))) 2121 (let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: ")))
2119 (when (semantic-tag-p tag) 2122 (when (semantic-tag-p tag)
2120 (let ((start (condition-case nil (semantic-tag-start tag) 2123 (let ((start (condition-case nil (semantic-tag-start tag)
@@ -2216,7 +2219,7 @@ use `semantic-complete-analyze-inline' to complete."
2216 (error nil)) 2219 (error nil))
2217 )) 2220 ))
2218 2221
2219;;;;###autoload 2222;;;###autoload
2220(defun semantic-complete-inline-project () 2223(defun semantic-complete-inline-project ()
2221 "Perform inline completion for any symbol in the current project. 2224 "Perform inline completion for any symbol in the current project.
2222`semantic-analyze-possible-completions' is used to determine the 2225`semantic-analyze-possible-completions' is used to determine the
diff --git a/lisp/cedet/semantic/senator.el b/lisp/cedet/semantic/senator.el
index 64f99a8ad6f..1138c13096a 100644
--- a/lisp/cedet/semantic/senator.el
+++ b/lisp/cedet/semantic/senator.el
@@ -255,6 +255,7 @@ TEXT, BOUND, NOERROR, and COUNT arguments are interpreted."
255 "Navigate to the next Semantic tag. 255 "Navigate to the next Semantic tag.
256Return the tag or nil if at end of buffer." 256Return the tag or nil if at end of buffer."
257 (interactive) 257 (interactive)
258 (semantic-error-if-unparsed)
258 (let ((pos (point)) 259 (let ((pos (point))
259 (tag (semantic-current-tag)) 260 (tag (semantic-current-tag))
260 where) 261 where)
@@ -294,6 +295,7 @@ Return the tag or nil if at end of buffer."
294 "Navigate to the previous Semantic tag. 295 "Navigate to the previous Semantic tag.
295Return the tag or nil if at beginning of buffer." 296Return the tag or nil if at beginning of buffer."
296 (interactive) 297 (interactive)
298 (semantic-error-if-unparsed)
297 (let ((pos (point)) 299 (let ((pos (point))
298 (tag (semantic-current-tag)) 300 (tag (semantic-current-tag))
299 where) 301 where)
@@ -519,6 +521,7 @@ If that parent which is only a reference in the function tag
519is found, we can jump to it. 521is found, we can jump to it.
520Some tags such as includes have other reference features." 522Some tags such as includes have other reference features."
521 (interactive) 523 (interactive)
524 (semantic-error-if-unparsed)
522 (let ((result (semantic-up-reference (or tag (semantic-current-tag))))) 525 (let ((result (semantic-up-reference (or tag (semantic-current-tag)))))
523 (if (not result) 526 (if (not result)
524 (error "No up reference found") 527 (error "No up reference found")
diff --git a/lisp/cedet/semantic/wisent/python.el b/lisp/cedet/semantic/wisent/python.el
index a0ea488f0fe..89c0499b7da 100644
--- a/lisp/cedet/semantic/wisent/python.el
+++ b/lisp/cedet/semantic/wisent/python.el
@@ -48,24 +48,15 @@
48 48
49(defun semantic-python-get-system-include-path () 49(defun semantic-python-get-system-include-path ()
50 "Evaluate some Python code that determines the system include path." 50 "Evaluate some Python code that determines the system include path."
51 (python-proc) 51 (delq nil
52 (if python-buffer 52 (mapcar
53 (with-current-buffer python-buffer 53 (lambda (dir)
54 (set (make-local-variable 'python-preoutput-result) nil) 54 (when (file-directory-p dir)
55 (python-send-string 55 dir))
56 "import sys; print '_emacs_out ' + '\\0'.join(sys.path)") 56 (split-string
57 (accept-process-output (python-proc) 2) 57 (python-shell-internal-send-string
58 (if python-preoutput-result 58 "import sys;print ('\\n'.join(sys.path))")
59 (split-string python-preoutput-result "[\0\n]" t) 59 "\n" t))))
60 ;; Try a second, Python3k compatible shot
61 (python-send-string
62 "import sys; print('_emacs_out ' + '\\0'.join(sys.path))")
63 (accept-process-output (python-proc) 2)
64 (if python-preoutput-result
65 (split-string python-preoutput-result "[\0\n]" t)
66 (message "Timeout while querying Python for system include path.")
67 nil)))
68 (message "Python seems to be unavailable on this system.")))
69 60
70(defcustom-mode-local-semantic-dependency-system-include-path 61(defcustom-mode-local-semantic-dependency-system-include-path
71 python-mode semantic-python-dependency-system-include-path 62 python-mode semantic-python-dependency-system-include-path
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index d740574f1e4..462b4a25154 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -232,7 +232,8 @@ The return value is undefined.
232;; fns))) 232;; fns)))
233 233
234(defmacro defsubst (name arglist &rest body) 234(defmacro defsubst (name arglist &rest body)
235 "Define an inline function. The syntax is just like that of `defun'." 235 "Define an inline function. The syntax is just like that of `defun'.
236\(fn NAME ARGLIST &optional DOCSTRING DECL &rest BODY)"
236 (declare (debug defun) (doc-string 3)) 237 (declare (debug defun) (doc-string 3))
237 (or (memq (get name 'byte-optimizer) 238 (or (memq (get name 'byte-optimizer)
238 '(nil byte-compile-inline-expand)) 239 '(nil byte-compile-inline-expand))
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 8b4df6099bc..343a6655701 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,10 @@
12012-10-15 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * erc.el (erc-log): Make it into a defsubst.
4 (erc-with-server-buffer, define-erc-module, erc-with-buffer)
5 (erc-with-all-buffers-of-server): Use `declare'.
6 * erc-backend.el (erc-log): Adjust autoload accordingly.
7
12012-10-07 Deniz Dogan <deniz@dogan.se> 82012-10-07 Deniz Dogan <deniz@dogan.se>
2 9
3 * erc-log.el (erc-generate-log-file-name-function): 10 * erc-log.el (erc-generate-log-file-name-function):
@@ -42,8 +49,8 @@
42 49
432012-08-21 Julien Danjou <julien@danjou.info> 502012-08-21 Julien Danjou <julien@danjou.info>
44 51
45 * erc-match.el (erc-match-message): Use 52 * erc-match.el (erc-match-message):
46 `erc-match-exclude-server-buffer' not 53 Use `erc-match-exclude-server-buffer' not
47 `erc-track-exclude-server-buffer'. 54 `erc-track-exclude-server-buffer'.
48 55
492012-08-20 Josh Feinstein <jlf@foxtail.org> 562012-08-20 Josh Feinstein <jlf@foxtail.org>
@@ -56,8 +63,8 @@
56 (erc-lurker-threshold-time): New variables. 63 (erc-lurker-threshold-time): New variables.
57 (erc-lurker-maybe-trim, erc-lurker-initialize, erc-lurker-cleanup) 64 (erc-lurker-maybe-trim, erc-lurker-initialize, erc-lurker-cleanup)
58 (erc-hide-current-message-p, erc-canonicalize-server-name) 65 (erc-hide-current-message-p, erc-canonicalize-server-name)
59 (erc-lurker-update-status, erc-lurker-p): New functions. Together 66 (erc-lurker-update-status, erc-lurker-p): New functions.
60 they maintain state about which users have spoken in the last 67 Together they maintain state about which users have spoken in the last
61 erc-lurker-threshold-time, with all other users being considered 68 erc-lurker-threshold-time, with all other users being considered
62 lurkers whose messages of types in erc-lurker-hide-list will not 69 lurkers whose messages of types in erc-lurker-hide-list will not
63 be displayed by erc-display-message. 70 be displayed by erc-display-message.
@@ -192,7 +199,7 @@
192 199
193 * erc.el (erc-ssl): Made into a synonym for erc-tls, which 200 * erc.el (erc-ssl): Made into a synonym for erc-tls, which
194 provides a superset of the same functionality. 201 provides a superset of the same functionality.
195 (erc-open-ssl-stream): Removed. 202 (erc-open-ssl-stream): Remove.
196 (erc-open-tls-stream): Use `open-network-stream' instead of 203 (erc-open-tls-stream): Use `open-network-stream' instead of
197 `open-tls-stream' directly to be able to use the built-in TLS 204 `open-tls-stream' directly to be able to use the built-in TLS
198 support. 205 support.
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 20ccd071b95..b8b5c90b596 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -100,7 +100,7 @@
100(require 'erc-compat) 100(require 'erc-compat)
101(eval-when-compile (require 'cl)) 101(eval-when-compile (require 'cl))
102(autoload 'erc-with-buffer "erc" nil nil 'macro) 102(autoload 'erc-with-buffer "erc" nil nil 'macro)
103(autoload 'erc-log "erc" nil nil 'macro) 103(autoload 'erc-log "erc")
104 104
105;;;; Variables and options 105;;;; Variables and options
106 106
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index bbd9dad4310..2e97131b603 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -362,13 +362,12 @@ nicknames with erc-server-user struct instances.")
362(defmacro erc-with-server-buffer (&rest body) 362(defmacro erc-with-server-buffer (&rest body)
363 "Execute BODY in the current ERC server buffer. 363 "Execute BODY in the current ERC server buffer.
364If no server buffer exists, return nil." 364If no server buffer exists, return nil."
365 (declare (indent 0) (debug (body)))
365 (let ((buffer (make-symbol "buffer"))) 366 (let ((buffer (make-symbol "buffer")))
366 `(let ((,buffer (erc-server-buffer))) 367 `(let ((,buffer (erc-server-buffer)))
367 (when (buffer-live-p ,buffer) 368 (when (buffer-live-p ,buffer)
368 (with-current-buffer ,buffer 369 (with-current-buffer ,buffer
369 ,@body))))) 370 ,@body)))))
370(put 'erc-with-server-buffer 'lisp-indent-function 0)
371(put 'erc-with-server-buffer 'edebug-form-spec '(body))
372 371
373(defstruct (erc-server-user (:type vector) :named) 372(defstruct (erc-server-user (:type vector) :named)
374 ;; User data 373 ;; User data
@@ -1236,6 +1235,7 @@ Example:
1236 'erc-replace-insert)) 1235 'erc-replace-insert))
1237 ((remove-hook 'erc-insert-modify-hook 1236 ((remove-hook 'erc-insert-modify-hook
1238 'erc-replace-insert)))" 1237 'erc-replace-insert)))"
1238 (declare (doc-string 3))
1239 (let* ((sn (symbol-name name)) 1239 (let* ((sn (symbol-name name))
1240 (mode (intern (format "erc-%s-mode" (downcase sn)))) 1240 (mode (intern (format "erc-%s-mode" (downcase sn))))
1241 (group (intern (format "erc-%s" (downcase sn)))) 1241 (group (intern (format "erc-%s" (downcase sn))))
@@ -1281,8 +1281,6 @@ if ARG is omitted or nil.
1281 (put ',enable 'definition-name ',name) 1281 (put ',enable 'definition-name ',name)
1282 (put ',disable 'definition-name ',name)))) 1282 (put ',disable 'definition-name ',name))))
1283 1283
1284(put 'define-erc-module 'doc-string-elt 3)
1285
1286(defun erc-once-with-server-event (event &rest forms) 1284(defun erc-once-with-server-event (event &rest forms)
1287 "Execute FORMS the next time EVENT occurs in the `current-buffer'. 1285 "Execute FORMS the next time EVENT occurs in the `current-buffer'.
1288 1286
@@ -1334,10 +1332,10 @@ connection over which the data was received that triggered EVENT."
1334 (add-hook hook fun nil nil) 1332 (add-hook hook fun nil nil)
1335 fun)) 1333 fun))
1336 1334
1337(defmacro erc-log (string) 1335(defsubst erc-log (string)
1338 "Logs STRING if logging is on (see `erc-log-p')." 1336 "Logs STRING if logging is on (see `erc-log-p')."
1339 `(when erc-log-p 1337 (when erc-log-p
1340 (erc-log-aux ,string))) 1338 (erc-log-aux string)))
1341 1339
1342(defun erc-server-buffer () 1340(defun erc-server-buffer ()
1343 "Return the server buffer for the current buffer's process. 1341 "Return the server buffer for the current buffer's process.
@@ -1621,6 +1619,7 @@ See `erc-get-buffer' for details.
1621See also `with-current-buffer'. 1619See also `with-current-buffer'.
1622 1620
1623\(fn (TARGET [PROCESS]) BODY...)" 1621\(fn (TARGET [PROCESS]) BODY...)"
1622 (declare (indent 1) (debug ((form &optional form) body)))
1624 (let ((buf (make-symbol "buf")) 1623 (let ((buf (make-symbol "buf"))
1625 (proc (make-symbol "proc")) 1624 (proc (make-symbol "proc"))
1626 (target (make-symbol "target")) 1625 (target (make-symbol "target"))
@@ -1637,8 +1636,6 @@ See also `with-current-buffer'.
1637 (when (buffer-live-p ,buf) 1636 (when (buffer-live-p ,buf)
1638 (with-current-buffer ,buf 1637 (with-current-buffer ,buf
1639 ,@body))))) 1638 ,@body)))))
1640(put 'erc-with-buffer 'lisp-indent-function 1)
1641(put 'erc-with-buffer 'edebug-form-spec '((form &optional form) body))
1642 1639
1643(defun erc-get-buffer (target &optional proc) 1640(defun erc-get-buffer (target &optional proc)
1644 "Return the buffer matching TARGET in the process PROC. 1641 "Return the buffer matching TARGET in the process PROC.
@@ -1688,6 +1685,7 @@ needs to match PROC."
1688FORMS will be evaluated in all buffers having the process PROCESS and 1685FORMS will be evaluated in all buffers having the process PROCESS and
1689where PRED matches or in all buffers of the server process if PRED is 1686where PRED matches or in all buffers of the server process if PRED is
1690nil." 1687nil."
1688 (declare (indent 1) (debug (form form body)))
1691 ;; Make the evaluation have the correct order 1689 ;; Make the evaluation have the correct order
1692 (let ((pre (make-symbol "pre")) 1690 (let ((pre (make-symbol "pre"))
1693 (pro (make-symbol "pro"))) 1691 (pro (make-symbol "pro")))
@@ -1701,8 +1699,6 @@ nil."
1701 ;; Silence the byte-compiler by binding the result of mapcar to 1699 ;; Silence the byte-compiler by binding the result of mapcar to
1702 ;; a variable. 1700 ;; a variable.
1703 res))) 1701 res)))
1704(put 'erc-with-all-buffers-of-server 'lisp-indent-function 1)
1705(put 'erc-with-all-buffers-of-server 'edebug-form-spec '(form form body))
1706 1702
1707;; (iswitchb-mode) will autoload iswitchb.el 1703;; (iswitchb-mode) will autoload iswitchb.el
1708(defvar iswitchb-temp-buflist) 1704(defvar iswitchb-temp-buflist)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index c6b2a4c37a7..dade2b4bbe5 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
12012-10-17 Kazuhiro Ito <kzhr@d1.dion.ne.jp> (tiny change)
2
3 * starttls.el (starttls-extra-arguments): Doc fix.
4
12012-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org> 52012-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 6
3 * shr.el (shr-insert): \r is also not inserted, so don't try to delete 7 * shr.el (shr-insert): \r is also not inserted, so don't try to delete
diff --git a/lisp/gnus/starttls.el b/lisp/gnus/starttls.el
index 2d403650533..346e76b2ccc 100644
--- a/lisp/gnus/starttls.el
+++ b/lisp/gnus/starttls.el
@@ -149,7 +149,7 @@ These apply when the `starttls' command is used, i.e. when
149 :group 'starttls) 149 :group 'starttls)
150 150
151(defcustom starttls-extra-arguments nil 151(defcustom starttls-extra-arguments nil
152 "Extra arguments to `starttls-program'. 152 "Extra arguments to `starttls-gnutls-program'.
153These apply when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil. 153These apply when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil.
154 154
155For example, non-TLS compliant servers may require 155For example, non-TLS compliant servers may require
diff --git a/lisp/replace.el b/lisp/replace.el
index e714015fccf..4013e4e5df5 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1603,9 +1603,13 @@ Comma to replace but not move point immediately,
1603C-r to enter recursive edit (\\[exit-recursive-edit] to get out again), 1603C-r to enter recursive edit (\\[exit-recursive-edit] to get out again),
1604C-w to delete match and recursive edit, 1604C-w to delete match and recursive edit,
1605C-l to clear the screen, redisplay, and offer same replacement again, 1605C-l to clear the screen, redisplay, and offer same replacement again,
1606! to replace all remaining matches with no more questions, 1606! to replace all remaining matches in this buffer with no more questions,
1607^ to move point back to previous match, 1607^ to move point back to previous match,
1608E to edit the replacement string" 1608E to edit the replacement string.
1609In multi-buffer replacements type `Y' to replace all remaining
1610matches in all remaining buffers with no more questions,
1611`N' to skip to the next buffer without replacing remaining matches
1612in the current buffer."
1609 "Help message while in `query-replace'.") 1613 "Help message while in `query-replace'.")
1610 1614
1611(defvar query-replace-map 1615(defvar query-replace-map
diff --git a/lisp/wdired.el b/lisp/wdired.el
index b893e8f6f2b..266d1993389 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -180,7 +180,7 @@ program `dired-chmod-program', which must exist."
180(defvar wdired-col-perm) ;; Column where the permission bits start 180(defvar wdired-col-perm) ;; Column where the permission bits start
181(defvar wdired-old-content) 181(defvar wdired-old-content)
182(defvar wdired-old-point) 182(defvar wdired-old-point)
183 183(defvar wdired-old-marks)
184 184
185(defun wdired-mode () 185(defun wdired-mode ()
186 "Writable Dired (WDired) mode. 186 "Writable Dired (WDired) mode.
@@ -221,6 +221,8 @@ See `wdired-mode'."
221 (error "Not a Dired buffer")) 221 (error "Not a Dired buffer"))
222 (set (make-local-variable 'wdired-old-content) 222 (set (make-local-variable 'wdired-old-content)
223 (buffer-substring (point-min) (point-max))) 223 (buffer-substring (point-min) (point-max)))
224 (set (make-local-variable 'wdired-old-marks)
225 (dired-remember-marks (point-min) (point-max)))
224 (set (make-local-variable 'wdired-old-point) (point)) 226 (set (make-local-variable 'wdired-old-point) (point))
225 (set (make-local-variable 'query-replace-skip-read-only) t) 227 (set (make-local-variable 'query-replace-skip-read-only) t)
226 (set (make-local-variable 'isearch-filter-predicate) 228 (set (make-local-variable 'isearch-filter-predicate)
@@ -455,7 +457,8 @@ non-nil means return old filename."
455 (push (cons tmp file-new) residue)))) 457 (push (cons tmp file-new) residue))))
456 (t 458 (t
457 (setq progress t) 459 (setq progress t)
458 (let ((file-ori (car rename))) 460 (let* ((file-ori (car rename))
461 (old-mark (cdr (assoc file-ori wdired-old-marks))))
459 (if wdired-use-interactive-rename 462 (if wdired-use-interactive-rename
460 (wdired-search-and-rename file-ori file-new) 463 (wdired-search-and-rename file-ori file-new)
461 ;; If dired-rename-file autoloads dired-aux while 464 ;; If dired-rename-file autoloads dired-aux while
@@ -466,12 +469,17 @@ non-nil means return old filename."
466 (condition-case err 469 (condition-case err
467 (let ((dired-backup-overwrite nil)) 470 (let ((dired-backup-overwrite nil))
468 (dired-rename-file file-ori file-new 471 (dired-rename-file file-ori file-new
469 overwrite)) 472 overwrite)
473 (dired-remove-file file-ori)
474 (dired-add-file file-new (if (integerp dired-keep-marker-rename)
475 dired-keep-marker-rename
476 old-mark)))
470 (error 477 (error
471 (setq errors (1+ errors)) 478 (setq errors (1+ errors))
472 (dired-log (concat "Rename `" file-ori "' to `" 479 (dired-log (concat "Rename `" file-ori "' to `"
473 file-new "' failed:\n%s\n") 480 file-new "' failed:\n%s\n")
474 err))))))))) 481 err)
482 (dired-add-entry file-ori old-mark)))))))))
475 errors)) 483 errors))
476 484
477 485
diff --git a/lisp/window.el b/lisp/window.el
index b033f9c26e3..a17e0adcdfe 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5361,8 +5361,16 @@ BUFFER-OR-NAME must be a buffer or the name of an existing
5361buffer. Return the window chosen for displaying BUFFER-OR-NAME, 5361buffer. Return the window chosen for displaying BUFFER-OR-NAME,
5362or nil if no such window is found. 5362or nil if no such window is found.
5363 5363
5364Optional argument ACTION should have the form (FUNCTION . ALIST). 5364Optional argument ACTION, if non-nil, should specify a display
5365FUNCTION is either a function or a list of functions. 5365action. Its form is described below.
5366
5367Optional argument FRAME, if non-nil, acts like an additional
5368ALIST entry (reusable-frames . FRAME) to the action list of ACTION,
5369specifying the frame(s) to search for a window that is already
5370displaying the buffer. See `display-buffer-reuse-window'
5371
5372If ACTION is non-nil, it should have the form (FUNCTION . ALIST),
5373where FUNCTION is either a function or a list of functions, and
5366ALIST is an arbitrary association list (alist). 5374ALIST is an arbitrary association list (alist).
5367 5375
5368Each such FUNCTION should accept two arguments: the buffer to 5376Each such FUNCTION should accept two arguments: the buffer to
@@ -5379,6 +5387,9 @@ function in the combined function list in turn, passing the
5379buffer as the first argument and the combined alist as the second 5387buffer as the first argument and the combined alist as the second
5380argument, until one of the functions returns non-nil. 5388argument, until one of the functions returns non-nil.
5381 5389
5390If ACTION is nil, the function list and the alist are built using
5391only the other variables mentioned above.
5392
5382Available action functions include: 5393Available action functions include:
5383 `display-buffer-same-window' 5394 `display-buffer-same-window'
5384 `display-buffer-reuse-window' 5395 `display-buffer-reuse-window'
@@ -5407,12 +5418,7 @@ The ACTION argument to `display-buffer' can also have a non-nil
5407and non-list value. This means to display the buffer in a window 5418and non-list value. This means to display the buffer in a window
5408other than the selected one, even if it is already displayed in 5419other than the selected one, even if it is already displayed in
5409the selected window. If called interactively with a prefix 5420the selected window. If called interactively with a prefix
5410argument, ACTION is t. 5421argument, ACTION is t."
5411
5412Optional argument FRAME, if non-nil, acts like an additional
5413ALIST entry (reusable-frames . FRAME), specifying the frame(s) to
5414search for a window that is already displaying the buffer. See
5415`display-buffer-reuse-window'."
5416 (interactive (list (read-buffer "Display buffer: " (other-buffer)) 5422 (interactive (list (read-buffer "Display buffer: " (other-buffer))
5417 (if current-prefix-arg t))) 5423 (if current-prefix-arg t)))
5418 (let ((buffer (if (bufferp buffer-or-name) 5424 (let ((buffer (if (bufferp buffer-or-name)
diff --git a/nt/ChangeLog b/nt/ChangeLog
index e659b87eb76..4b0a65a59da 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -32,13 +32,13 @@
32 (offset_to_section, relocate_offset, OFFSET_TO_RVA) 32 (offset_to_section, relocate_offset, OFFSET_TO_RVA)
33 (RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA) 33 (RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA)
34 (OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN) 34 (OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN)
35 (copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main): Use 35 (copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main):
36 DWORD_PTR instead of DWORD for compatibility with x64. 36 Use DWORD_PTR instead of DWORD for compatibility with x64.
37 37
38 * nmake.defs: Support AMD64. 38 * nmake.defs: Support AMD64.
39 (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros. 39 (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros.
40 40
41 * gmake.defs: (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): 41 * gmake.defs (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST):
42 New macros. 42 New macros.
43 43
44 * addsection.c (pfnCheckSumMappedFile, rva_to_section) 44 * addsection.c (pfnCheckSumMappedFile, rva_to_section)
@@ -478,7 +478,7 @@
478 478
4792012-02-05 Christoph Scholtes <cschol2112@googlemail.com> 4792012-02-05 Christoph Scholtes <cschol2112@googlemail.com>
480 480
481 * README.W32: Clarification for inclusion in source tarball. (Bug#9750) 481 * README.W32: Clarification for inclusion in source tarball (bug#9750).
482 482
483 * gmake.defs (PRAGMA_SYSTEM_HEADER): Add for GCC. 483 * gmake.defs (PRAGMA_SYSTEM_HEADER): Add for GCC.
484 484
@@ -487,7 +487,7 @@
487 * makefile.w32-in (maybe-copy-distfiles) 487 * makefile.w32-in (maybe-copy-distfiles)
488 (maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH) 488 (maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH)
489 (create-tmp-dist-dir): Add to make --distfiles optional. 489 (create-tmp-dist-dir): Add to make --distfiles optional.
490 (dist): Use create-tmp-dist-dir and maybe-copy-distfiles. (Bug#10261) 490 (dist): Use create-tmp-dist-dir and maybe-copy-distfiles (bug#10261).
491 491
4922012-02-04 Eli Zaretskii <eliz@gnu.org> 4922012-02-04 Eli Zaretskii <eliz@gnu.org>
493 493
diff --git a/src/ChangeLog b/src/ChangeLog
index 21d13a04e77..b845eeb3ceb 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -3,6 +3,58 @@
3 * xdisp.c (reseat_1): Make the information stored in it->cmp_it 3 * xdisp.c (reseat_1): Make the information stored in it->cmp_it
4 invalidate. 4 invalidate.
5 5
62012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
7
8 * buffer.c (Fkill_buffer): When unchaining the marker,
9 reset its buffer pointer to NULL (Bug#12652).
10
112012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
12
13 Do not verify indirection counters of killed buffers (Bug#12579).
14 * buffer.h (BUFFER_CHECK_INDIRECTION): New macro.
15 * buffer.c (compact_buffer, set_buffer_internal_1): Use it.
16
172012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
18
19 * alloc.c (Fmake_byte_code): Fix typo in comment.
20 * print.c (print_interval): Define as static to match prototype.
21 * indent.c (disptab_matches_widthtab, recompute_width_table):
22 Convert to eassert.
23
242012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
25
26 * editfns.c (get_system_name): Remove.
27 * lisp.h (get_system_name): Remove prototype.
28 * xrdb.c (getenv, getpwuid, getpwnam): Remove prototypes.
29 (get_environ_db): Use Vsystem_name. Avoid call to strlen.
30
312012-10-15 Daniel Colascione <dancol@dancol.org>
32
33 * dbusbind.c: Add comment explaining reason for previous change.
34
352012-10-15 Martin Rudalics <rudalics@gmx.at>
36
37 * window.c (Fwindow_end): Rewrite check whether cached position
38 can be used (Bug#12600).
39 (resize_frame_windows, grow_mini_window, shrink_mini_window):
40 Set windows_or_buffers_changed.
41
422012-10-15 Daniel Colascione <dancol@dancol.org>
43
44 * dbusbind.c: Fix cygw32 build break when compiling with dbus
45 enabled by undefining the symbol "interface", which the platform
46 headers define to something incompatible.
47
482012-10-14 Daniel Colascione <dancol@dancol.org>
49
50 * image.c (init_tiff_functions, init_imagemagick_functions)
51 (init_svg_functions): Fix cygw32 build break by using these
52 functions only when WINDOWSNT _and_ HAVE_NTGUI.
53
542012-10-14 Jan Djärv <jan.h.d@swipnet.se>
55
56 * nsterm.m (ns_select): Count fd:s in writefs also (Bug#12422).
57
62012-10-13 Jan Djärv <jan.h.d@swipnet.se> 582012-10-13 Jan Djärv <jan.h.d@swipnet.se>
7 59
8 * gtkutil.c (xg_set_widget_bg): Divide by 65535 (Bug#12612). 60 * gtkutil.c (xg_set_widget_bg): Divide by 65535 (Bug#12612).
@@ -58,8 +110,7 @@
58 a file exists. This avoids expensive system calls on MS-Windows. 110 a file exists. This avoids expensive system calls on MS-Windows.
59 (Bug#12587) 111 (Bug#12587)
60 112
61 * w32.c (init_environment): Call 'check_existing' instead of 113 * w32.c (init_environment): Call 'check_existing' instead of 'stat'.
62 'stat'.
63 114
64 * lread.c (openp) [WINDOWSNT]: Call 'access' instead of 'stat' to 115 * lread.c (openp) [WINDOWSNT]: Call 'access' instead of 'stat' to
65 determine whether a file exists and is not a directory. 116 determine whether a file exists and is not a directory.
@@ -199,7 +250,7 @@
199 * nsfont.m (Vfonts_in_cache): Remove, not needed as font.c handles 250 * nsfont.m (Vfonts_in_cache): Remove, not needed as font.c handles
200 caching. 251 caching.
201 (nsfont_open): Remove setting of Vfonts_in_cache. 252 (nsfont_open): Remove setting of Vfonts_in_cache.
202 (syms_of_nsfont): Remove initialization of Vfonts_in_cache 253 (syms_of_nsfont): Remove initialization of Vfonts_in_cache.
203 254
2042012-10-09 Eli Zaretskii <eliz@gnu.org> 2552012-10-09 Eli Zaretskii <eliz@gnu.org>
205 256
@@ -266,7 +317,7 @@
266 * w32select.h (HAVE_W32SELECT): Remove. 317 * w32select.h (HAVE_W32SELECT): Remove.
267 318
268 * w32select.c, w32proc.c, w32menu.c, w32console.c, w32.c: Include 319 * w32select.c, w32proc.c, w32menu.c, w32console.c, w32.c: Include
269 w32common.h instead of w32heap.h 320 w32common.h instead of w32heap.h.
270 321
271 * w32heap.h (ROUND_UP, ROUND_DOWN, get_page_size) 322 * w32heap.h (ROUND_UP, ROUND_DOWN, get_page_size)
272 (get_allocation_unit, get_processor_type, get_w32_major_version) 323 (get_allocation_unit, get_processor_type, get_w32_major_version)
@@ -277,8 +328,8 @@
277 328
278 * w32heap.c: Include w32common.h. 329 * w32heap.c: Include w32common.h.
279 (sysinfo_cache, syspage_mask, osinfo_cache, w32_major_version) 330 (sysinfo_cache, syspage_mask, osinfo_cache, w32_major_version)
280 (w32_minor_version, w32_build_number, w32_subtype): Remove 331 (w32_minor_version, w32_build_number, w32_subtype):
281 duplicate definitions. 332 Remove duplicate definitions.
282 333
283 * w32fns.c: Include w32common.h; include w32heap.h only in 334 * w32fns.c: Include w32common.h; include w32heap.h only in
284 WINDOWSNT. 335 WINDOWSNT.
@@ -389,7 +440,7 @@
389 Cygwin builds. Remove w32select declarations. 440 Cygwin builds. Remove w32select declarations.
390 441
391 * w32console.c (w32_sys_ring_bell, Fset_message_beep): Move to 442 * w32console.c (w32_sys_ring_bell, Fset_message_beep): Move to
392 w32fns.c. w32console.c is WINDOWSNT-only. 443 w32fns.c. w32console.c is WINDOWSNT-only.
393 444
394 * w32fns.c: Include cygw32.h or w32.h depending on CYGWIN; more 445 * w32fns.c: Include cygw32.h or w32.h depending on CYGWIN; more
395 NTGUI_UNICODE tweaks. (See above.) Change _snprintf to the more 446 NTGUI_UNICODE tweaks. (See above.) Change _snprintf to the more
@@ -490,12 +541,12 @@
490 541
491 * nsterm.m (ns_in_resize): Remove (Bug#12479). 542 * nsterm.m (ns_in_resize): Remove (Bug#12479).
492 (ns_resize_handle_rect, mouseDown, mouseUp, mouseDragged): Remove. 543 (ns_resize_handle_rect, mouseDown, mouseUp, mouseDragged): Remove.
493 (ns_clear_frame, sendEvent, windowDidResize, drawRect:): Remove 544 (ns_clear_frame, sendEvent, windowDidResize, drawRect:):
494 ns_in_resize check. 545 Remove ns_in_resize check.
495 (ns_clear_frame_area): Remove resize handle code. 546 (ns_clear_frame_area): Remove resize handle code.
496 547
497 * nsfns.m (ns_in_resize): Remove. 548 * nsfns.m (ns_in_resize): Remove.
498 (x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove 549 (x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove
499 ns_in_resize check. 550 ns_in_resize check.
500 551
5012012-10-07 Paul Eggert <eggert@cs.ucla.edu> 5522012-10-07 Paul Eggert <eggert@cs.ucla.edu>
@@ -524,7 +575,7 @@
524 (initFrameFromEmacs:): tbar_height renamed tibar_height. 575 (initFrameFromEmacs:): tbar_height renamed tibar_height.
525 (windowDidEnterFullScreen:): Toggle toolbar for fullscreen to fix 576 (windowDidEnterFullScreen:): Toggle toolbar for fullscreen to fix
526 error in drawing background. 577 error in drawing background.
527 (toggleFullScreen:): Remove comment. Rearrange calls. 578 (toggleFullScreen:): Remove comment. Rearrange calls.
528 Set toolbar values to zero, save old height in tobar_height. 579 Set toolbar values to zero, save old height in tobar_height.
529 Restore tool bar height when leaving fullscreen. 580 Restore tool bar height when leaving fullscreen.
530 (canBecomeMainWindow): New function. 581 (canBecomeMainWindow): New function.
@@ -538,8 +589,8 @@
538 * w32proc.c (stop_timer_thread): Fix declaration of 'err'. 589 * w32proc.c (stop_timer_thread): Fix declaration of 'err'.
539 590
540 * w32.c (utime): Open the file with FILE_FLAG_BACKUP_SEMANTICS, so 591 * w32.c (utime): Open the file with FILE_FLAG_BACKUP_SEMANTICS, so
541 that time stamps of directories could also be changed. Don't 592 that time stamps of directories could also be changed.
542 request the too broad GENERIC_WRITE, only the more restrictive 593 Don't request the too broad GENERIC_WRITE, only the more restrictive
543 FILE_WRITE_ATTRIBUTES access rights. 594 FILE_WRITE_ATTRIBUTES access rights.
544 595
545 * fileio.c (Fset_file_times): Special-case ignoring errors for 596 * fileio.c (Fset_file_times): Special-case ignoring errors for
@@ -947,7 +998,7 @@
947 Call setCollectionBehavior if NEW_STYLE_FS. Initialize bwidth and 998 Call setCollectionBehavior if NEW_STYLE_FS. Initialize bwidth and
948 tbar_height. 999 tbar_height.
949 (windowWillUseStandardFrame:defaultFrame:): Update frame parameter 1000 (windowWillUseStandardFrame:defaultFrame:): Update frame parameter
950 fullscreen. Set maximized_width/height. Act on next_maximized. 1001 fullscreen. Set maximized_width/height. Act on next_maximized.
951 1002
952 * nsterm.h (MAC_OS_X_VERSION_10_7, MAC_OS_X_VERSION_10_8): New. 1003 * nsterm.h (MAC_OS_X_VERSION_10_7, MAC_OS_X_VERSION_10_8): New.
953 (EmacsView): Add variables for fullscreen. 1004 (EmacsView): Add variables for fullscreen.
@@ -1603,7 +1654,7 @@
16032012-09-19 Paul Eggert <eggert@cs.ucla.edu> 16542012-09-19 Paul Eggert <eggert@cs.ucla.edu>
1604 1655
1605 * w32inevt.c (w32_console_read_socket): Return -1 on failure, not 0. 1656 * w32inevt.c (w32_console_read_socket): Return -1 on failure, not 0.
1606 Ignore 'expected'. See Eli Zaretskii in 1657 Ignore 'expected'. See Eli Zaretskii in
1607 <http://bugs.gnu.org/12471#8> (last line). 1658 <http://bugs.gnu.org/12471#8> (last line).
1608 1659
1609 * frame.c (read_integer): Remove. All uses replaced by strtol/strtoul. 1660 * frame.c (read_integer): Remove. All uses replaced by strtol/strtoul.
@@ -1670,7 +1721,7 @@
1670 (bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc) 1721 (bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc)
1671 (emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc): 1722 (emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc):
1672 [!SYSTEM_MALLOC && !SYNC_INPUT]: 1723 [!SYSTEM_MALLOC && !SYNC_INPUT]:
1673 Remove. All uses removed. 1724 Remove. All uses removed.
1674 (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different 1725 (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different
1675 implementation, one that depends on whether the new macro 1726 implementation, one that depends on whether the new macro
1676 XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT 1727 XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT
@@ -1960,7 +2011,7 @@
1960 * alloc.c (discard_killed_buffers): New function. 2011 * alloc.c (discard_killed_buffers): New function.
1961 (mark_object): Use it for deleted windows and frames. 2012 (mark_object): Use it for deleted windows and frames.
1962 (mark_object): If symbol's value is set up for a killed buffer 2013 (mark_object): If symbol's value is set up for a killed buffer
1963 or deleted frame, restore it's global binding. 2014 or deleted frame, restore its global binding.
1964 * data.c (swap_in_global_binding): Add GC notice. 2015 * data.c (swap_in_global_binding): Add GC notice.
1965 (swap_in_symval_forwarding): Use convenient set_blv_where. 2016 (swap_in_symval_forwarding): Use convenient set_blv_where.
1966 * window.c (wset_next_buffers, wset_prev_buffers): Move ... 2017 * window.c (wset_next_buffers, wset_prev_buffers): Move ...
@@ -4267,7 +4318,7 @@
4267 4318
4268 * nsterm.m (ns_set_vertical_scroll_bar, ns_redeem_scroll_bar) 4319 * nsterm.m (ns_set_vertical_scroll_bar, ns_redeem_scroll_bar)
4269 (EmacsWindow-accessibilityAttributeValue, EmacsScroller-initFrame:) 4320 (EmacsWindow-accessibilityAttributeValue, EmacsScroller-initFrame:)
4270 (EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114) 4321 (EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114)
4271 * nsfns.m (ns_set_name_as_filename): Likewise. 4322 * nsfns.m (ns_set_name_as_filename): Likewise.
4272 * nsmenu.m (ns_update_menubar): Likewise. 4323 * nsmenu.m (ns_update_menubar): Likewise.
4273 * nsselect.m (symbol_to_nsstring): Adjust to use SVAR. 4324 * nsselect.m (symbol_to_nsstring): Adjust to use SVAR.
@@ -6363,7 +6414,7 @@
6363 Fix block vector allocation code to allow VECTOR_BLOCK_SIZE 6414 Fix block vector allocation code to allow VECTOR_BLOCK_SIZE
6364 values which aren't power of 2. 6415 values which aren't power of 2.
6365 * alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro. 6416 * alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro.
6366 Verify it's value and the value of VECTOR_BLOCK_SIZE. Adjust users 6417 Verify its value and the value of VECTOR_BLOCK_SIZE. Adjust users
6367 accordingly. 6418 accordingly.
6368 6419
63692012-07-03 Stefan Monnier <monnier@iro.umontreal.ca> 64202012-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -7532,7 +7583,7 @@
7532 bitfields where appropriate, remove unused fields. 7583 bitfields where appropriate, remove unused fields.
7533 * window.h (struct window): Remove unused 'last_mark_x' and 7584 * window.h (struct window): Remove unused 'last_mark_x' and
7534 'last_mark_y' fields. Rename 'mini_p' field to 'mini', 7585 'last_mark_y' fields. Rename 'mini_p' field to 'mini',
7535 change it's type from Lisp_Object to bitfield. 7586 change its type from Lisp_Object to bitfield.
7536 Change type of 'force_start', 'optional_new_start', 7587 Change type of 'force_start', 'optional_new_start',
7537 'last_had_star', 'update_mode_line' and 'start_at_line_beg' 7588 'last_had_star', 'update_mode_line' and 'start_at_line_beg'
7538 fields from Lisp_Object to bitfield. Adjust users accordingly. 7589 fields from Lisp_Object to bitfield. Adjust users accordingly.
diff --git a/src/alloc.c b/src/alloc.c
index 95be8db1614..0afe446d269 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3100,7 +3100,7 @@ usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INT
3100 ptrdiff_t i; 3100 ptrdiff_t i;
3101 register struct Lisp_Vector *p; 3101 register struct Lisp_Vector *p;
3102 3102
3103 /* We used to purecopy everything here, if purify-flga was set. This worked 3103 /* We used to purecopy everything here, if purify-flag was set. This worked
3104 OK for Emacs-23, but with Emacs-24's lexical binding code, it can be 3104 OK for Emacs-23, but with Emacs-24's lexical binding code, it can be
3105 dangerous, since make-byte-code is used during execution to build 3105 dangerous, since make-byte-code is used during execution to build
3106 closures, so any closure built during the preload phase would end up 3106 closures, so any closure built during the preload phase would end up
diff --git a/src/buffer.c b/src/buffer.c
index 861a89b5a0f..0b3dde27968 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1663,18 +1663,11 @@ No argument or nil as argument means do this for the current buffer. */)
1663void 1663void
1664compact_buffer (struct buffer *buffer) 1664compact_buffer (struct buffer *buffer)
1665{ 1665{
1666 /* Verify indirection counters. */ 1666 BUFFER_CHECK_INDIRECTION (buffer);
1667 if (buffer->base_buffer)
1668 {
1669 eassert (buffer->indirections == -1);
1670 eassert (buffer->base_buffer->indirections > 0);
1671 }
1672 else
1673 eassert (buffer->indirections >= 0);
1674 1667
1675 /* Skip dead buffers, indirect buffers and buffers 1668 /* Skip dead buffers, indirect buffers and buffers
1676 which aren't changed since last compaction. */ 1669 which aren't changed since last compaction. */
1677 if (!NILP (buffer->INTERNAL_FIELD (name)) 1670 if (BUFFER_LIVE_P (buffer)
1678 && (buffer->base_buffer == NULL) 1671 && (buffer->base_buffer == NULL)
1679 && (buffer->text->compact != buffer->text->modiff)) 1672 && (buffer->text->compact != buffer->text->modiff))
1680 { 1673 {
@@ -1888,19 +1881,20 @@ cleaning up all windows currently displaying the buffer to be killed. */)
1888 1881
1889 if (b->base_buffer) 1882 if (b->base_buffer)
1890 { 1883 {
1891 { /* Unchain all markers that belong to this indirect buffer. 1884 /* Unchain all markers that belong to this indirect buffer.
1892 Don't unchain the markers that belong to the base buffer 1885 Don't unchain the markers that belong to the base buffer
1893 or its other indirect buffers. */ 1886 or its other indirect buffers. */
1894 struct Lisp_Marker **mp; 1887 struct Lisp_Marker **mp = &BUF_MARKERS (b);
1895 for (mp = &BUF_MARKERS (b); *mp; ) 1888 while ((m = *mp))
1896 { 1889 {
1897 struct Lisp_Marker *m = *mp; 1890 if (m->buffer == b)
1898 if (m->buffer == b) 1891 {
1892 m->buffer = NULL;
1899 *mp = m->next; 1893 *mp = m->next;
1900 else 1894 }
1901 mp = &m->next; 1895 else
1902 } 1896 mp = &m->next;
1903 } 1897 }
1904 } 1898 }
1905 else 1899 else
1906 { 1900 {
@@ -2114,6 +2108,8 @@ set_buffer_internal_1 (register struct buffer *b)
2114 if (current_buffer == b) 2108 if (current_buffer == b)
2115 return; 2109 return;
2116 2110
2111 BUFFER_CHECK_INDIRECTION (b);
2112
2117 old_buf = current_buffer; 2113 old_buf = current_buffer;
2118 current_buffer = b; 2114 current_buffer = b;
2119 last_known_column_point = -1; /* invalidate indentation cache */ 2115 last_known_column_point = -1; /* invalidate indentation cache */
diff --git a/src/buffer.h b/src/buffer.h
index d18ef30ea38..9e0e9eef0b1 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -963,6 +963,22 @@ bset_width_table (struct buffer *b, Lisp_Object val)
963 963
964#define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name))) 964#define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name)))
965 965
966/* Verify indirection counters. */
967
968#define BUFFER_CHECK_INDIRECTION(b) \
969 do { \
970 if (BUFFER_LIVE_P (b)) \
971 { \
972 if (b->base_buffer) \
973 { \
974 eassert (b->indirections == -1); \
975 eassert (b->base_buffer->indirections > 0); \
976 } \
977 else \
978 eassert (b->indirections >= 0); \
979 } \
980 } while (0)
981
966/* Chain of all buffers, including killed ones. */ 982/* Chain of all buffers, including killed ones. */
967 983
968extern struct buffer *all_buffers; 984extern struct buffer *all_buffers;
diff --git a/src/dbusbind.c b/src/dbusbind.c
index c2eefd605bb..08f34f47042 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -32,6 +32,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
32#define DBUS_NUM_MESSAGE_TYPES 5 32#define DBUS_NUM_MESSAGE_TYPES 5
33#endif 33#endif
34 34
35
36/* Some platforms define the symbol "interface", but we want to use it
37 * as a variable name below. */
38
39#ifdef interface
40#undef interface
41#endif
42
35 43
36/* Subroutines. */ 44/* Subroutines. */
37static Lisp_Object Qdbus_init_bus; 45static Lisp_Object Qdbus_init_bus;
diff --git a/src/editfns.c b/src/editfns.c
index 19fad7130a7..c5d4ed295ab 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1339,15 +1339,6 @@ DEFUN ("system-name", Fsystem_name, Ssystem_name, 0, 0, 0,
1339 return Vsystem_name; 1339 return Vsystem_name;
1340} 1340}
1341 1341
1342const char *
1343get_system_name (void)
1344{
1345 if (STRINGP (Vsystem_name))
1346 return SSDATA (Vsystem_name);
1347 else
1348 return "";
1349}
1350
1351DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0, 1342DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0,
1352 doc: /* Return the process ID of Emacs, as a number. */) 1343 doc: /* Return the process ID of Emacs, as a number. */)
1353 (void) 1344 (void)
diff --git a/src/image.c b/src/image.c
index d52c3a29a27..538ae2b7772 100644
--- a/src/image.c
+++ b/src/image.c
@@ -6577,7 +6577,7 @@ static const struct image_keyword tiff_format[TIFF_LAST] =
6577 {":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0} 6577 {":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0}
6578}; 6578};
6579 6579
6580#ifdef HAVE_NTGUI 6580#if defined HAVE_NTGUI && defined WINDOWSNT
6581static bool init_tiff_functions (void); 6581static bool init_tiff_functions (void);
6582#else 6582#else
6583#define init_tiff_functions NULL 6583#define init_tiff_functions NULL
@@ -7529,7 +7529,7 @@ static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] =
7529 {":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0} 7529 {":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0}
7530 }; 7530 };
7531 7531
7532#ifdef HAVE_NTGUI 7532#if defined HAVE_NTGUI && defined WINDOWSNT
7533static bool init_imagemagick_functions (void); 7533static bool init_imagemagick_functions (void);
7534#else 7534#else
7535#define init_imagemagick_functions NULL 7535#define init_imagemagick_functions NULL
@@ -8083,7 +8083,7 @@ static const struct image_keyword svg_format[SVG_LAST] =
8083 {":background", IMAGE_STRING_OR_NIL_VALUE, 0} 8083 {":background", IMAGE_STRING_OR_NIL_VALUE, 0}
8084}; 8084};
8085 8085
8086#ifdef HAVE_NTGUI 8086#if defined HAVE_NTGUI && defined WINDOWSNT
8087static bool init_svg_functions (void); 8087static bool init_svg_functions (void);
8088#else 8088#else
8089#define init_svg_functions NULL 8089#define init_svg_functions NULL
diff --git a/src/indent.c b/src/indent.c
index 81a63455ecb..bbc944d2518 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -119,8 +119,7 @@ disptab_matches_widthtab (struct Lisp_Char_Table *disptab, struct Lisp_Vector *w
119{ 119{
120 int i; 120 int i;
121 121
122 if (widthtab->header.size != 256) 122 eassert (widthtab->header.size == 256);
123 emacs_abort ();
124 123
125 for (i = 0; i < 256; i++) 124 for (i = 0; i < 256; i++)
126 if (character_width (i, disptab) 125 if (character_width (i, disptab)
@@ -141,8 +140,7 @@ recompute_width_table (struct buffer *buf, struct Lisp_Char_Table *disptab)
141 if (!VECTORP (BVAR (buf, width_table))) 140 if (!VECTORP (BVAR (buf, width_table)))
142 bset_width_table (buf, Fmake_vector (make_number (256), make_number (0))); 141 bset_width_table (buf, Fmake_vector (make_number (256), make_number (0)));
143 widthtab = XVECTOR (BVAR (buf, width_table)); 142 widthtab = XVECTOR (BVAR (buf, width_table));
144 if (widthtab->header.size != 256) 143 eassert (widthtab->header.size == 256);
145 emacs_abort ();
146 144
147 for (i = 0; i < 256; i++) 145 for (i = 0; i < 256; i++)
148 XSETFASTINT (widthtab->contents[i], character_width (i, disptab)); 146 XSETFASTINT (widthtab->contents[i], character_width (i, disptab));
diff --git a/src/lisp.h b/src/lisp.h
index 7afe7b373fe..01f6ca5e57c 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3127,7 +3127,6 @@ extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
3127extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, 3127extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
3128 ptrdiff_t, bool); 3128 ptrdiff_t, bool);
3129extern void init_editfns (void); 3129extern void init_editfns (void);
3130const char *get_system_name (void);
3131extern void syms_of_editfns (void); 3130extern void syms_of_editfns (void);
3132extern void set_time_zone_rule (const char *); 3131extern void set_time_zone_rule (const char *);
3133 3132
diff --git a/src/nsterm.m b/src/nsterm.m
index 98dd0a8aab1..dfc84db50f7 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -3444,7 +3444,10 @@ ns_select (int nfds, fd_set *readfds, fd_set *writefds,
3444/* NSTRACE (ns_select); */ 3444/* NSTRACE (ns_select); */
3445 3445
3446 for (k = 0; readfds && k < nfds+1; k++) 3446 for (k = 0; readfds && k < nfds+1; k++)
3447 if (FD_ISSET(k, readfds)) ++nr; 3447 {
3448 if (FD_ISSET(k, readfds)) ++nr;
3449 if (FD_ISSET(k, writefds)) ++nr;
3450 }
3448 3451
3449 if (NSApp == nil 3452 if (NSApp == nil
3450 || (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0)) 3453 || (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0))
diff --git a/src/print.c b/src/print.c
index 49b491faec8..ccf0e8ed7cc 100644
--- a/src/print.c
+++ b/src/print.c
@@ -2075,7 +2075,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
2075/* Print a description of INTERVAL using PRINTCHARFUN. 2075/* Print a description of INTERVAL using PRINTCHARFUN.
2076 This is part of printing a string that has text properties. */ 2076 This is part of printing a string that has text properties. */
2077 2077
2078void 2078static void
2079print_interval (INTERVAL interval, Lisp_Object printcharfun) 2079print_interval (INTERVAL interval, Lisp_Object printcharfun)
2080{ 2080{
2081 if (NILP (interval->plist)) 2081 if (NILP (interval->plist))
diff --git a/src/window.c b/src/window.c
index 61d2a8b073f..b4fee61cac8 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1464,9 +1464,7 @@ if it isn't already recorded. */)
1464#endif 1464#endif
1465 1465
1466 if (! NILP (update) 1466 if (! NILP (update)
1467 && ! (! NILP (w->window_end_valid) 1467 && (windows_or_buffers_changed || NILP (w->window_end_valid))
1468 && w->last_modified >= BUF_MODIFF (b)
1469 && w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b))
1470 && !noninteractive) 1468 && !noninteractive)
1471 { 1469 {
1472 struct text_pos startp; 1470 struct text_pos startp;
@@ -3795,6 +3793,8 @@ resize_frame_windows (struct frame *f, int size, int horflag)
3795 (m, make_number (XINT (r->top_line) + XINT (r->total_lines))); 3793 (m, make_number (XINT (r->top_line) + XINT (r->total_lines)));
3796 } 3794 }
3797 } 3795 }
3796
3797 windows_or_buffers_changed++;
3798} 3798}
3799 3799
3800 3800
@@ -4208,6 +4208,7 @@ grow_mini_window (struct window *w, int delta)
4208 w->last_modified = 0; 4208 w->last_modified = 0;
4209 w->last_overlay_modified = 0; 4209 w->last_overlay_modified = 0;
4210 4210
4211 windows_or_buffers_changed++;
4211 adjust_glyphs (f); 4212 adjust_glyphs (f);
4212 unblock_input (); 4213 unblock_input ();
4213 } 4214 }
@@ -4245,6 +4246,7 @@ shrink_mini_window (struct window *w)
4245 w->last_modified = 0; 4246 w->last_modified = 0;
4246 w->last_overlay_modified = 0; 4247 w->last_overlay_modified = 0;
4247 4248
4249 windows_or_buffers_changed++;
4248 adjust_glyphs (f); 4250 adjust_glyphs (f);
4249 unblock_input (); 4251 unblock_input ();
4250 } 4252 }
diff --git a/src/xrdb.c b/src/xrdb.c
index 73672c9617c..9d056a607e4 100644
--- a/src/xrdb.c
+++ b/src/xrdb.c
@@ -24,7 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
24#include <unistd.h> 24#include <unistd.h>
25#include <errno.h> 25#include <errno.h>
26#include <epaths.h> 26#include <epaths.h>
27 27#include <stdlib.h>
28#include <stdio.h> 28#include <stdio.h>
29 29
30#include "lisp.h" 30#include "lisp.h"
@@ -48,11 +48,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
48#include "keyboard.h" 48#include "keyboard.h"
49#endif 49#endif
50 50
51extern char *getenv (const char *);
52
53extern struct passwd *getpwuid (uid_t);
54extern struct passwd *getpwnam (const char *);
55
56char *x_get_string_resource (XrmDatabase rdb, const char *name, 51char *x_get_string_resource (XrmDatabase rdb, const char *name,
57 const char *class); 52 const char *class);
58static int file_p (const char *filename); 53static int file_p (const char *filename);
@@ -429,8 +424,9 @@ get_environ_db (void)
429 { 424 {
430 static char const xdefaults[] = ".Xdefaults-"; 425 static char const xdefaults[] = ".Xdefaults-";
431 char *home = gethomedir (); 426 char *home = gethomedir ();
432 char const *host = get_system_name (); 427 char const *host = SSDATA (Vsystem_name);
433 ptrdiff_t pathsize = strlen (home) + sizeof xdefaults + strlen (host); 428 ptrdiff_t pathsize = (strlen (home) + sizeof xdefaults
429 + SBYTES (Vsystem_name));
434 path = xrealloc (home, pathsize); 430 path = xrealloc (home, pathsize);
435 strcat (strcat (path, xdefaults), host); 431 strcat (strcat (path, xdefaults), host);
436 p = path; 432 p = path;