diff options
author | Glenn Morris <rgm@gnu.org> | 2014-10-29 22:15:28 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2014-10-29 22:15:28 -0700 |
commit | 52b410c60aebeb769ec9580af25ca50df2a44751 (patch) | |
tree | ba5de0b896c5ea410ceb2f2f1866c0fac73ea236 | |
parent | cc99f920f507d28bb1422f8a3d52723ddc734c8a (diff) | |
parent | 237bf45a48999d5a8a3617822dddf3ea305bc269 (diff) | |
download | emacs-52b410c60aebeb769ec9580af25ca50df2a44751.tar.gz |
Merge from emacs-24; up to 117634
-rw-r--r-- | doc/emacs/ChangeLog | 17 | ||||
-rw-r--r-- | doc/emacs/display.texi | 17 | ||||
-rw-r--r-- | doc/emacs/frames.texi | 14 | ||||
-rw-r--r-- | doc/emacs/killing.texi | 1 | ||||
-rw-r--r-- | doc/emacs/search.texi | 3 | ||||
-rw-r--r-- | doc/emacs/windows.texi | 12 | ||||
-rw-r--r-- | doc/misc/ChangeLog | 9 | ||||
-rw-r--r-- | doc/misc/efaq.texi | 22 | ||||
-rw-r--r-- | doc/misc/eieio.texi | 10 | ||||
-rw-r--r-- | etc/DEBUG | 19 | ||||
-rw-r--r-- | etc/NEWS.24 | 31 | ||||
-rw-r--r-- | lisp/ChangeLog | 24 | ||||
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 23 | ||||
-rw-r--r-- | lisp/emacs-lisp/cl-extra.el | 1 | ||||
-rw-r--r-- | lisp/emulation/viper-util.el | 2 | ||||
-rw-r--r-- | lisp/emulation/viper.el | 3 | ||||
-rw-r--r-- | lisp/erc/erc-track.el | 6 | ||||
-rw-r--r-- | lisp/progmodes/cc-defs.el | 10 | ||||
-rw-r--r-- | lisp/progmodes/cc-langs.el | 6 | ||||
-rw-r--r-- | lisp/progmodes/compile.el | 11 | ||||
-rw-r--r-- | lisp/startup.el | 5 | ||||
-rw-r--r-- | src/ChangeLog | 9 | ||||
-rw-r--r-- | src/dispnew.c | 2 | ||||
-rw-r--r-- | src/fileio.c | 4 |
24 files changed, 197 insertions, 64 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 901eaac42c3..adf61e833b3 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,20 @@ +2014-10-30 Eli Zaretskii <eliz@gnu.org> + + * frames.texi (Scroll Bars): Improve indexing of faces. + + * killing.texi (Secondary Selection): Improve indexing of faces. + + * search.texi (Basic Isearch, Query Replace): Improve indexing of faces. + + * display.texi (Standard Faces, Text Display) + (Useless Whitespace): Improve indexing of faces. + + * frames.texi (Frame Commands): Document and index + 'frame-resize-pixelwise'. + + * windows.texi (Split Window): Document and index + 'window-resize-pixelwise'. + 2014-10-22 Tassilo Horn <tsdh@gnu.org> * misc.texi (Document View): Adapt to latest doc-view changes wrt diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 0a77e722d32..a5555d58054 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -578,6 +578,7 @@ Parameters}. @node Standard Faces @section Standard Faces +@cindex standard faces Here are the standard faces for specifying text appearance. You can apply them to specific text when you want the effects they produce. @@ -598,8 +599,10 @@ This face underlines text. This face forces use of a fixed-width font. It's reasonable to customize this face to use a different fixed-width font, if you like, but you should not make it a variable-width font. +@cindex variable-pitch face @item variable-pitch This face forces use of a variable-width font. +@cindex shadow face @item shadow This face is used for making the text less noticeable than the surrounding ordinary text. Usually this can be achieved by using shades of gray in @@ -647,25 +650,34 @@ frame: @table @code @item mode-line +@cindex mode-line face +@cindex faces for mode lines This face is used for the mode line of the currently selected window, and for menu bars when toolkit menus are not used. By default, it's drawn with shadows for a ``raised'' effect on graphical displays, and drawn as the inverse of the default face on non-windowed terminals. @item mode-line-inactive +@cindex mode-line-inactive face Like @code{mode-line}, but used for mode lines of the windows other than the selected one (if @code{mode-line-in-non-selected-windows} is non-@code{nil}). This face inherits from @code{mode-line}, so changes in that face affect mode lines in all windows. @item mode-line-highlight -Like @code{highlight}, but used for portions of text on mode lines. +@cindex mode-line-highlight face +Like @code{highlight}, but used for mouse-sensitive portions of text +on mode lines. Such portions of text typically pop up tooltips +(@pxref{Tooltips}) when the mouse pointer hovers above them. @item mode-line-buffer-id +@cindex mode-line-buffer-id face This face is used for buffer identification parts in the mode line. @item header-line +@cindex header-line face Similar to @code{mode-line} for a window's header line, which appears at the top of a window just as the mode line appears at the bottom. Most windows do not have a header line---only some special modes, such Info mode, create one. @item vertical-border +@cindex vertical-border face This face is used for the vertical divider between windows on text terminals. @item minibuffer-prompt @@ -1110,6 +1122,7 @@ empty lines at the end of a buffer, without realizing it. In most cases, this @dfn{trailing whitespace} has no effect, but sometimes it can be a nuisance. +@cindex trailing-whitespace face You can make trailing whitespace at the end of a line visible by setting the buffer-local variable @code{show-trailing-whitespace} to @code{t}. Then Emacs displays trailing whitespace, using the face @@ -1418,6 +1431,8 @@ as octal escape sequences instead of caret escape sequences. @cindex non-breaking space @cindex non-breaking hyphen @cindex soft hyphen +@cindex escape-glyph face +@cindex nobreak-space face Some non-@acronym{ASCII} characters have the same appearance as an @acronym{ASCII} space or hyphen (minus) character. Such characters can cause problems if they are entered into a buffer without your diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index da0dd8aa6ac..27380cd565e 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -376,6 +376,9 @@ position (@pxref{Split Window}). between two side-by-side mode lines, you can move the vertical boundary to the left or right. + Note that resizing windows is affected by the value of +@code{window-resize-pixelwise}, see @ref{Split Window}. + @node Creating Frames @section Creating Frames @cindex creating frames @@ -469,9 +472,13 @@ hides window manager decorations, giving slightly more screen space to Emacs itself.) @end table +@vindex frame-resize-pixelwise Note that with some window managers you may have to customize the variable @code{frame-resize-pixelwise} to a non-@code{nil} value in -order to make a frame truly ``maximized'' or ``fullscreen''. +order to make a frame truly ``maximized'' or ``fullscreen''. This +variable, when set to a non-@code{nil} value, in general allows +resizing frames at pixel resolution, rather than in integral multiples +of lines and columns. The @kbd{C-x 5 0} (@code{delete-frame}) command deletes the selected frame. However, it will refuse to delete the last frame in an Emacs @@ -955,6 +962,10 @@ end of the buffer is shown; if @code{nil}, the thumb will be at the bottom when the end of the buffer is shown. You can not over-scroll when the entire buffer is visible. +@cindex scroll-bar face + The visual appearance of the scroll bars is controlled by the +@code{scroll-bar} face. + @cindex Horizontal Scroll Bar @cindex Horizontal Scroll Bar mode On graphical displays with toolkit support, Emacs may also supply a @@ -987,7 +998,6 @@ or disable horizontal scroll bars (@pxref{Resources}). To control the scroll bar height, change the @code{scroll-bar-height} frame parameter (@pxref{Frame Parameters,,, elisp, The Emacs Lisp Reference Manual}). - @node Drag and Drop @section Drag and Drop @cindex drag and drop diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index f4b1752643d..e258d1ca1a0 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -588,6 +588,7 @@ you can access it using the following Emacs commands: @table @kbd @findex mouse-set-secondary @kindex M-Drag-Mouse-1 +@cindex secondary-selection face @item M-Drag-Mouse-1 Set the secondary selection, with one end at the place where you press down the button, and the other end at the place where you release it diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index bdfb534e186..bd0bd0bf641 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -86,6 +86,7 @@ not be the first @samp{F} previously found. After another @kbd{O}, the cursor moves to just after the first @samp{FOO}. @cindex faces for highlighting search matches +@cindex isearch face At each step, Emacs highlights the @dfn{current match}---the buffer text that matches the search string---using the @code{isearch} face (@pxref{Faces}). The current search string is also displayed in the @@ -1280,6 +1281,8 @@ It works like @code{replace-regexp} except that it queries like @code{query-replace}. @cindex faces for highlighting query replace +@cindex query-replace face +@cindex lazy-highlight face These commands highlight the current match using the face @code{query-replace}. They highlight other matches using @code{lazy-highlight} just like incremental search (@pxref{Incremental diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 4a5f24c13fb..4045908d4d5 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -134,6 +134,18 @@ clicking @kbd{C-Mouse-2} in the scroll bar, which puts a horizontal divider where you click (this feature does not work when Emacs uses GTK+ scroll bars). +@vindex window-resize-pixelwise + By default, when you split a window, Emacs gives each of the +resulting windows dimensions that are an integral multiple of the +default font size of the frame. That might subdivide the screen +estate unevenly between the resulting windows. If you set the +variable @code{window-resize-pixelwise} to a non-@code{nil} value, +Emacs will give each window the same number of pixels (give or take +one pixel if the initial dimension was an odd number of pixels). Note +that when a frame's pixel size is not a multiple of the frame's +character size, at least one window may get resized pixelwise even if +this option is @code{nil}. + @node Other Window @section Using Other Windows diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 82e768c6564..1ecc0a65741 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,12 @@ +2014-10-30 Glenn Morris <rgm@gnu.org> + + * efaq.texi (Gnus does not work with NNTP): Remove; ancient. + +2014-10-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * eieio.texi (Accessing Slots, CLOS compatibility): Adjust wording + since `setf' is in core rather than in CL nowadays. + 2014-10-29 Paul Eggert <eggert@cs.ucla.edu> Simplify use of current-time and friends. diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index 4d1df8b97dc..0159101916d 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -4190,7 +4190,6 @@ fontset, or you can select it by setting the default font in your * Replying to the sender of a message:: * Automatically starting a mail or news reader:: * Reading news with Emacs:: -* Gnus does not work with NNTP:: * Making Gnus faster:: * Catching up in all newsgroups:: @end menu @@ -4384,27 +4383,6 @@ Manual, gnus, The Gnus Manual}, which includes @ref{Frequently Asked Questions,, the Gnus FAQ, gnus, The Gnus Manual}. -@node Gnus does not work with NNTP -@section Why doesn't Gnus work via NNTP? -@cindex Gnus and NNTP -@cindex NNTP, Gnus fails to work with - -There is a bug in NNTP version 1.5.10, such that when multiple requests -are sent to the NNTP server, the server only handles the first one -before blocking waiting for more input which never comes. NNTP version -1.5.11 claims to fix this. - -You can work around the bug inside Emacs like this: - -@lisp -(setq nntp-maximum-request 1) -@end lisp - -You can find out what version of NNTP your news server is running by -telnetting to the NNTP port (usually 119) on the news server machine -(i.e., @kbd{telnet server-machine 119}). The server should give its -version number in the welcome message. Type @kbd{quit} to get out. - @node Making Gnus faster @section How do I make Gnus faster? @cindex Faster, starting Gnus diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index 8f93300e24a..80e52baf255 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi @@ -755,8 +755,8 @@ Unlike @code{oref}, the symbol for @var{slot} must be quoted. @defun set-slot-value object slot value @anchor{set-slot-value} -This is not a CLOS function, but is meant to mirror @code{slot-value} if -you don't want to use the cl package's @code{setf} function. This +This is not a CLOS function, but is the setter for @code{slot-value} +used by the @code{setf} macro. This function sets the value of @var{slot} from @var{object}. Unlike @code{oset}, the symbol for @var{slot} must be quoted. @end defun @@ -790,7 +790,7 @@ This establishes a lexical environment for referring to the slots in the instance named by the given slot-names as though they were variables. Within such a context the value of the slot can be specified by using its slot name, as if it were a lexically bound -variable. Both setf and setq can be used to set the value of the +variable. Both @code{setf} and @code{setq} can be used to set the value of the slot. @var{spec-list} is of a form similar to @dfn{let}. For example: @@ -1850,10 +1850,6 @@ for the given object. This is different than that found in CLOS because in @eieio{} this function accepts replacement arguments. This permits subclasses to modify arguments as they are passed up the tree. If no arguments are given, the expected CLOS behavior is used. -@item setf -If the common-lisp subsystem is loaded, the setf parameters are also -loaded so the form @code{(setf (slot-value object slot) t)} should -work. @end table CLOS supports the @code{describe} command, but @eieio{} provides diff --git a/etc/DEBUG b/etc/DEBUG index 096bdbc48c9..89e1a85088c 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -398,9 +398,13 @@ to start debugging. Don't assume Emacs is `hung'--it may instead be in an infinite loop. To find out which, make the problem happen under GDB and stop Emacs once it is not responding. (If Emacs is using X Windows directly, you -can stop Emacs by typing C-z at the GDB job.) Then try stepping with -`step'. If Emacs is hung, the `step' command won't return. If it is -looping, `step' will return. +can stop Emacs by typing C-z at the GDB job. On MS-Windows, run Emacs +as usual, and then attach GDB to it -- that will usually interrupt +whatever Emacs is doing and let you perform the steps described +below.) + +Then try stepping with `step'. If Emacs is hung, the `step' command +won't return. If it is looping, `step' will return. If this shows Emacs is hung in a system call, stop it again and examine the arguments of the call. If you report the bug, it is very @@ -420,10 +424,11 @@ stepping, you will see where the loop starts and ends. Also, examine the data being used in the loop and try to determine why the loop does not exit when it should. -You can also trying sending Emacs SIGUSR2, which, if `debug-on-event' -has its default value, will cause Emacs to attempt to break it out of -its current loop and into the Lisp debugger. This feature is useful -when a C-level debugger is not conveniently available. +On GNU and Unix systems, you can also trying sending Emacs SIGUSR2, +which, if `debug-on-event' has its default value, will cause Emacs to +attempt to break it out of its current loop and into the Lisp +debugger. This feature is useful when a C-level debugger is not +conveniently available. ** If certain operations in Emacs are slower than they used to be, here is some advice for how to find out why. diff --git a/etc/NEWS.24 b/etc/NEWS.24 index eba9b940585..8c039a55a2f 100644 --- a/etc/NEWS.24 +++ b/etc/NEWS.24 @@ -14,6 +14,37 @@ and NEWS.1-17 for changes in older Emacs versions. You can narrow news to a specific version by calling `view-emacs-news' with a prefix argument or by typing C-u C-h C-n. +Temporary note: ++++ indicates that all necessary documentation updates are complete. + (This means all relevant manuals in doc/ AND lisp doc-strings.) +--- means no change in the manuals is needed. +When you add a new item, use the appropriate mark if you are sure it applies, +otherwise leave it unmarked. + + +* Changes in Emacs 24.5 + +--- +** The default value of `history-length' has increased to 100. + + +* Changes in Specialized Modes and Packages in Emacs 24.5 + +** `call-process-shell-command' and `process-file-shell-command' +don't take "&rest args" any more. + +** Obsolete packages + +*** cc-compat.el + +--- +*** crisp.el, tpu-edt.el, ws-mode.el +These emulations of old editors are believed to be no longer relevant + - contact emacs-devel@gnu.org if you disagree. + +--- +*** vi.el, vip.el (try M-x viper instead) + * Installation Changes in Emacs 24.4 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1def6877f2c..56da0d6e154 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,27 @@ +2014-10-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/cc-defs.el (c--macroexpand-all): New function (bug#18845). + (c-lang-defconst): + * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Use it. + +2014-10-30 Eli Zaretskii <eliz@gnu.org> + + * progmodes/compile.el (compilation-start): + If compilation-scroll-output is non-nil, don't force window-start of + the compilation buffer to be at beginning of buffer. (Bug#18874) + + * startup.el (fancy-about-text): Read the entire tutorial, not + just its first 256 bytes. (Bug#18760) + +2014-10-30 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/bytecomp.el: Require cl-extra (bug#18804). + * emacs-lisp/cl-extra.el: Add missing provide. + + * emacs-lisp/bytecomp.el (byte-compile-and-folded): Optimize case where + all args are copyable (bug#18767). + (=, <, >, <=, >=): Re-enable the optimization. + 2014-10-29 Glenn Morris <rgm@gnu.org> * net/rcirc.el (rcirc-fill-column): Unbump :version. Mark :risky. diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 62de943f1be..392f6ee83cd 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -120,7 +120,11 @@ (require 'backquote) (require 'macroexp) (require 'cconv) -(eval-when-compile (require 'cl-lib)) + +;; During bootstrap, cl-loaddefs.el is not created yet, so loading cl-lib +;; doesn't setup autoloads for things like cl-every, which is why we have to +;; require cl-extra instead (bug#18804). +(require 'cl-extra) (or (fboundp 'defsubst) ;; This really ought to be loaded already! @@ -3283,11 +3287,11 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\"" (byte-defop-compiler cons 2) (byte-defop-compiler aref 2) (byte-defop-compiler set 2) -(byte-defop-compiler (= byte-eqlsign) 2) ;; -and bug#18767 -(byte-defop-compiler (< byte-lss) 2) ;; -and bug#18767 -(byte-defop-compiler (> byte-gtr) 2) ;; -and bug#18767 -(byte-defop-compiler (<= byte-leq) 2) ;; -and bug#18767 -(byte-defop-compiler (>= byte-geq) 2) ;; -and bug#18767 +(byte-defop-compiler (= byte-eqlsign) 2-and) +(byte-defop-compiler (< byte-lss) 2-and) +(byte-defop-compiler (> byte-gtr) 2-and) +(byte-defop-compiler (<= byte-leq) 2-and) +(byte-defop-compiler (>= byte-geq) 2-and) (byte-defop-compiler get 2) (byte-defop-compiler nth 2) (byte-defop-compiler substring 2-3) @@ -3354,13 +3358,14 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\"" (defun byte-compile-and-folded (form) "Compile calls to functions like `<='. These implicitly `and' together a bunch of two-arg bytecodes." - ;; FIXME: bug#18767 means we can't do it this way! (let ((l (length form))) (cond ((< l 3) (byte-compile-form `(progn ,(nth 1 form) t))) ((= l 3) (byte-compile-two-args form)) - (t (byte-compile-form `(and (,(car form) ,(nth 1 form) ,(nth 2 form)) - (,(car form) ,@(nthcdr 2 form)))))))) + ((cl-every #'macroexp-copyable-p (nthcdr 2 form)) + (byte-compile-form `(and (,(car form) ,(nth 1 form) ,(nth 2 form)) + (,(car form) ,@(nthcdr 2 form))))) + (t (byte-compile-normal-call form))))) (defun byte-compile-three-args (form) (if (not (= (length form) 4)) diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index a7970261608..b8b7b2c170b 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -720,4 +720,5 @@ including `cl-block' and `cl-eval-when'." ;; generated-autoload-file: "cl-loaddefs.el" ;; End: +(provide 'cl-extra) ;;; cl-extra.el ends here diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el index 178b23e1fca..4e3b71e3104 100644 --- a/lisp/emulation/viper-util.el +++ b/lisp/emulation/viper-util.el @@ -984,7 +984,7 @@ Otherwise return the normal value." ;; macros, since it enables certain macros to be shared between X and TTY modes ;; by correctly mapping key sequences for Left/Right/... (on an ascii ;; terminal) into logical keys left, right, etc. -(defun viper-read-key () +(defun viper-read-key () ;; FIXME: Use `read-key'? (let ((overriding-local-map viper-overriding-map) (inhibit-quit t) help-char key) diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el index d1353bdc8fa..c7394e1cea5 100644 --- a/lisp/emulation/viper.el +++ b/lisp/emulation/viper.el @@ -531,6 +531,7 @@ If Viper is enabled, turn it off. Otherwise, turn it on." (if viper-mode () (setq viper-mode t) + ;; FIXME: Don't reload! (load-library "viper")) (if viper-first-time ; Important check. Prevents mix-up of startup @@ -887,6 +888,7 @@ Two differences: ;; When viper-mode is executed in such a case, it will set the major mode ;; back to fundamental-mode. (if (eq (default-value 'major-mode) 'fundamental-mode) + ;; FIXME: We should use after-change-major-mode-hook instead! (setq-default major-mode 'viper-mode)) (viper-setup-ESC-to-escape t) @@ -936,6 +938,7 @@ Two differences: (defadvice self-insert-command (around viper-self-insert-ad activate) "Ignore all self-inserting keys in the vi-state." + ;; FIXME: Use remapping? (if (and (eq viper-current-state 'vi-state) ;; Do not use called-interactively-p here. XEmacs does not have it ;; and interactive-p is just fine. diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el index 47e76c3ea1e..fae6be433fd 100644 --- a/lisp/erc/erc-track.el +++ b/lisp/erc/erc-track.el @@ -265,9 +265,7 @@ nil - don't add to mode line." (erc-track-add-to-mode-line val)))) (defun erc-modified-channels-object (strings) - "Generate a new `erc-modified-channels-object' based on STRINGS. -If STRINGS is nil, we initialize `erc-modified-channels-object' to -an appropriate initial value for this flavor of Emacs." + "Generate a new `erc-modified-channels-object' based on STRINGS." (if strings (if (featurep 'xemacs) (let ((e-m-c-s '("["))) @@ -743,7 +741,7 @@ only consider active buffers visible.") (defvar erc-modified-channels-update-inside nil "Variable to prevent running `erc-modified-channels-update' multiple times. Without it, you cannot debug `erc-modified-channels-display', -because the debugger also cases changes to the window-configuration.") +because the debugger also causes changes to the window-configuration.") (defun erc-modified-channels-update (&rest _args) "This function updates the information in `erc-modified-channels-alist' diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index dc31fde131d..1d8b8abeb2f 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -174,6 +174,10 @@ This variant works around bugs in `eval-when-compile' in various (put 'cc-eval-when-compile 'lisp-indent-hook 0)) +(eval-and-compile + (defalias 'c--macroexpand-all + (if (fboundp 'macroexpand-all) + 'macroexpand-all 'cl-macroexpand-all))) ;;; Macros. @@ -1841,7 +1845,7 @@ system." immediately, i.e. at the same time as the `c-lang-defconst' form itself is evaluated." ;; Evaluate at macro expansion time, i.e. in the - ;; `macroexpand-all' inside `c-lang-defconst'. + ;; `c--macroexpand-all' inside `c-lang-defconst'. (eval form)) (defmacro c-lang-defconst (name &rest args) @@ -1885,7 +1889,7 @@ constant. A file is identified by its base name." (let* ((sym (intern (symbol-name name) c-lang-constants)) ;; Make `c-lang-const' expand to a straightforward call to - ;; `c-get-lang-constant' in `macroexpand-all' below. + ;; `c-get-lang-constant' in `c--macroexpand-all' below. ;; ;; (The default behavior, i.e. to expand to a call inside ;; `eval-when-compile' should be equivalent, since that macro @@ -1948,7 +1952,7 @@ constant. A file is identified by its base name." ;; reason, but we also use this expansion handle ;; `c-lang-defconst-eval-immediately' and to register ;; dependencies on the `c-lang-const's in VAL.) - (setq val (macroexpand-all val)) + (setq val (c--macroexpand-all val)) (setq bindings `(cons (cons ',assigned-mode (lambda () ,val)) ,bindings) args (cdr args)))) diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index bab928ac5dd..a8dc3b8968c 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -3238,7 +3238,7 @@ accomplish that conveniently." `(lambda () ;; This let sets up the context for `c-mode-var' and similar - ;; that could be in the result from `macroexpand-all'. + ;; that could be in the result from `c--macroexpand-all'. (let ((c-buffer-is-cc-mode ',mode) current-var source-eval) (c-make-emacs-variables-local) @@ -3248,12 +3248,12 @@ accomplish that conveniently." (setq ,@(let ((c-buffer-is-cc-mode mode) (c-lang-const-expansion 'immediate)) ;; `c-lang-const' will expand to the evaluated - ;; constant immediately in `macroexpand-all' + ;; constant immediately in `c--macroexpand-all' ;; below. (mapcan (lambda (init) `(current-var ',(car init) - ,(car init) ,(macroexpand-all + ,(car init) ,(c--macroexpand-all (elt init 1)))) ;; Note: The following `append' copies the ;; first argument. That list is small, so diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index ee066f4c56c..d3d03cd2030 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -1676,7 +1676,16 @@ Returns the compilation buffer created." (list command mode name-function highlight-regexp)) (set (make-local-variable 'revert-buffer-function) 'compilation-revert-buffer) - (and outwin (set-window-start outwin (point-min))) + (and outwin + ;; Forcing the window-start overrides the usual redisplay + ;; feature of bringing point into view, so setting the + ;; window-start to top of the buffer risks losing the + ;; effect of moving point to EOB below, per + ;; compilation-scroll-output, if the command is long + ;; enough to push point outside of the window. This + ;; could happen, e.g., in `rgrep'. + (not compilation-scroll-output) + (set-window-start outwin (point-min))) ;; Position point as the user will see it. (let ((desired-visible-point diff --git a/lisp/startup.el b/lisp/startup.el index 0dacf191c14..88611a0cd8f 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1496,7 +1496,10 @@ Each element in the list should be a list of strings or pairs (title (with-temp-buffer (insert-file-contents (expand-file-name tut tutorial-directory) - nil 0 256) + ;; Reat the entire file, to make sure any + ;; coding cookies and other local variables + ;; get acted upon. + nil) (search-forward ".") (buffer-substring (point-min) (1- (point)))))) ;; If there is a specific tutorial for the current language diff --git a/src/ChangeLog b/src/ChangeLog index 25009f8a310..89c0bb8fd8e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2014-10-30 Eli Zaretskii <eliz@gnu.org> + + * fileio.c (Fexpand_file_name): Use make_unibyte_string, not + build_string, when importing a home directory. (Bug#18873) + + * dispnew.c (buffer_posn_from_coords): Use + WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to + account for the header-line height. (Bug#18839) + 2014-10-28 Ulf Jasper <ulf.jasper@web.de> * xml.c (parse_region): Do not forget the first document child. diff --git a/src/dispnew.c b/src/dispnew.c index 3ab8bcf3e64..900912d9d97 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -5205,7 +5205,7 @@ buffer_posn_from_coords (struct window *w, int *x, int *y, struct display_pos *p start position, i.e. it excludes the header-line row, but MATRIX_ROW includes the header-line row. Adjust for a possible header-line row. */ - it_vpos = it.vpos + WINDOW_WANTS_MODELINE_P (w); + it_vpos = it.vpos + WINDOW_WANTS_HEADER_LINE_P (w); if (it_vpos < w->current_matrix->nrows && (row = MATRIX_ROW (w->current_matrix, it_vpos), row->enabled_p)) diff --git a/src/fileio.c b/src/fileio.c index 4ba1c5914e8..cdbd0be28ad 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1163,7 +1163,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) char newdir_utf8[MAX_UTF8_PATH]; filename_from_ansi (newdir, newdir_utf8); - tem = build_string (newdir_utf8); + tem = make_unibyte_string (newdir_utf8, strlen (newdir_utf8)); } else #endif @@ -1199,7 +1199,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) /* `getpwnam' may return a unibyte string, which will bite us since we expect the directory to be multibyte. */ - tem = build_string (newdir); + tem = make_unibyte_string (newdir, strlen (newdir)); newdirlim = newdir + SBYTES (tem); if (multibyte && !STRING_MULTIBYTE (tem)) { |