diff --git a/ChangeLog b/ChangeLog index 9c839658429..b8c7adb8708 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-10-15 Glenn Morris + + * Makefile.in (install-man, install-etc): + Apply $TRANSFORM. (Bug#12536#34) + (clean): Delete etc/emacs.tmpdesktop. + 2012-10-11 Kenichi Handa * .bzrignore: Add several files under admin/charsets. @@ -758,7 +764,7 @@ 2012-06-28 Dmitry Antipov - * configure.in: Fix previous change. Remove --enable-asserts. + * configure.in: Fix previous change. Remove --enable-asserts. (CPPFLAGS): Remove conditional -DXASSERTS=1. Add --enable-link-time-optimization. * INSTALL: Mention this. @@ -936,7 +942,7 @@ 2012-06-03 Ulrich Müller - * configure.in (PAXCTL): Check for paxctl. (Bug#11398) + * configure.in (PAXCTL): Check for paxctl. (Bug#11398) 2012-06-01 Paul Eggert @@ -1388,7 +1394,7 @@ 2012-04-17 Dmitry Antipov * configure.in (AC_CHECK_FUNCS): - Add getpwent, endpwent, getgrent, endgrent. (Bug#7900) + Add getpwent, endpwent, getgrent, endgrent. (Bug#7900) 2012-04-16 Glenn Morris @@ -1565,7 +1571,7 @@ 2011-11-04 Glenn Morris - * configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929) + * configure.in: Increase minimum GnuTLS version to 2.6.6. (Bug#9929) Do not include GnuTLS version info in final summary message. 2011-10-31 Eli Zaretskii diff --git a/Makefile.in b/Makefile.in index 571013e3244..d929160c597 100644 --- a/Makefile.in +++ b/Makefile.in @@ -622,18 +622,24 @@ install-man: thisdir=`/bin/pwd`; \ cd ${mansrcdir}; \ for page in *.1; do \ + dest=`echo "$${page}" | sed '$(TRANSFORM)'`; \ (cd $${thisdir}; \ - ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}); \ + ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${dest}); \ ( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \ - rm -f $(DESTDIR)${man1dir}/$${page}.gz; \ - ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \ + rm -f $(DESTDIR)${man1dir}/$${dest}.gz; \ + ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${dest}; \ done ## Install those items from etc/ that need to end up elsewhere. install-etc: umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir} - ${INSTALL_DATA} ${srcdir}/etc/emacs.desktop \ - $(DESTDIR)${desktopdir}/emacs.desktop + dest=`echo emacs | sed '$(TRANSFORM)'`; \ + tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \ + sed -e "/^Exec=emacs/ s/emacs/$${dest}/" \ + -e "/^Icon=emacs/ s/emacs/$${dest}/" \ + ${srcdir}/etc/emacs.desktop > $${tmp}; \ + ${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/$${dest}.desktop; \ + rm -f $${tmp} thisdir=`/bin/pwd`; \ cd ${iconsrcdir} || exit 1; umask 022 ; \ for dir in */*/apps */*/mimetypes; do \ @@ -641,8 +647,9 @@ install-etc: ( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \ for icon in $${dir}/*.*; do \ [ -r $${icon} ] || continue ; \ + dest=`echo "$${icon}" | sed -e 's|.*/||' -e '$(TRANSFORM)'` ; \ ( cd $${thisdir}; \ - ${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${icon} ) \ + ${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${dir}/$${dest} ) \ || exit 1; \ done ; \ done @@ -729,6 +736,7 @@ mostlyclean: FRC ### ### Delete `.dvi' files here if they are not part of the distribution. clean: FRC + -rm -f etc/emacs.tmpdesktop (cd src; $(MAKE) $(MFLAGS) clean) (cd oldXMenu; $(MAKE) $(MFLAGS) clean) (cd lwlib; $(MAKE) $(MFLAGS) clean) 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 @@ +2012-10-16 Juri Linkov + + * search.texi (Query Replace): Document multi-buffer replacement + keys. (Bug#12655) + + * maintaining.texi (Tags Search): Change link "Replace" to + "Query Replace". + 2012-10-13 Chong Yidong * 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. reads a regexp to search for and a string to replace with, just like ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x tags-search}, but repeatedly, processing matches according to your -input. @xref{Replace}, for more information on query replace. +input. @xref{Query Replace}, for more information on query replace. @vindex tags-case-fold-search @cindex case-sensitivity and tags search 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. @item ! to replace all remaining occurrences without asking again. +@item Y @r{(Upper-case)} +to replace all remaining occurrences in all remaining buffers in +multi-buffer replacements (like the Dired `Q' command which performs +query replace on selected files). It answers this question and all +subsequent questions in the series with "yes", without further +user interaction. + +@item N @r{(Upper-case)} +to skip to the next buffer in multi-buffer replacements without +replacing remaining occurrences in the current buffer. It answers +this question "no", gives up on the questions for the current buffer, +and continues to the next buffer in the sequence. + @item ^ to go back to the position of the previous occurrence (or what used to be an occurrence), in case you changed it by mistake or want to 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 @@ +2012-10-17 Gregor Zattler (tiny change) + + * emacs-lisp-intro.texi (Narrowing advantages): + Minor update for changed what-line implementation. (Bug#12629) + 2012-06-21 Glenn Morris * 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 buffer that has been narrowed. The @code{what-line} function, for example, removes the narrowing from a buffer, if it has any narrowing and when it has finished its job, restores the narrowing to what it was. -On the other hand, the @code{count-lines} function, which is called by -@code{what-line}, uses narrowing to restrict itself to just that portion +On the other hand, the @code{count-lines} function +uses narrowing to restrict itself to just that portion of the buffer in which it is interested and then restores the previous situation. 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 @@ +2012-10-15 Chong Yidong + + * macros.texi (Defining Macros): defmacro is now a macro. + Explicitly list the docstring and declare arguments. + + * functions.texi (Anonymous Functions): Explicitly list the + docstring, declare, and interactive arguments to lambda. + (Defining Functions): Likewise for defun. + (Inline Functions): Likewise for defsubst. + (Declare Form): Tweak description. + 2012-10-13 Chong Yidong * 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.) is called @dfn{defining a function}, and it is done with the @code{defun} special form. -@defmac defun name argument-list body-forms... +@defmac defun name args [doc] [declare] [interactive] body@dots{} @code{defun} is the usual way to define new Lisp functions. It -defines the symbol @var{name} as a function that looks like this: +defines the symbol @var{name} as a function with argument list +@var{args} and body forms given by @var{body}. Neither @var{name} nor +@var{args} should be quoted. -@example -(lambda @var{argument-list} . @var{body-forms}) -@end example +@var{doc}, if present, should be a string specifying the function's +documentation string (@pxref{Function Documentation}). @var{declare}, +if present, should be a @code{declare} form specifying function +metadata (@pxref{Declare Form}). @var{interactive}, if present, +should be an @code{interactive} form specifying how the function is to +be called interactively (@pxref{Interactive Call}). -@code{defun} stores this lambda expression in the function cell of -@var{name}. Its return value is @emph{undefined}. - -As described previously, @var{argument-list} is a list of argument -names and may include the keywords @code{&optional} and @code{&rest}. -Also, the first two of the @var{body-forms} may be a documentation -string and an interactive declaration. @xref{Lambda Components}. +The return value of @code{defun} is undefined. Here are some examples: @@ -582,14 +581,14 @@ redefinition from unintentional redefinition. @end defmac @cindex function aliases -@defun defalias name definition &optional docstring +@defun defalias name definition &optional doc @anchor{Definition of defalias} This special form defines the symbol @var{name} as a function, with definition @var{definition} (which can be any valid Lisp function). Its return value is @emph{undefined}. -If @var{docstring} is non-@code{nil}, it becomes the function -documentation of @var{name}. Otherwise, any documentation provided by +If @var{doc} is non-@code{nil}, it becomes the function documentation +of @var{name}. Otherwise, any documentation provided by @var{definition} is used. The proper place to use @code{defalias} is where a specific function @@ -902,11 +901,14 @@ function, you can in principle use any method to construct the list. But typically you should use the @code{lambda} macro, or the @code{function} special form, or the @code{#'} read syntax: -@defmac lambda args body... -This macro returns an anonymous function with argument list @var{args} -and body forms given by @var{body}. In effect, this macro makes -@code{lambda} forms ``self-quoting'': evaluating a form whose @sc{car} -is @code{lambda} yields the form itself: +@defmac lambda args [doc] [interactive] body@dots{} +This macro returns an anonymous function with argument list +@var{args}, documentation string @var{doc} (if any), interactive spec +@var{interactive} (if any), and body forms given by @var{body}. + +In effect, this macro makes @code{lambda} forms ``self-quoting'': +evaluating a form whose @sc{car} is @code{lambda} yields the form +itself: @example (lambda (x) (* x x)) @@ -1169,13 +1171,13 @@ If provided, @var{when} should be a string indicating when the function was first made obsolete---for example, a date or a release number. @end defun -@defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring +@defmac define-obsolete-function-alias obsolete-name current-name &optional when doc This convenience macro marks the function @var{obsolete-name} obsolete and also defines it as an alias for the function @var{current-name}. It is equivalent to the following: @example -(defalias @var{obsolete-name} @var{current-name} @var{docstring}) +(defalias @var{obsolete-name} @var{current-name} @var{doc}) (make-obsolete @var{obsolete-name} @var{current-name} @var{when}) @end example @end defmac @@ -1213,16 +1215,16 @@ this: @section Inline Functions @cindex inline functions -@defmac defsubst name argument-list body-forms... -Define an inline function. The syntax is exactly the same as -@code{defun} (@pxref{Defining Functions}). -@end defmac - - You can define an @dfn{inline function} by using @code{defsubst} -instead of @code{defun}. An inline function works just like an -ordinary function except for one thing: when you byte-compile a call + An @dfn{inline function} is a function that works just like an +ordinary function, except for one thing: when you byte-compile a call to the function (@pxref{Byte Compilation}), the function's definition -is expanded into the caller. +is expanded into the caller. To define an inline function, use +@code{defsubst} instead of @code{defun}. + +@defmac defsubst name args [doc] [declare] [interactive] body@dots{} +This macro defines an inline function. Its syntax is exactly the same +as @code{defun} (@pxref{Defining Functions}). +@end defmac Making a function inline often makes its function calls run faster. But it also has disadvantages. For one thing, it reduces flexibility; @@ -1266,16 +1268,13 @@ convention in Emacs Lisp mode. @anchor{Definition of declare} @defmac declare @var{specs}@dots{} This macro ignores its arguments and evaluates to @code{nil}; it has -no run-time effect. However, when a @code{declare} form occurs as the -@emph{very first form} in the body of a @code{defun} function -definition or a @code{defmacro} macro definition (@pxref{Defining -Macros}, for a description of @code{defmacro}), it appends the -properties specified by @var{specs} to the function or macro. This -work is specially performed by the @code{defun} and @code{defmacro} -macros. - -Note that if you put a @code{declare} form in an interactive function, -it should go before the @code{interactive} form. +no run-time effect. However, when a @code{declare} form occurs in the +@var{declare} argument of a @code{defun} or @code{defsubst} function +definition (@pxref{Defining Functions}) or a @code{defmacro} macro +definition (@pxref{Defining Macros}), it appends the properties +specified by @var{specs} to the function or macro. This work is +specially performed by @code{defun}, @code{defsubst}, and +@code{defmacro}. Each element in @var{specs} should have the form @code{(@var{property} @var{args}@dots{})}, which should not be quoted. These have the 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}). @node Defining Macros @section Defining Macros - A Lisp macro is a list whose @sc{car} is @code{macro}. Its @sc{cdr} should -be a function; expansion of the macro works by applying the function -(with @code{apply}) to the list of unevaluated argument-expressions -from the macro call. + A Lisp macro object is a list whose @sc{car} is @code{macro}, and +whose @sc{cdr} is a lambda expression. Expansion of the macro works +by applying the lambda expression (with @code{apply}) to the list of +@emph{unevaluated} arguments from the macro call. It is possible to use an anonymous Lisp macro just like an anonymous -function, but this is never done, because it does not make sense to pass -an anonymous macro to functionals such as @code{mapcar}. In practice, -all Lisp macros have names, and they are usually defined with the -special form @code{defmacro}. +function, but this is never done, because it does not make sense to +pass an anonymous macro to functionals such as @code{mapcar}. In +practice, all Lisp macros have names, and they are almost always +defined with the @code{defmacro} macro. -@defspec defmacro name argument-list body-forms@dots{} -@code{defmacro} defines the symbol @var{name} as a macro that looks -like this: +@defmac defmacro name args [doc] [declare] body@dots{} +@code{defmacro} defines the symbol @var{name} (which should not be +quoted) as a macro that looks like this: @example -(macro lambda @var{argument-list} . @var{body-forms}) +(macro lambda @var{args} . @var{body}) @end example -(Note that the @sc{cdr} of this list is a function---a lambda expression.) -This macro object is stored in the function cell of @var{name}. Its return -value is @emph{undefined}. +(Note that the @sc{cdr} of this list is a lambda expression.) This +macro object is stored in the function cell of @var{name}. The +meaning of @var{args} is the same as in a function, and the keywords +@code{&rest} and @code{&optional} may be used (@pxref{Argument List}). +Neither @var{name} nor @var{args} should be quoted. The return value +of @code{defmacro} is undefined. -The shape and meaning of @var{argument-list} is the same as in a -function, and the keywords @code{&rest} and @code{&optional} may be used -(@pxref{Argument List}). Macros may have a documentation string, but -any @code{interactive} declaration is ignored since macros cannot be -called interactively. -@end defspec +@var{doc}, if present, should be a string specifying the macro's +documentation string. @var{declare}, if present, should be a +@code{declare} form specifying metadata for the macro (@pxref{Declare +Form}). Note that macros cannot have interactive declarations, since +they cannot be called interactively. +@end defmac Macros often need to construct large list structures from a mixture of constants and nonconstant parts. To make this easier, use the 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 may be useful. --- -** The configuration option '--enable-use-lisp-union-type' has been +** The configure option '--enable-use-lisp-union-type' has been renamed to '--enable-check-lisp-object-type', as the resulting Lisp_Object type no longer uses a union to implement the compile time check that this option enables. @@ -61,6 +61,13 @@ as it was confusingly-named and rarely useful. overwriting "emacs" in the installation bin/ directory with a link to emacs-VERSION. +--- +** The configure options `--program-prefix', `--program-suffix', and +`--program-transform-name' apply to more than just the installed +binaries. Now they also affect the man pages, icons, and the +etc/emacs.desktop file; but not the info pages, since this would break +links between the various manuals. + --- ** Emacs uses libtinfo in preference to libncurses, if available. @@ -203,7 +210,9 @@ The PCL-CVS commands are still available via the keyboard. --- *** Fullscreen and frame parameter fullscreen is supported. --- -*** A file dialog is used when open/saved is done from the menu/toolbar. +*** A file dialog is used for open/save operations initiated from the +menu/toolbar. + * Editing Changes in Emacs 24.3 @@ -415,8 +424,8 @@ The global binding for `M-=', `count-words-region' is in effect. channel keys found, if any. ** Flymake uses fringe bitmaps to indicate errors and warnings. -See flymake-fringe-indicator-position, flymake-error-bitmap and -flymake-warning-bitmap. +See `flymake-fringe-indicator-position', `flymake-error-bitmap' and +`flymake-warning-bitmap'. ** Follow mode @@ -634,6 +643,10 @@ inefficiency, and not namespace-clean. * New Modes and Packages in Emacs 24.3 + +FIXME? erc-desktop-notifications.el, gv.el, profiler.el, +gnus-notifications.el, mm-archive.el + * Incompatible Lisp Changes in Emacs 24.3 @@ -848,7 +861,7 @@ describing the cycle. ** Miscellaneous new functions: *** `autoloadp' -*** `autoload-do-load'. +*** `autoload-do-load' +++ *** `buffer-narrowed-p' tests if the buffer is narrowed. *** `file-name-base' returns a file name sans directory and extension. @@ -873,7 +886,7 @@ See the "Face Attributes" section of the Elisp manual. *** `automount-dir-prefix' *** `buffer-has-markers-at' -*** `macro-declaration-function' (use `macro-declarations-alist'). +*** `macro-declaration-function' (use `macro-declarations-alist') *** `window-system-version' *** `dired-pop-to-buffer' (use `dired-mark-pop-up') *** `query-replace-interactive' @@ -881,21 +894,20 @@ See the "Face Attributes" section of the Elisp manual. * Changes in Emacs 24.3 on non-free operating systems -** New configure.bat options on MS-Windows: - -*** --without-libxml2 omits support for libxml2, even if its presence -is detected. ++++ +** On MS Windows, you can pass --without-libxml2 to configure.bat to omit +support for libxml2, even if its presence is detected. ** When invoked with the -nw switch to run on the Windows text-mode terminal, Emacs now supports mouse highlight, help-echo (in the echo area), and -mouse-autoselect-window. +`mouse-autoselect-window'. -** Two new functions are available in Cygwin builds of Emacs: -cygwin-convert-path-from-windows and cygwin-convert-path-to-windows. +** Two new functions are available in Cygwin builds: +`cygwin-convert-path-from-windows' and `cygwin-convert-path-to-windows'. These functions allow Lisp code to access the Cygwin file-name mapping machinery to convert between Cygwin and Windows-native file names. -** On MS-Windows Vista and later Emacs now supports symbolic links. +** On MS Windows Vista and later Emacs now supports symbolic links. * Changes in Emacs 24.2 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7393bbc2845..9b1929eae6b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,23 @@ +2012-10-17 Michael Heerdegen (tiny change) + + * wdired.el (wdired-old-marks): New variable. + (wdired-change-to-wdired-mode): Locally set wdired-old-marks. + (wdired-do-renames): Move point with renamed file and don't lose + mark status (Bug#11795). + +2012-10-16 Juri Linkov + + * replace.el (query-replace-help): Mention multi-buffer replacement + keys in the Help message. (Bug#12655) + +2012-10-15 Chong Yidong + + * emacs-lisp/byte-run.el (defsubst): Doc fix. + 2012-10-14 Eli Zaretskii + * window.el (display-buffer): Doc fix. + * progmodes/compile.el (compilation-error-regexp-alist-alist): Adjust the msft regexp to the output of Studio 2010, and move msft before edg-1. See the discussion on emacs-devel, @@ -593,9 +611,9 @@ * emacs-lisp/eieio-base.el (eieio-persistent-read): New input args specifying the expected class, and whether subclassing is allowed. (eieio-persistent-convert-list-to-object): - (eieio-persistent-validate/fix-slot-value) - (eieio-persistent-slot-type-is-class-p): New functions. - (eieio-named::slot-missing): Doc fix. + (eieio-persistent-validate/fix-slot-value) + (eieio-persistent-slot-type-is-class-p): New functions. + (eieio-named::slot-missing): Doc fix. * emacs-lisp/eieio-datadebug.el (data-debug/eieio-insert-slots): Stop using unused publd variable. @@ -2038,7 +2056,7 @@ * ses.el (ses-widen): * simple.el (count-words--buffer-message): - * net/browse-url.el (browse-url-of-buffer): Use it + * net/browse-url.el (browse-url-of-buffer): Use it. * simple.el (count-words-region): Don't signal an error if there is a non-nil prefix arg and the mark is not set. @@ -16320,7 +16338,7 @@ 2011-06-22 Leo Liu * minibuffer.el (completing-read-function) - (completing-read-default): Move from minibuf.c + (completing-read-default): Move from minibuf.c. 2011-06-22 Richard Stallman @@ -18177,7 +18195,7 @@ Remove unnecessary and incorrect declarations. * emacs-lisp/check-declare.el (check-declare-scan): - Handle byte-compile-initial-macro-environment in bytecomp.el + Handle byte-compile-initial-macro-environment in bytecomp.el. 2011-05-05 Stefan Monnier 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 @@ -2012-10-08 David Engster > +2012-10-14 David Engster + + * semantic.el (semantic-error-if-unparsed): New function. Raise + error if buffer was not parsed by Semantic (bug #12045). + (navigate-menu, edit-menu, cedet-menu-map): Enable Semantic items + only if buffer was parsed. Also, replace ':active' with ':enable' + where necessary. + + * semantic/wisent/python.el + (semantic-python-get-system-include-path): Use + `python-shell-internal-send-string' if available to query Python + for system paths. + + * semantic/senator.el (senator-next-tag, senator-previous-tag) + (senator-go-to-up-reference): Use `semantic-error-if-unparsed'. + + * semantic/complete.el (semantic-complete-jump-local) + (semantic-complete-jump, semantic-complete-jump-local-members) + (semantic-complete-self-insert): Use `semantic-error-if-unparsed'. + (semantic-complete-inline-project): Fix autoload cookie. + + * semantic/analyze/complete.el + (semantic-analyze-possible-completions): Check if buffer was + parsed. Only raise an error if function was called interactively, + otherwise silently return nil. + + * cedet.el (cedet-menu-map): Fix copy&paste typo in menu creation. + +2012-10-08 David Engster * semantic/bovine/el.el: Add `semantic-default-elisp-setup' to `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 @@ (define-key map [navigate-menu] 'undefined) (define-key map [semantic-options-separator] 'undefined) (define-key map [global-semantic-highlight-func-mode] 'undefined) - (define-key map [global-semantic-highlight-func-mode] 'undefined) + (define-key map [global-semantic-stickyfunc-mode] 'undefined) (define-key map [global-semantic-decoration-mode] 'undefined) (define-key map [global-semantic-idle-completions-mode] 'undefined) (define-key map [global-semantic-idle-summary-mode] 'undefined) 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.") "Return non-nil if the current buffer was set up for parsing." semantic-new-buffer-fcn-was-run) +(defsubst semantic-error-if-unparsed () + "Raise an error if current buffer was not parsed by Semantic." + (unless semantic-new-buffer-fcn-was-run + (error "Buffer was not parsed by Semantic."))) + (defsubst semantic--umatched-syntax-needs-refresh-p () "Return non-nil if the unmatched syntax cache needs a refresh. That is, if it is dirty or if the current parse tree isn't up to date." @@ -907,75 +912,91 @@ Throw away all the old tags, and recreate the tag database." ;; Edit Tags submenu: (define-key edit-menu [semantic-analyze-possible-completions] '(menu-item "List Completions" semantic-analyze-possible-completions + :enable (semantic-active-p) :help "Display a list of completions for the tag at point")) (define-key edit-menu [semantic-complete-analyze-inline] '(menu-item "Complete Tag Inline" semantic-complete-analyze-inline + :enable (semantic-active-p) :help "Display inline completion for the tag at point")) (define-key edit-menu [semantic-completion-separator] '("--")) (define-key edit-menu [senator-transpose-tags-down] '(menu-item "Transpose Tags Down" senator-transpose-tags-down - :active (semantic-current-tag) + :enable (and (semantic-active-p) + (semantic-current-tag)) :help "Transpose the current tag and the next tag")) (define-key edit-menu [senator-transpose-tags-up] '(menu-item "Transpose Tags Up" senator-transpose-tags-up - :active (semantic-current-tag) + :enable (and (semantic-active-p) + (semantic-current-tag)) :help "Transpose the current tag and the previous tag")) (define-key edit-menu [semantic-edit-separator] '("--")) (define-key edit-menu [senator-yank-tag] '(menu-item "Yank Tag" senator-yank-tag - :active (not (ring-empty-p senator-tag-ring)) + :enable (not (ring-empty-p senator-tag-ring)) :help "Yank the head of the tag ring into the buffer")) (define-key edit-menu [senator-copy-tag-to-register] '(menu-item "Copy Tag To Register" senator-copy-tag-to-register - :active (semantic-current-tag) + :enable (and (semantic-active-p) + (semantic-current-tag)) :help "Yank the head of the tag ring into the buffer")) (define-key edit-menu [senator-copy-tag] '(menu-item "Copy Tag" senator-copy-tag - :active (semantic-current-tag) + :enable (and (semantic-active-p) + (semantic-current-tag)) :help "Copy the current tag to the tag ring")) (define-key edit-menu [senator-kill-tag] '(menu-item "Kill Tag" senator-kill-tag - :active (semantic-current-tag) + :enable (and (semantic-active-p) + (semantic-current-tag)) :help "Kill the current tag, and copy it to the tag ring")) ;; Navigate Tags submenu: (define-key navigate-menu [senator-narrow-to-defun] '(menu-item "Narrow to Tag" senator-narrow-to-defun - :active (semantic-current-tag) + :enable (and (semantic-active-p) + (semantic-current-tag)) :help "Narrow the buffer to the bounds of the current tag")) (define-key navigate-menu [semantic-narrow-to-defun-separator] '("--")) (define-key navigate-menu [semantic-symref-symbol] '(menu-item "Find Tag References..." semantic-symref-symbol + :enable (semantic-active-p) :help "Read a tag and list the references to it")) (define-key navigate-menu [semantic-complete-jump] '(menu-item "Find Tag Globally..." semantic-complete-jump + :enable (semantic-active-p) :help "Read a tag name and find it in the current project")) (define-key navigate-menu [semantic-complete-jump-local-members] '(menu-item "Find Local Members ..." semantic-complete-jump-local-members + :enable (semantic-active-p) :help "Read a tag name and find a local member with that name")) (define-key navigate-menu [semantic-complete-jump-local] '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local + :enable (semantic-active-p) :help "Read a tag name and find it in this buffer")) (define-key navigate-menu [semantic-navigation-separator] '("--")) (define-key navigate-menu [senator-go-to-up-reference] '(menu-item "Parent Tag" senator-go-to-up-reference + :enable (semantic-active-p) :help "Navigate up one reference by tag")) (define-key navigate-menu [senator-next-tag] '(menu-item "Next Tag" senator-next-tag + :enable (semantic-active-p) :help "Go to the next tag")) (define-key navigate-menu [senator-previous-tag] '(menu-item "Previous Tag" senator-previous-tag + :enable (semantic-active-p) :help "Go to the previous tag")) ;; Top level menu items: (define-key cedet-menu-map [semantic-force-refresh] '(menu-item "Reparse Buffer" semantic-force-refresh :help "Force a full reparse of the current buffer" - :visible semantic-mode)) + :visible semantic-mode + :enable (semantic-active-p))) (define-key cedet-menu-map [semantic-edit-menu] `(menu-item "Edit Tags" ,edit-menu :visible semantic-mode)) 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." ;; In theory, we don't need the below since the context will ;; do it for us. ;;(semantic-refresh-tags-safe) - (with-syntax-table semantic-lex-syntax-table - (let* ((context (if (semantic-analyze-context-child-p context) - context - (semantic-analyze-current-context context))) - (ans (if (not context) - (error "Nothing to complete") - (:override)))) - ;; If interactive, display them. - (when (called-interactively-p 'any) - (with-output-to-temp-buffer "*Possible Completions*" - (semantic-analyze-princ-sequence ans "" (current-buffer))) - (shrink-window-if-larger-than-buffer - (get-buffer-window "*Possible Completions*"))) - ans))) + (if (semantic-active-p) + (with-syntax-table semantic-lex-syntax-table + (let* ((context (if (semantic-analyze-context-child-p context) + context + (semantic-analyze-current-context context))) + (ans (if (not context) + (error "Nothing to complete") + (:override)))) + ;; If interactive, display them. + (when (called-interactively-p 'any) + (with-output-to-temp-buffer "*Possible Completions*" + (semantic-analyze-princ-sequence ans "" (current-buffer))) + (shrink-window-if-larger-than-buffer + (get-buffer-window "*Possible Completions*"))) + ans)) + ;; Buffer was not parsed by Semantic. + ;; Raise error if called interactively. + (when (called-interactively-p 'any) + (error "Buffer was not parsed by Semantic.")))) (defun semantic-analyze-possible-completions-default (context &optional flags) "Default method for producing smart completions. 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." (defun semantic-complete-jump-local () "Jump to a local semantic symbol." (interactive) + (semantic-error-if-unparsed) (let ((tag (semantic-complete-read-tag-buffer-deep "Jump to symbol: "))) (when (semantic-tag-p tag) (push-mark) @@ -2101,6 +2102,7 @@ completion works." (defun semantic-complete-jump () "Jump to a semantic symbol." (interactive) + (semantic-error-if-unparsed) (let* ((tag (semantic-complete-read-tag-project "Jump to symbol: "))) (when (semantic-tag-p tag) (push-mark) @@ -2115,6 +2117,7 @@ completion works." (defun semantic-complete-jump-local-members () "Jump to a semantic symbol." (interactive) + (semantic-error-if-unparsed) (let* ((tag (semantic-complete-read-tag-local-members "Jump to symbol: "))) (when (semantic-tag-p tag) (let ((start (condition-case nil (semantic-tag-start tag) @@ -2216,7 +2219,7 @@ use `semantic-complete-analyze-inline' to complete." (error nil)) )) -;;;;###autoload +;;;###autoload (defun semantic-complete-inline-project () "Perform inline completion for any symbol in the current project. `semantic-analyze-possible-completions' is used to determine the 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." "Navigate to the next Semantic tag. Return the tag or nil if at end of buffer." (interactive) + (semantic-error-if-unparsed) (let ((pos (point)) (tag (semantic-current-tag)) where) @@ -294,6 +295,7 @@ Return the tag or nil if at end of buffer." "Navigate to the previous Semantic tag. Return the tag or nil if at beginning of buffer." (interactive) + (semantic-error-if-unparsed) (let ((pos (point)) (tag (semantic-current-tag)) where) @@ -519,6 +521,7 @@ If that parent which is only a reference in the function tag is found, we can jump to it. Some tags such as includes have other reference features." (interactive) + (semantic-error-if-unparsed) (let ((result (semantic-up-reference (or tag (semantic-current-tag))))) (if (not result) (error "No up reference found") 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 @@ (defun semantic-python-get-system-include-path () "Evaluate some Python code that determines the system include path." - (python-proc) - (if python-buffer - (with-current-buffer python-buffer - (set (make-local-variable 'python-preoutput-result) nil) - (python-send-string - "import sys; print '_emacs_out ' + '\\0'.join(sys.path)") - (accept-process-output (python-proc) 2) - (if python-preoutput-result - (split-string python-preoutput-result "[\0\n]" t) - ;; Try a second, Python3k compatible shot - (python-send-string - "import sys; print('_emacs_out ' + '\\0'.join(sys.path))") - (accept-process-output (python-proc) 2) - (if python-preoutput-result - (split-string python-preoutput-result "[\0\n]" t) - (message "Timeout while querying Python for system include path.") - nil))) - (message "Python seems to be unavailable on this system."))) + (delq nil + (mapcar + (lambda (dir) + (when (file-directory-p dir) + dir)) + (split-string + (python-shell-internal-send-string + "import sys;print ('\\n'.join(sys.path))") + "\n" t)))) (defcustom-mode-local-semantic-dependency-system-include-path python-mode semantic-python-dependency-system-include-path 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. ;; fns))) (defmacro defsubst (name arglist &rest body) - "Define an inline function. The syntax is just like that of `defun'." + "Define an inline function. The syntax is just like that of `defun'. +\(fn NAME ARGLIST &optional DOCSTRING DECL &rest BODY)" (declare (debug defun) (doc-string 3)) (or (memq (get name 'byte-optimizer) '(nil byte-compile-inline-expand)) 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 @@ +2012-10-15 Stefan Monnier + + * erc.el (erc-log): Make it into a defsubst. + (erc-with-server-buffer, define-erc-module, erc-with-buffer) + (erc-with-all-buffers-of-server): Use `declare'. + * erc-backend.el (erc-log): Adjust autoload accordingly. + 2012-10-07 Deniz Dogan * erc-log.el (erc-generate-log-file-name-function): @@ -42,8 +49,8 @@ 2012-08-21 Julien Danjou - * erc-match.el (erc-match-message): Use - `erc-match-exclude-server-buffer' not + * erc-match.el (erc-match-message): + Use `erc-match-exclude-server-buffer' not `erc-track-exclude-server-buffer'. 2012-08-20 Josh Feinstein @@ -56,8 +63,8 @@ (erc-lurker-threshold-time): New variables. (erc-lurker-maybe-trim, erc-lurker-initialize, erc-lurker-cleanup) (erc-hide-current-message-p, erc-canonicalize-server-name) - (erc-lurker-update-status, erc-lurker-p): New functions. Together - they maintain state about which users have spoken in the last + (erc-lurker-update-status, erc-lurker-p): New functions. + Together they maintain state about which users have spoken in the last erc-lurker-threshold-time, with all other users being considered lurkers whose messages of types in erc-lurker-hide-list will not be displayed by erc-display-message. @@ -192,7 +199,7 @@ * erc.el (erc-ssl): Made into a synonym for erc-tls, which provides a superset of the same functionality. - (erc-open-ssl-stream): Removed. + (erc-open-ssl-stream): Remove. (erc-open-tls-stream): Use `open-network-stream' instead of `open-tls-stream' directly to be able to use the built-in TLS support. 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 @@ (require 'erc-compat) (eval-when-compile (require 'cl)) (autoload 'erc-with-buffer "erc" nil nil 'macro) -(autoload 'erc-log "erc" nil nil 'macro) +(autoload 'erc-log "erc") ;;;; Variables and options 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.") (defmacro erc-with-server-buffer (&rest body) "Execute BODY in the current ERC server buffer. If no server buffer exists, return nil." + (declare (indent 0) (debug (body))) (let ((buffer (make-symbol "buffer"))) `(let ((,buffer (erc-server-buffer))) (when (buffer-live-p ,buffer) (with-current-buffer ,buffer ,@body))))) -(put 'erc-with-server-buffer 'lisp-indent-function 0) -(put 'erc-with-server-buffer 'edebug-form-spec '(body)) (defstruct (erc-server-user (:type vector) :named) ;; User data @@ -1236,6 +1235,7 @@ Example: 'erc-replace-insert)) ((remove-hook 'erc-insert-modify-hook 'erc-replace-insert)))" + (declare (doc-string 3)) (let* ((sn (symbol-name name)) (mode (intern (format "erc-%s-mode" (downcase sn)))) (group (intern (format "erc-%s" (downcase sn)))) @@ -1281,8 +1281,6 @@ if ARG is omitted or nil. (put ',enable 'definition-name ',name) (put ',disable 'definition-name ',name)))) -(put 'define-erc-module 'doc-string-elt 3) - (defun erc-once-with-server-event (event &rest forms) "Execute FORMS the next time EVENT occurs in the `current-buffer'. @@ -1334,10 +1332,10 @@ connection over which the data was received that triggered EVENT." (add-hook hook fun nil nil) fun)) -(defmacro erc-log (string) +(defsubst erc-log (string) "Logs STRING if logging is on (see `erc-log-p')." - `(when erc-log-p - (erc-log-aux ,string))) + (when erc-log-p + (erc-log-aux string))) (defun erc-server-buffer () "Return the server buffer for the current buffer's process. @@ -1621,6 +1619,7 @@ See `erc-get-buffer' for details. See also `with-current-buffer'. \(fn (TARGET [PROCESS]) BODY...)" + (declare (indent 1) (debug ((form &optional form) body))) (let ((buf (make-symbol "buf")) (proc (make-symbol "proc")) (target (make-symbol "target")) @@ -1637,8 +1636,6 @@ See also `with-current-buffer'. (when (buffer-live-p ,buf) (with-current-buffer ,buf ,@body))))) -(put 'erc-with-buffer 'lisp-indent-function 1) -(put 'erc-with-buffer 'edebug-form-spec '((form &optional form) body)) (defun erc-get-buffer (target &optional proc) "Return the buffer matching TARGET in the process PROC. @@ -1688,6 +1685,7 @@ needs to match PROC." FORMS will be evaluated in all buffers having the process PROCESS and where PRED matches or in all buffers of the server process if PRED is nil." + (declare (indent 1) (debug (form form body))) ;; Make the evaluation have the correct order (let ((pre (make-symbol "pre")) (pro (make-symbol "pro"))) @@ -1701,8 +1699,6 @@ nil." ;; Silence the byte-compiler by binding the result of mapcar to ;; a variable. res))) -(put 'erc-with-all-buffers-of-server 'lisp-indent-function 1) -(put 'erc-with-all-buffers-of-server 'edebug-form-spec '(form form body)) ;; (iswitchb-mode) will autoload iswitchb.el (defvar iswitchb-temp-buflist) 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 @@ +2012-10-17 Kazuhiro Ito (tiny change) + + * starttls.el (starttls-extra-arguments): Doc fix. + 2012-10-09 Lars Magne Ingebrigtsen * 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 :group 'starttls) (defcustom starttls-extra-arguments nil - "Extra arguments to `starttls-program'. + "Extra arguments to `starttls-gnutls-program'. These apply when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil. For example, non-TLS compliant servers may require 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, C-r to enter recursive edit (\\[exit-recursive-edit] to get out again), C-w to delete match and recursive edit, C-l to clear the screen, redisplay, and offer same replacement again, -! to replace all remaining matches with no more questions, +! to replace all remaining matches in this buffer with no more questions, ^ to move point back to previous match, -E to edit the replacement string" +E to edit the replacement string. +In multi-buffer replacements type `Y' to replace all remaining +matches in all remaining buffers with no more questions, +`N' to skip to the next buffer without replacing remaining matches +in the current buffer." "Help message while in `query-replace'.") (defvar query-replace-map 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." (defvar wdired-col-perm) ;; Column where the permission bits start (defvar wdired-old-content) (defvar wdired-old-point) - +(defvar wdired-old-marks) (defun wdired-mode () "Writable Dired (WDired) mode. @@ -221,6 +221,8 @@ See `wdired-mode'." (error "Not a Dired buffer")) (set (make-local-variable 'wdired-old-content) (buffer-substring (point-min) (point-max))) + (set (make-local-variable 'wdired-old-marks) + (dired-remember-marks (point-min) (point-max))) (set (make-local-variable 'wdired-old-point) (point)) (set (make-local-variable 'query-replace-skip-read-only) t) (set (make-local-variable 'isearch-filter-predicate) @@ -455,7 +457,8 @@ non-nil means return old filename." (push (cons tmp file-new) residue)))) (t (setq progress t) - (let ((file-ori (car rename))) + (let* ((file-ori (car rename)) + (old-mark (cdr (assoc file-ori wdired-old-marks)))) (if wdired-use-interactive-rename (wdired-search-and-rename file-ori file-new) ;; If dired-rename-file autoloads dired-aux while @@ -466,12 +469,17 @@ non-nil means return old filename." (condition-case err (let ((dired-backup-overwrite nil)) (dired-rename-file file-ori file-new - overwrite)) + overwrite) + (dired-remove-file file-ori) + (dired-add-file file-new (if (integerp dired-keep-marker-rename) + dired-keep-marker-rename + old-mark))) (error (setq errors (1+ errors)) (dired-log (concat "Rename `" file-ori "' to `" file-new "' failed:\n%s\n") - err))))))))) + err) + (dired-add-entry file-ori old-mark))))))))) errors)) 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 buffer. Return the window chosen for displaying BUFFER-OR-NAME, or nil if no such window is found. -Optional argument ACTION should have the form (FUNCTION . ALIST). -FUNCTION is either a function or a list of functions. +Optional argument ACTION, if non-nil, should specify a display +action. Its form is described below. + +Optional argument FRAME, if non-nil, acts like an additional +ALIST entry (reusable-frames . FRAME) to the action list of ACTION, +specifying the frame(s) to search for a window that is already +displaying the buffer. See `display-buffer-reuse-window' + +If ACTION is non-nil, it should have the form (FUNCTION . ALIST), +where FUNCTION is either a function or a list of functions, and ALIST is an arbitrary association list (alist). Each such FUNCTION should accept two arguments: the buffer to @@ -5379,6 +5387,9 @@ function in the combined function list in turn, passing the buffer as the first argument and the combined alist as the second argument, until one of the functions returns non-nil. +If ACTION is nil, the function list and the alist are built using +only the other variables mentioned above. + Available action functions include: `display-buffer-same-window' `display-buffer-reuse-window' @@ -5407,12 +5418,7 @@ The ACTION argument to `display-buffer' can also have a non-nil and non-list value. This means to display the buffer in a window other than the selected one, even if it is already displayed in the selected window. If called interactively with a prefix -argument, ACTION is t. - -Optional argument FRAME, if non-nil, acts like an additional -ALIST entry (reusable-frames . FRAME), specifying the frame(s) to -search for a window that is already displaying the buffer. See -`display-buffer-reuse-window'." +argument, ACTION is t." (interactive (list (read-buffer "Display buffer: " (other-buffer)) (if current-prefix-arg t))) (let ((buffer (if (bufferp buffer-or-name) diff --git a/nt/ChangeLog b/nt/ChangeLog index e659b87eb76..4b0a65a59da 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -32,13 +32,13 @@ (offset_to_section, relocate_offset, OFFSET_TO_RVA) (RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET, PTR_TO_RVA) (OFFSET_TO_PTR, ROUND_UP, ROUND_DOWN) - (copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main): Use - DWORD_PTR instead of DWORD for compatibility with x64. + (copy_executable_and_move_sections, ADJUST_IMPORT_RVA, main): + Use DWORD_PTR instead of DWORD for compatibility with x64. * nmake.defs: Support AMD64. (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros. - * gmake.defs: (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): + * gmake.defs (EMACS_HEAPSIZE, EMACS_PURESIZE, EMACS_MANIFEST): New macros. * addsection.c (pfnCheckSumMappedFile, rva_to_section) @@ -478,7 +478,7 @@ 2012-02-05 Christoph Scholtes - * README.W32: Clarification for inclusion in source tarball. (Bug#9750) + * README.W32: Clarification for inclusion in source tarball (bug#9750). * gmake.defs (PRAGMA_SYSTEM_HEADER): Add for GCC. @@ -487,7 +487,7 @@ * makefile.w32-in (maybe-copy-distfiles) (maybe-copy-distfiles-CMD, maybe-copy-distfiles-SH) (create-tmp-dist-dir): Add to make --distfiles optional. - (dist): Use create-tmp-dist-dir and maybe-copy-distfiles. (Bug#10261) + (dist): Use create-tmp-dist-dir and maybe-copy-distfiles (bug#10261). 2012-02-04 Eli Zaretskii diff --git a/src/ChangeLog b/src/ChangeLog index 21d13a04e77..b845eeb3ceb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3,6 +3,58 @@ * xdisp.c (reseat_1): Make the information stored in it->cmp_it invalidate. +2012-10-17 Dmitry Antipov + + * buffer.c (Fkill_buffer): When unchaining the marker, + reset its buffer pointer to NULL (Bug#12652). + +2012-10-17 Dmitry Antipov + + Do not verify indirection counters of killed buffers (Bug#12579). + * buffer.h (BUFFER_CHECK_INDIRECTION): New macro. + * buffer.c (compact_buffer, set_buffer_internal_1): Use it. + +2012-10-16 Dmitry Antipov + + * alloc.c (Fmake_byte_code): Fix typo in comment. + * print.c (print_interval): Define as static to match prototype. + * indent.c (disptab_matches_widthtab, recompute_width_table): + Convert to eassert. + +2012-10-16 Dmitry Antipov + + * editfns.c (get_system_name): Remove. + * lisp.h (get_system_name): Remove prototype. + * xrdb.c (getenv, getpwuid, getpwnam): Remove prototypes. + (get_environ_db): Use Vsystem_name. Avoid call to strlen. + +2012-10-15 Daniel Colascione + + * dbusbind.c: Add comment explaining reason for previous change. + +2012-10-15 Martin Rudalics + + * window.c (Fwindow_end): Rewrite check whether cached position + can be used (Bug#12600). + (resize_frame_windows, grow_mini_window, shrink_mini_window): + Set windows_or_buffers_changed. + +2012-10-15 Daniel Colascione + + * dbusbind.c: Fix cygw32 build break when compiling with dbus + enabled by undefining the symbol "interface", which the platform + headers define to something incompatible. + +2012-10-14 Daniel Colascione + + * image.c (init_tiff_functions, init_imagemagick_functions) + (init_svg_functions): Fix cygw32 build break by using these + functions only when WINDOWSNT _and_ HAVE_NTGUI. + +2012-10-14 Jan Djärv + + * nsterm.m (ns_select): Count fd:s in writefs also (Bug#12422). + 2012-10-13 Jan Djärv * gtkutil.c (xg_set_widget_bg): Divide by 65535 (Bug#12612). @@ -58,8 +110,7 @@ a file exists. This avoids expensive system calls on MS-Windows. (Bug#12587) - * w32.c (init_environment): Call 'check_existing' instead of - 'stat'. + * w32.c (init_environment): Call 'check_existing' instead of 'stat'. * lread.c (openp) [WINDOWSNT]: Call 'access' instead of 'stat' to determine whether a file exists and is not a directory. @@ -199,7 +250,7 @@ * nsfont.m (Vfonts_in_cache): Remove, not needed as font.c handles caching. (nsfont_open): Remove setting of Vfonts_in_cache. - (syms_of_nsfont): Remove initialization of Vfonts_in_cache + (syms_of_nsfont): Remove initialization of Vfonts_in_cache. 2012-10-09 Eli Zaretskii @@ -266,7 +317,7 @@ * w32select.h (HAVE_W32SELECT): Remove. * w32select.c, w32proc.c, w32menu.c, w32console.c, w32.c: Include - w32common.h instead of w32heap.h + w32common.h instead of w32heap.h. * w32heap.h (ROUND_UP, ROUND_DOWN, get_page_size) (get_allocation_unit, get_processor_type, get_w32_major_version) @@ -277,8 +328,8 @@ * w32heap.c: Include w32common.h. (sysinfo_cache, syspage_mask, osinfo_cache, w32_major_version) - (w32_minor_version, w32_build_number, w32_subtype): Remove - duplicate definitions. + (w32_minor_version, w32_build_number, w32_subtype): + Remove duplicate definitions. * w32fns.c: Include w32common.h; include w32heap.h only in WINDOWSNT. @@ -389,7 +440,7 @@ Cygwin builds. Remove w32select declarations. * w32console.c (w32_sys_ring_bell, Fset_message_beep): Move to - w32fns.c. w32console.c is WINDOWSNT-only. + w32fns.c. w32console.c is WINDOWSNT-only. * w32fns.c: Include cygw32.h or w32.h depending on CYGWIN; more NTGUI_UNICODE tweaks. (See above.) Change _snprintf to the more @@ -490,12 +541,12 @@ * nsterm.m (ns_in_resize): Remove (Bug#12479). (ns_resize_handle_rect, mouseDown, mouseUp, mouseDragged): Remove. - (ns_clear_frame, sendEvent, windowDidResize, drawRect:): Remove - ns_in_resize check. + (ns_clear_frame, sendEvent, windowDidResize, drawRect:): + Remove ns_in_resize check. (ns_clear_frame_area): Remove resize handle code. * nsfns.m (ns_in_resize): Remove. - (x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove + (x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove ns_in_resize check. 2012-10-07 Paul Eggert @@ -524,7 +575,7 @@ (initFrameFromEmacs:): tbar_height renamed tibar_height. (windowDidEnterFullScreen:): Toggle toolbar for fullscreen to fix error in drawing background. - (toggleFullScreen:): Remove comment. Rearrange calls. + (toggleFullScreen:): Remove comment. Rearrange calls. Set toolbar values to zero, save old height in tobar_height. Restore tool bar height when leaving fullscreen. (canBecomeMainWindow): New function. @@ -538,8 +589,8 @@ * w32proc.c (stop_timer_thread): Fix declaration of 'err'. * w32.c (utime): Open the file with FILE_FLAG_BACKUP_SEMANTICS, so - that time stamps of directories could also be changed. Don't - request the too broad GENERIC_WRITE, only the more restrictive + that time stamps of directories could also be changed. + Don't request the too broad GENERIC_WRITE, only the more restrictive FILE_WRITE_ATTRIBUTES access rights. * fileio.c (Fset_file_times): Special-case ignoring errors for @@ -947,7 +998,7 @@ Call setCollectionBehavior if NEW_STYLE_FS. Initialize bwidth and tbar_height. (windowWillUseStandardFrame:defaultFrame:): Update frame parameter - fullscreen. Set maximized_width/height. Act on next_maximized. + fullscreen. Set maximized_width/height. Act on next_maximized. * nsterm.h (MAC_OS_X_VERSION_10_7, MAC_OS_X_VERSION_10_8): New. (EmacsView): Add variables for fullscreen. @@ -1603,7 +1654,7 @@ 2012-09-19 Paul Eggert * w32inevt.c (w32_console_read_socket): Return -1 on failure, not 0. - Ignore 'expected'. See Eli Zaretskii in + Ignore 'expected'. See Eli Zaretskii in (last line). * frame.c (read_integer): Remove. All uses replaced by strtol/strtoul. @@ -1670,7 +1721,7 @@ (bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc) (emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc): [!SYSTEM_MALLOC && !SYNC_INPUT]: - Remove. All uses removed. + Remove. All uses removed. (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different implementation, one that depends on whether the new macro XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT @@ -1960,7 +2011,7 @@ * alloc.c (discard_killed_buffers): New function. (mark_object): Use it for deleted windows and frames. (mark_object): If symbol's value is set up for a killed buffer - or deleted frame, restore it's global binding. + or deleted frame, restore its global binding. * data.c (swap_in_global_binding): Add GC notice. (swap_in_symval_forwarding): Use convenient set_blv_where. * window.c (wset_next_buffers, wset_prev_buffers): Move ... @@ -4267,7 +4318,7 @@ * nsterm.m (ns_set_vertical_scroll_bar, ns_redeem_scroll_bar) (EmacsWindow-accessibilityAttributeValue, EmacsScroller-initFrame:) - (EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114) + (EmacsScroller-dealloc): Adjust to use WVAR. (Bug#12114) * nsfns.m (ns_set_name_as_filename): Likewise. * nsmenu.m (ns_update_menubar): Likewise. * nsselect.m (symbol_to_nsstring): Adjust to use SVAR. @@ -6363,7 +6414,7 @@ Fix block vector allocation code to allow VECTOR_BLOCK_SIZE values which aren't power of 2. * alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro. - Verify it's value and the value of VECTOR_BLOCK_SIZE. Adjust users + Verify its value and the value of VECTOR_BLOCK_SIZE. Adjust users accordingly. 2012-07-03 Stefan Monnier @@ -7532,7 +7583,7 @@ bitfields where appropriate, remove unused fields. * window.h (struct window): Remove unused 'last_mark_x' and 'last_mark_y' fields. Rename 'mini_p' field to 'mini', - change it's type from Lisp_Object to bitfield. + change its type from Lisp_Object to bitfield. Change type of 'force_start', 'optional_new_start', 'last_had_star', 'update_mode_line' and 'start_at_line_beg' fields from Lisp_Object to bitfield. Adjust users accordingly. 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 ptrdiff_t i; register struct Lisp_Vector *p; - /* We used to purecopy everything here, if purify-flga was set. This worked + /* We used to purecopy everything here, if purify-flag was set. This worked OK for Emacs-23, but with Emacs-24's lexical binding code, it can be dangerous, since make-byte-code is used during execution to build closures, so any closure built during the preload phase would end up 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. */) void compact_buffer (struct buffer *buffer) { - /* Verify indirection counters. */ - if (buffer->base_buffer) - { - eassert (buffer->indirections == -1); - eassert (buffer->base_buffer->indirections > 0); - } - else - eassert (buffer->indirections >= 0); + BUFFER_CHECK_INDIRECTION (buffer); /* Skip dead buffers, indirect buffers and buffers which aren't changed since last compaction. */ - if (!NILP (buffer->INTERNAL_FIELD (name)) + if (BUFFER_LIVE_P (buffer) && (buffer->base_buffer == NULL) && (buffer->text->compact != buffer->text->modiff)) { @@ -1888,19 +1881,20 @@ cleaning up all windows currently displaying the buffer to be killed. */) if (b->base_buffer) { - { /* Unchain all markers that belong to this indirect buffer. - Don't unchain the markers that belong to the base buffer - or its other indirect buffers. */ - struct Lisp_Marker **mp; - for (mp = &BUF_MARKERS (b); *mp; ) - { - struct Lisp_Marker *m = *mp; - if (m->buffer == b) + /* Unchain all markers that belong to this indirect buffer. + Don't unchain the markers that belong to the base buffer + or its other indirect buffers. */ + struct Lisp_Marker **mp = &BUF_MARKERS (b); + while ((m = *mp)) + { + if (m->buffer == b) + { + m->buffer = NULL; *mp = m->next; - else - mp = &m->next; - } - } + } + else + mp = &m->next; + } } else { @@ -2114,6 +2108,8 @@ set_buffer_internal_1 (register struct buffer *b) if (current_buffer == b) return; + BUFFER_CHECK_INDIRECTION (b); + old_buf = current_buffer; current_buffer = b; last_known_column_point = -1; /* invalidate indentation cache */ 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) #define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name))) +/* Verify indirection counters. */ + +#define BUFFER_CHECK_INDIRECTION(b) \ + do { \ + if (BUFFER_LIVE_P (b)) \ + { \ + if (b->base_buffer) \ + { \ + eassert (b->indirections == -1); \ + eassert (b->base_buffer->indirections > 0); \ + } \ + else \ + eassert (b->indirections >= 0); \ + } \ + } while (0) + /* Chain of all buffers, including killed ones. */ extern struct buffer *all_buffers; 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 . */ #define DBUS_NUM_MESSAGE_TYPES 5 #endif + +/* Some platforms define the symbol "interface", but we want to use it + * as a variable name below. */ + +#ifdef interface +#undef interface +#endif + /* Subroutines. */ static Lisp_Object Qdbus_init_bus; 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, return Vsystem_name; } -const char * -get_system_name (void) -{ - if (STRINGP (Vsystem_name)) - return SSDATA (Vsystem_name); - else - return ""; -} - DEFUN ("emacs-pid", Femacs_pid, Semacs_pid, 0, 0, 0, doc: /* Return the process ID of Emacs, as a number. */) (void) 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] = {":index", IMAGE_NON_NEGATIVE_INTEGER_VALUE, 0} }; -#ifdef HAVE_NTGUI +#if defined HAVE_NTGUI && defined WINDOWSNT static bool init_tiff_functions (void); #else #define init_tiff_functions NULL @@ -7529,7 +7529,7 @@ static struct image_keyword imagemagick_format[IMAGEMAGICK_LAST] = {":crop", IMAGE_DONT_CHECK_VALUE_TYPE, 0} }; -#ifdef HAVE_NTGUI +#if defined HAVE_NTGUI && defined WINDOWSNT static bool init_imagemagick_functions (void); #else #define init_imagemagick_functions NULL @@ -8083,7 +8083,7 @@ static const struct image_keyword svg_format[SVG_LAST] = {":background", IMAGE_STRING_OR_NIL_VALUE, 0} }; -#ifdef HAVE_NTGUI +#if defined HAVE_NTGUI && defined WINDOWSNT static bool init_svg_functions (void); #else #define init_svg_functions NULL 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 { int i; - if (widthtab->header.size != 256) - emacs_abort (); + eassert (widthtab->header.size == 256); for (i = 0; i < 256; i++) if (character_width (i, disptab) @@ -141,8 +140,7 @@ recompute_width_table (struct buffer *buf, struct Lisp_Char_Table *disptab) if (!VECTORP (BVAR (buf, width_table))) bset_width_table (buf, Fmake_vector (make_number (256), make_number (0))); widthtab = XVECTOR (BVAR (buf, width_table)); - if (widthtab->header.size != 256) - emacs_abort (); + eassert (widthtab->header.size == 256); for (i = 0; i < 256; i++) XSETFASTINT (widthtab->contents[i], character_width (i, disptab)); 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); extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool); extern void init_editfns (void); -const char *get_system_name (void); extern void syms_of_editfns (void); extern void set_time_zone_rule (const char *); 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 @@ overwriting cursor (usually when cursor on a tab) */ /* NSTRACE (ns_select); */ for (k = 0; readfds && k < nfds+1; k++) - if (FD_ISSET(k, readfds)) ++nr; + { + if (FD_ISSET(k, readfds)) ++nr; + if (FD_ISSET(k, writefds)) ++nr; + } if (NSApp == nil || (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0)) 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 /* Print a description of INTERVAL using PRINTCHARFUN. This is part of printing a string that has text properties. */ -void +static void print_interval (INTERVAL interval, Lisp_Object printcharfun) { if (NILP (interval->plist)) 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. */) #endif if (! NILP (update) - && ! (! NILP (w->window_end_valid) - && w->last_modified >= BUF_MODIFF (b) - && w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b)) + && (windows_or_buffers_changed || NILP (w->window_end_valid)) && !noninteractive) { struct text_pos startp; @@ -3795,6 +3793,8 @@ resize_frame_windows (struct frame *f, int size, int horflag) (m, make_number (XINT (r->top_line) + XINT (r->total_lines))); } } + + windows_or_buffers_changed++; } @@ -4208,6 +4208,7 @@ grow_mini_window (struct window *w, int delta) w->last_modified = 0; w->last_overlay_modified = 0; + windows_or_buffers_changed++; adjust_glyphs (f); unblock_input (); } @@ -4245,6 +4246,7 @@ shrink_mini_window (struct window *w) w->last_modified = 0; w->last_overlay_modified = 0; + windows_or_buffers_changed++; adjust_glyphs (f); unblock_input (); } 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 . */ #include #include #include - +#include #include #include "lisp.h" @@ -48,11 +48,6 @@ along with GNU Emacs. If not, see . */ #include "keyboard.h" #endif -extern char *getenv (const char *); - -extern struct passwd *getpwuid (uid_t); -extern struct passwd *getpwnam (const char *); - char *x_get_string_resource (XrmDatabase rdb, const char *name, const char *class); static int file_p (const char *filename); @@ -429,8 +424,9 @@ get_environ_db (void) { static char const xdefaults[] = ".Xdefaults-"; char *home = gethomedir (); - char const *host = get_system_name (); - ptrdiff_t pathsize = strlen (home) + sizeof xdefaults + strlen (host); + char const *host = SSDATA (Vsystem_name); + ptrdiff_t pathsize = (strlen (home) + sizeof xdefaults + + SBYTES (Vsystem_name)); path = xrealloc (home, pathsize); strcat (strcat (path, xdefaults), host); p = path;