summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2014-10-29 22:15:28 -0700
committerGlenn Morris <rgm@gnu.org>2014-10-29 22:15:28 -0700
commit52b410c60aebeb769ec9580af25ca50df2a44751 (patch)
treeba5de0b896c5ea410ceb2f2f1866c0fac73ea236
parentcc99f920f507d28bb1422f8a3d52723ddc734c8a (diff)
parent237bf45a48999d5a8a3617822dddf3ea305bc269 (diff)
Merge from emacs-24; up to 117634
-rw-r--r--doc/emacs/ChangeLog17
-rw-r--r--doc/emacs/display.texi17
-rw-r--r--doc/emacs/frames.texi14
-rw-r--r--doc/emacs/killing.texi1
-rw-r--r--doc/emacs/search.texi3
-rw-r--r--doc/emacs/windows.texi12
-rw-r--r--doc/misc/ChangeLog9
-rw-r--r--doc/misc/efaq.texi22
-rw-r--r--doc/misc/eieio.texi10
-rw-r--r--etc/DEBUG19
-rw-r--r--etc/NEWS.2431
-rw-r--r--lisp/ChangeLog24
-rw-r--r--lisp/emacs-lisp/bytecomp.el23
-rw-r--r--lisp/emacs-lisp/cl-extra.el1
-rw-r--r--lisp/emulation/viper-util.el2
-rw-r--r--lisp/emulation/viper.el3
-rw-r--r--lisp/erc/erc-track.el6
-rw-r--r--lisp/progmodes/cc-defs.el10
-rw-r--r--lisp/progmodes/cc-langs.el6
-rw-r--r--lisp/progmodes/compile.el11
-rw-r--r--lisp/startup.el5
-rw-r--r--src/ChangeLog9
-rw-r--r--src/dispnew.c2
-rw-r--r--src/fileio.c4
24 files changed, 197 insertions, 64 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 901eaac42c..adf61e833b 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 0a77e722d3..a5555d5805 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 da0dd8aa6a..27380cd565 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 f4b1752643..e258d1ca1a 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 bdfb534e18..bd0bd0bf64 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 4a5f24c13f..4045908d4d 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 82e768c656..1ecc0a6574 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 4d1df8b97d..0159101916 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 8f93300e24..80e52baf25 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 096bdbc48c..89e1a85088 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 eba9b94058..8c039a55a2 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 1def6877f2..56da0d6e15 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 62de943f1b..392f6ee83c 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 a797026160..b8b7b2c170 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 178b23e1fc..4e3b71e310 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 d1353bdc8f..c7394e1cea 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 47e76c3ea1..fae6be433f 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 dc31fde131..1d8b8abeb2 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 bab928ac5d..a8dc3b8968 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 ee066f4c56..d3d03cd203 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 0dacf191c1..88611a0cd8 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 25009f8a31..89c0bb8fd8 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 3ab8bcf3e6..900912d9d9 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 4ba1c5914e..cdbd0be28a 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))
{