summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2011-01-24 19:47:47 -0800
committerGlenn Morris <rgm@gnu.org>2011-01-24 19:47:47 -0800
commit06d8ace51597cd41e110560a56a1abeb6cce23d6 (patch)
treee893bab169f27821637fc07e3cd2414b4b9b7b68
parentc5ecc7690d4afafb42049634d64abd781ff76642 (diff)
parent0d19d4feaa653a315853716e64bbaddb210a26ca (diff)
downloademacs-06d8ace51597cd41e110560a56a1abeb6cce23d6.tar.gz
Merge from emacs-23.
Note setting of CANNOT_DUMP on ia64 hpux is still to be merged manually.
-rw-r--r--ChangeLog4
-rw-r--r--configure.in8
-rw-r--r--doc/lispref/ChangeLog18
-rw-r--r--doc/lispref/display.texi5
-rw-r--r--doc/lispref/frames.texi10
-rw-r--r--doc/lispref/loading.texi25
-rw-r--r--doc/lispref/searching.texi9
-rw-r--r--lib-src/ChangeLog5
-rw-r--r--lib-src/movemail.c8
-rw-r--r--lisp/ChangeLog35
-rw-r--r--lisp/button.el17
-rw-r--r--lisp/comint.el5
-rw-r--r--lisp/dired.el5
-rw-r--r--lisp/emacs-lisp/re-builder.el4
-rw-r--r--lisp/files.el27
-rw-r--r--lisp/gnus/nnbabyl.el2
-rw-r--r--lisp/progmodes/ruby-mode.el92
-rw-r--r--lisp/simple.el14
-rw-r--r--lwlib/ChangeLog5
-rw-r--r--lwlib/lwlib-Xm.c2
-rw-r--r--nt/icons/README8
-rw-r--r--src/ChangeLog10
-rw-r--r--src/lisp.h31
-rw-r--r--src/xdisp.c9
24 files changed, 242 insertions, 116 deletions
diff --git a/ChangeLog b/ChangeLog
index b3b3b999dc9..0ff3459d66b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-25 Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change)
+
+ * configure.in: Add HP-UX on IA64 (Bug#6811).
+
2011-01-24 Paul Eggert <eggert@cs.ucla.edu>
Remove HAVE_RAW_DECL_CHOWN etc. from config.h
diff --git a/configure.in b/configure.in
index 923f8095fa1..4e8a31ecc56 100644
--- a/configure.in
+++ b/configure.in
@@ -515,6 +515,14 @@ case "${canonical}" in
CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
;;
+ ia64*-hp-hpux1[1-9]* )
+ machine=hp800 opsys=hpux11
+ ;;
+
+ hppa*-*-linux-gnu* )
+ machine=hp800 opsys=gnu-linux
+ ;;
+
## IBM machines
rs6000-ibm-aix4.[23]* )
machine=ibmrs6000 opsys=aix4-2
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index e196b3015bd..7dcf00ba81e 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,21 @@
+2011-01-25 Chong Yidong <cyd@stupidchicken.com>
+ Richard Kim <emacs18@gmail.com>
+
+ * loading.texi (Library Search): Document list-load-path-shadows
+ (Bug#7757).
+
+2011-01-25 Chong Yidong <cyd@stupidchicken.com>
+
+ * searching.texi (Regexp Special): Remove outdated discussion of
+ character sets (Bug#7780).
+
+ * frames.texi (Pop-Up Menus): Document where menu title comes
+ from (Bug#7684).
+
+2011-01-25 Glenn Morris <rgm@gnu.org>
+
+ * display.texi (Making Buttons): Mention limitation of text buttons.
+
2011-01-23 Werner Lemberg <wl@gnu.org>
* Makefile.in (MAKEINFO): Now controlled by `configure'.
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 34d81068916..7ba4d967615 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -5012,8 +5012,9 @@ and returns it.
button actually part of the text instead of being a property of the
buffer. Buttons using text properties do not create markers into the
buffer, which is important for speed when you use extremely large
-numbers of buttons. Both functions return the position of the start
-of the new button:
+numbers of buttons. (However, if there is an existing face text
+property at the site of the button, the button face may not be visible.)
+Both functions return the position of the start of the new button:
@defun make-text-button beg end &rest properties
This makes a button from @var{beg} to @var{end} in the current buffer, using
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 0d83aadbcd2..c4e74798415 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -1791,9 +1791,13 @@ without actually displaying or popping up the menu.
The argument @var{menu} says what to display in the menu. It can be a
keymap or a list of keymaps (@pxref{Menu Keymaps}). In this case, the
return value is the list of events corresponding to the user's choice.
-(This list has more than one element if the choice occurred in a
-submenu.) Note that @code{x-popup-menu} does not actually execute the
-command bound to that sequence of events.
+This list has more than one element if the choice occurred in a
+submenu. (Note that @code{x-popup-menu} does not actually execute the
+command bound to that sequence of events.) On toolkits that support
+menu titles, the title is taken from the prompt string of @var{menu}
+if @var{menu} is a keymap, or from the prompt string of the first
+keymap in @var{menu} if it is a list of keymaps (@pxref{Defining
+Menus}).
Alternatively, @var{menu} can have the following form:
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 5733df87d17..4a74005b2ee 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -363,6 +363,31 @@ interactively, the argument @var{interactive-call} is @code{t}, and this
tells @code{locate-library} to display the file name in the echo area.
@end deffn
+@cindex shadowed Lisp files
+@deffn Command list-load-path-shadows &optional stringp
+This command shows a list of @dfn{shadowed} Emacs Lisp files. A
+shadowed file is one that will not normally be loaded, despite being
+in a directory on @code{load-path}, due to the existence of another
+similarly-named file in a directory earlier on @code{load-path}.
+
+For instance, suppose @code{load-path} is set to
+
+@smallexample
+ ("/opt/emacs/site-lisp" "/usr/share/emacs/23.3/lisp")
+@end smallexample
+
+@noindent
+and that both these directories contain a file named @file{foo.el}.
+Then @code{(require 'foo)} never loads the file in the second
+directory. Such a situation might indicate a problem in the way Emacs
+was installed.
+
+When called from Lisp, this function prints a message listing the
+shadowed files, instead of displaying them in a buffer. If the
+optional argument @code{stringp} is non-@code{nil}, it instead returns
+the shadowed files as a string.
+@end deffn
+
@node Loading Non-ASCII
@section Loading Non-@acronym{ASCII} Characters
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 908b776a858..ac3620c510a 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -386,15 +386,6 @@ matches both @samp{]} and @samp{-}.
To include @samp{^} in a character alternative, put it anywhere but at
the beginning.
-The beginning and end of a range of multibyte characters must be in
-the same character set (@pxref{Character Sets}). Thus,
-@code{"[\x8e0-\x97c]"} is invalid because character 0x8e0 (@samp{a}
-with grave accent) is in the Emacs character set for Latin-1 but the
-character 0x97c (@samp{u} with diaeresis) is in the Emacs character
-set for Latin-2. (We use Lisp string syntax to write that example,
-and a few others in the next few paragraphs, in order to include hex
-escape sequences in them.)
-
If a range starts with a unibyte character @var{c} and ends with a
multibyte character @var{c2}, the range is divided into two parts: one
is @samp{@var{c}..?\377}, the other is @samp{@var{c1}..@var{c2}}, where
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 74509f4ae5e..97124142867 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-25 Chong Yidong <cyd@stupidchicken.com>
+
+ * movemail.c (main): Use setregid instead of setegid, which is
+ missing on older systems. Suggested by Peter O'Gorman (Bug#6811).
+
2011-01-23 Paul Eggert <eggert@cs.ucla.edu>
Check return values of some library calls.
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index f492188963d..143ee4e29c1 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -354,7 +354,7 @@ main (int argc, char **argv)
time_t touched_lock, now;
#endif
- if (setuid (getuid ()) < 0 || setegid (real_gid) < 0)
+ if (setuid (getuid ()) < 0 || setregid (-1, real_gid) < 0)
fatal ("Failed to drop privileges", 0, 0);
#ifndef MAIL_USE_MMDF
@@ -381,7 +381,7 @@ main (int argc, char **argv)
if (outdesc < 0)
pfatal_with_name (outname);
- if (setegid (priv_gid) < 0)
+ if (setregid (-1, priv_gid) < 0)
fatal ("Failed to regain privileges", 0, 0);
/* This label exists so we can retry locking
@@ -478,7 +478,7 @@ main (int argc, char **argv)
#endif
/* Prevent symlink attacks truncating other users' mailboxes */
- if (setegid (real_gid) < 0)
+ if (setregid (-1, real_gid) < 0)
fatal ("Failed to drop privileges", 0, 0);
/* Check to make sure no errors before we zap the inbox. */
@@ -514,7 +514,7 @@ main (int argc, char **argv)
#endif /* not MAIL_USE_SYSTEM_LOCK */
/* End of mailbox truncation */
- if (setegid (priv_gid) < 0)
+ if (setregid (-1, priv_gid) < 0)
fatal ("Failed to regain privileges", 0, 0);
#ifdef MAIL_USE_MAILLOCK
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 62aeaf7f92f..722637d9c3d 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,38 @@
+2011-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * files.el (file-name-non-special): Only change buffer-file-name after
+ insert-file-contents if it's `visit'ing the file (bug#7854).
+
+2011-01-25 Chong Yidong <cyd@stupidchicken.com>
+
+ * dired.el (dired-revert): Doc fix (Bug#7758).
+
+ * simple.el (line-move-visual): Doc fix (Bug#7594).
+
+2011-01-25 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * progmodes/ruby-mode.el (ruby-here-doc-beg-match): Fix for
+ here-doc which ends with an underscore.
+ (ruby-mode-set-encoding): Skip shebang line always.
+ (ruby-mode-map): Bind C-c C-c to comment-region.
+ (ruby-font-lock-keywords): Highlight literal hash key labels as symbols.
+ (ruby-forward-sexp): Stop after literal hash key labels.
+ (ruby-font-lock-syntactic-keywords): Highlight regexp after open
+ bracket.
+
+2011-01-25 Keitaro Miyazaki <keitaro.miyazaki@gmail.com> (tiny change)
+
+ * emacs-lisp/re-builder.el (reb-mode-map): Set case-fold-search in
+ the correct buffer (Bug#7650).
+
+2011-01-25 Glenn Morris <rgm@gnu.org>
+
+ * comint.el (comint-mode): Doc fix. (Bug#7897)
+
+ * simple.el (do-auto-fill): Give it a doc string.
+
+ * button.el (make-text-button): Doc fix. (See bug#7881)
+
2011-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/perl-mode.el (perl-syntax-propertize-special-constructs):
diff --git a/lisp/button.el b/lisp/button.el
index c52e3d8e372..dbde4a3317c 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -1,7 +1,7 @@
;;; button.el --- clickable buttons
;;
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010, 2011 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <miles@gnu.org>
;; Keywords: extensions
@@ -38,7 +38,9 @@
;; the button is represented by a marker or buffer-position pointing
;; somewhere in the button. In the latter case, no markers into the
;; buffer are retained, which is important for speed if there are are
-;; extremely large numbers of buttons.
+;; extremely large numbers of buttons. Note however that if there is
+;; an existing face text-property at the site of the button, the
+;; button face may not be visible. Using overlays avoids this.
;;
;; Using `define-button-type' to define default properties for buttons
;; is not necessary, but it is is encouraged, since doing so makes the
@@ -290,9 +292,12 @@ button-type from which to inherit other properties; see
`define-button-type'.
This function is like `make-button', except that the button is actually
-part of the text instead of being a property of the buffer. Creating
-large numbers of buttons can also be somewhat faster using
-`make-text-button'.
+part of the text instead of being a property of the buffer. That is,
+this function uses text properties, the other uses overlays.
+Creating large numbers of buttons can also be somewhat faster
+using `make-text-button'. Note, however, that if there is an existing
+face property at the site of the button, the button face may not be visible.
+You may want to use `make-button' in that case.
BEG can also be a string, in which case it is made into a button.
diff --git a/lisp/comint.el b/lisp/comint.el
index 1912cdcfc44..6b57f0a3c3f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -607,8 +607,9 @@ mode, Shell mode, etc. This can be done by setting the hooks
and `comint-get-old-input' to appropriate functions, and the variable
`comint-prompt-regexp' to the appropriate regular expression.
-An input history is maintained of size `comint-input-ring-size', and
-can be accessed with the commands \\[comint-next-input], \\[comint-previous-input], and \\[comint-dynamic-list-input-ring].
+The mode maintains an input history of size `comint-input-ring-size'.
+You can access this with the commands \\[comint-next-input],
+\\[comint-previous-input], and \\[comint-dynamic-list-input-ring].
Input ring history expansion can be achieved with the commands
\\[comint-replace-by-expanded-history] or \\[comint-magic-space].
Input ring expansion is controlled by the variable `comint-input-autoexpand',
diff --git a/lisp/dired.el b/lisp/dired.el
index 36bd9f6f121..1f38b5bfb74 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1146,7 +1146,10 @@ If HDR is non-nil, insert a header line with the directory name."
"Reread the dired buffer.
Must also be called after `dired-actual-switches' have changed.
Should not fail even on completely garbaged buffers.
-Preserves old cursor, marks/flags, hidden-p."
+Preserves old cursor, marks/flags, hidden-p.
+
+Dired sets `revert-buffer-function' to this function. The args
+ARG and NOCONFIRM, passed from `revert-buffer', are ignored."
(widen) ; just in case user narrowed
(let ((modflag (buffer-modified-p))
(positions (dired-save-positions))
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index 12a66582317..38fb826c352 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -243,7 +243,9 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
:help "Quit the RE Builder mode"))
(define-key menu-map [rt]
'(menu-item "Case sensitive" reb-toggle-case
- :button (:toggle . (null case-fold-search))
+ :button (:toggle . (with-current-buffer
+ reb-target-buffer
+ (null case-fold-search)))
:help "Toggle case sensitivity of searches for RE Builder target buffer"))
(define-key menu-map [rb]
'(menu-item "Change target buffer..." reb-change-target-buffer
diff --git a/lisp/files.el b/lisp/files.el
index 16b43d72c3e..dcb9ac08d95 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -6118,8 +6118,7 @@ only these files will be asked to be saved."
(substitute-in-file-name identity)
;; `add' means add "/:" to the result.
(file-truename add 0)
- ;; `quote' means add "/:" to buffer-file-name.
- (insert-file-contents quote 0)
+ (insert-file-contents insert-file-contents 0)
;; `unquote-then-quote' means set buffer-file-name
;; temporarily to unquoted filename.
(verify-visited-file-modtime unquote-then-quote)
@@ -6150,20 +6149,18 @@ only these files will be asked to be saved."
"/"
(substring (car pair) 2)))))
(setq file-arg-indices (cdr file-arg-indices))))
- (cond ((eq method 'identity)
- (car arguments))
- ((eq method 'add)
- (concat "/:" (apply operation arguments)))
- ((eq method 'quote)
- (unwind-protect
+ (case method
+ (identity (car arguments))
+ (add (concat "/:" (apply operation arguments)))
+ (insert-file-contents
+ (let ((visit (nth 1 arguments)))
+ (prog1
(apply operation arguments)
- (setq buffer-file-name (concat "/:" buffer-file-name))))
- ((eq method 'unquote-then-quote)
- (let (res)
- (setq buffer-file-name (substring buffer-file-name 2))
- (setq res (apply operation arguments))
- (setq buffer-file-name (concat "/:" buffer-file-name))
- res))
+ (when (and visit buffer-file-name)
+ (setq buffer-file-name (concat "/:" buffer-file-name))))))
+ (unquote-then-quote
+ (let ((buffer-file-name (substring buffer-file-name 2)))
+ (apply operation arguments)))
(t
(apply operation arguments)))))
diff --git a/lisp/gnus/nnbabyl.el b/lisp/gnus/nnbabyl.el
index 2346c05c854..06e41d78009 100644
--- a/lisp/gnus/nnbabyl.el
+++ b/lisp/gnus/nnbabyl.el
@@ -1,6 +1,6 @@
;;; nnbabyl.el --- rmail mbox access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1099, 2000, 2001, 2002, 2003,
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
;; 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
;; Free Software Foundation, Inc.
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 733af999cdb..b3a640a2283 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -153,6 +153,7 @@ This should only be called after matching against `ruby-here-doc-beg-re'."
(define-key map (kbd "C-M-h") 'backward-kill-word)
(define-key map (kbd "C-j") 'reindent-then-newline-and-indent)
(define-key map (kbd "C-m") 'newline)
+ (define-key map (kbd "C-c C-c") 'comment-region)
map)
"Keymap used in Ruby mode.")
@@ -319,7 +320,7 @@ Also ignores spaces after parenthesis when 'space."
(cdr (assq coding-system ruby-encoding-map)))
coding-system))
"ascii-8bit"))
- (if (looking-at "^#![^\n]*ruby") (beginning-of-line 2))
+ (if (looking-at "^#!") (beginning-of-line 2))
(cond ((looking-at "\\s *#.*-\*-\\s *\\(en\\)?coding\\s *:\\s *\\([-a-z0-9_]*\\)\\s *\\(;\\|-\*-\\)")
(unless (string= (match-string 2) coding-system)
(goto-char (match-beginning 2))
@@ -927,6 +928,7 @@ With ARG, do it many times. Negative ARG means move backward."
(condition-case nil
(while (> i 0)
(skip-syntax-forward " ")
+ (if (looking-at ",\\s *") (goto-char (match-end 0)))
(cond ((looking-at "\\?\\(\\\\[CM]-\\)*\\\\?\\S ")
(goto-char (match-end 0)))
((progn
@@ -1179,56 +1181,59 @@ It's useful in that it divides up the match string so that
"Return a regexp to find the beginning of a heredoc.
This should only be called after matching against `ruby-here-doc-end-re'."
- (let ((contents (regexp-quote (match-string 2))))
+ (let ((contents (concat
+ (regexp-quote (concat (match-string 2) (match-string 3)))
+ (if (string= (match-string 3) "_") "\\B" "\\b"))))
(concat "<<"
(let ((match (match-string 1)))
(if (and match (> (length match) 0))
- (concat "\\(?:-\\([\"']?\\)\\|\\([\"']\\)" match "\\)"
- contents "\\b\\(\\1\\|\\2\\)")
- (concat "-?\\([\"']\\|\\)" contents "\\b\\1"))))))
+ (concat "\\(?:-\\([\"']?\\)\\|\\([\"']\\)"
+ (match-string 1) "\\)"
+ contents "\\(\\1\\|\\2\\)")
+ (concat "-?\\([\"']\\|\\)" contents "\\1"))))))
(defconst ruby-font-lock-syntactic-keywords
`( ;; #{ }, #$hoge, #@foo are not comments
- ("\\(#\\)[{$@]" 1 (1 . nil))
- ;; the last $', $", $` in the respective string is not variable
- ;; the last ?', ?", ?` in the respective string is not ascii code
- ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
- (2 (7 . nil))
- (4 (7 . nil)))
- ;; $' $" $` .... are variables
- ;; ?' ?" ?` are ascii codes
- ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil))
- ;; regexps
- ("\\(^\\|[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
- (4 (7 . ?/))
- (6 (7 . ?/)))
- ("^=en\\(d\\)\\_>" 1 "!")
- ("^\\(=\\)begin\\_>" 1 (ruby-comment-beg-syntax))
- ;; Currently, the following case is highlighted incorrectly:
- ;;
- ;; <<FOO
- ;; FOO
- ;; <<BAR
- ;; <<BAZ
- ;; BAZ
- ;; BAR
- ;;
- ;; This is because all here-doc beginnings are highlighted before any endings,
- ;; so although <<BAR is properly marked as a beginning, when we get to <<BAZ
- ;; it thinks <<BAR is part of a string so it's marked as well.
- ;;
- ;; This may be fixable by modifying ruby-in-here-doc-p to use
- ;; ruby-in-non-here-doc-string-p rather than syntax-ppss-context,
- ;; but I don't want to try that until we've got unit tests set up
- ;; to make sure I don't break anything else.
- (,(concat ruby-here-doc-beg-re ".*\\(\n\\)")
- ,(+ 1 (regexp-opt-depth ruby-here-doc-beg-re))
- (ruby-here-doc-beg-syntax))
- (,ruby-here-doc-end-re 3 (ruby-here-doc-end-syntax)))
- "Syntactic keywords for Ruby mode. See `font-lock-syntactic-keywords'.")
+ ("\\(#\\)[{$@]" 1 (1 . nil))
+ ;; the last $', $", $` in the respective string is not variable
+ ;; the last ?', ?", ?` in the respective string is not ascii code
+ ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
+ (2 (7 . nil))
+ (4 (7 . nil)))
+ ;; $' $" $` .... are variables
+ ;; ?' ?" ?` are ascii codes
+ ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil))
+ ;; regexps
+ ("\\(^\\|[[=(,~?:;<>]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
+ (4 (7 . ?/))
+ (6 (7 . ?/)))
+ ("^=en\\(d\\)\\_>" 1 "!")
+ ("^\\(=\\)begin\\_>" 1 (ruby-comment-beg-syntax))
+ ;; Currently, the following case is highlighted incorrectly:
+ ;;
+ ;; <<FOO
+ ;; FOO
+ ;; <<BAR
+ ;; <<BAZ
+ ;; BAZ
+ ;; BAR
+ ;;
+ ;; This is because all here-doc beginnings are highlighted before any endings,
+ ;; so although <<BAR is properly marked as a beginning, when we get to <<BAZ
+ ;; it thinks <<BAR is part of a string so it's marked as well.
+ ;;
+ ;; This may be fixable by modifying ruby-in-here-doc-p to use
+ ;; ruby-in-non-here-doc-string-p rather than syntax-ppss-context,
+ ;; but I don't want to try that until we've got unit tests set up
+ ;; to make sure I don't break anything else.
+ (,(concat ruby-here-doc-beg-re ".*\\(\n\\)")
+ ,(+ 1 (regexp-opt-depth ruby-here-doc-beg-re))
+ (ruby-here-doc-beg-syntax))
+ (,ruby-here-doc-end-re 3 (ruby-here-doc-end-syntax)))
+ "Syntactic keywords for Ruby mode. See `font-lock-syntactic-keywords'.")
(defun ruby-comment-beg-syntax ()
- "Return the syntax cell for a the first character of a =begin.
+ "Return the syntax cell for a the first character of a =begin.
See the definition of `ruby-font-lock-syntactic-keywords'.
This returns a comment-delimiter cell as long as the =begin
@@ -1420,6 +1425,7 @@ See `font-lock-syntax-table'.")
;; symbols
'("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)"
2 font-lock-reference-face)
+ '("\\(^\\s *\\|[\[\{\(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+\\):[^:]" 2 font-lock-reference-face)
;; expression expansion
'("#\\({[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\|\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\)"
0 font-lock-variable-name-face t)
diff --git a/lisp/simple.el b/lisp/simple.el
index 476d5ab518d..612f942e6d1 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4221,9 +4221,11 @@ Outline mode sets this."
"When non-nil, `line-move' moves point by visual lines.
This movement is based on where the cursor is displayed on the
screen, instead of relying on buffer contents alone. It takes
-into account variable-width characters and line continuation."
+into account variable-width characters and line continuation.
+If nil, `line-move' moves point by logical lines."
:type 'boolean
- :group 'editing-basics)
+ :group 'editing-basics
+ :version "23.1")
;; Returns non-nil if partial move was done.
(defun line-move-partial (arg noerror to-end)
@@ -5102,12 +5104,10 @@ If optional arg REALLY-WORD is non-nil, it finds just a word."
regexp)
:group 'fill)
-;; This function is used as the auto-fill-function of a buffer
-;; when Auto-Fill mode is enabled.
-;; It returns t if it really did any work.
-;; (Actually some major modes use a different auto-fill function,
-;; but this one is the default one.)
(defun do-auto-fill ()
+ "The default value for `normal-auto-fill-function'.
+This is the default auto-fill function, some major modes use a different one.
+Returns t if it really did any work."
(let (fc justify give-up
(fill-prefix fill-prefix))
(if (or (not (setq justify (current-justification)))
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index a0ec95ca3a4..5c5b4fcb975 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-25 Werner Meisner <weme24@gmx.net>
+
+ * lwlib-Xm.c (xm_update_menu): Avoid a NULL pointer dereference
+ (Bug#7690).
+
2010-09-26 Dan Nicolaescu <dann@ics.uci.edu>
Use const for some pointer arguments.
diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c
index 60f282e69f4..b6c2ef1b323 100644
--- a/lwlib/lwlib-Xm.c
+++ b/lwlib/lwlib-Xm.c
@@ -800,7 +800,7 @@ xm_update_menu (widget_instance* instance,
/* Now replace from scratch all the buttons after the last
place that the top-level structure changed. */
- if (val->contents->change == STRUCTURAL_CHANGE)
+ if (val->contents && val->contents->change == STRUCTURAL_CHANGE)
{
destroy_all_children (widget, num_children_to_keep);
make_menu_in_widget (instance, widget, val->contents,
diff --git a/nt/icons/README b/nt/icons/README
index 0d8d90ffefb..b9e56779c0e 100644
--- a/nt/icons/README
+++ b/nt/icons/README
@@ -2,13 +2,13 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
File: emacs.ico
Author: Kentaro Ohkouchi <nanasess@fsm.ne.jp>
-Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later
File: emacs22.ico
Author: Andrew Zhilin
-Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
@@ -17,8 +17,8 @@ Files: gnu2a32.ico gnu2a32t.ico gnu2b48.ico gnu2b48t.ico
gnu5w32.ico gnu5w32t.ico gnu6w48.ico gnu6w48t.ico
gnu7.ico gnu8.ico gnu9.ico
Author: Rob Davenport <rgd at bigfoot.com>
-Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
- Free Software Foundation, Inc.
+Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010, 2011 Free Software Foundation, Inc.
License: GNU General Public License version 3 or later (see COPYING)
<http://users.adelphia.net/~rob.davenport/gnuicons.html>
diff --git a/src/ChangeLog b/src/ChangeLog
index 134e289681c..3776682c692 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
+2011-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * xdisp.c (handle_fontified_prop): Be careful with font-lock changing
+ the buffer's point-max (bug#7876).
+
+2011-01-25 Chong Yidong <cyd@stupidchicken.com>
+
+ * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases.
+ Remove unused case (Bug#6811).
+
2011-01-23 Jan Djärv <jan.h.d@swipnet.se>
* nsterm.m (x_set_offset): Set dont_constrain to 0 so the call to
diff --git a/src/lisp.h b/src/lisp.h
index 64c0b2332e3..c5c047a53cb 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -444,7 +444,13 @@ enum pvec_type
((var) = ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \
+ ((EMACS_INT) (ptr) & VALMASK)))
+#ifdef DATA_SEG_BITS
+/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
+ which were stored in a Lisp_Object */
+#define XPNTR(a) ((EMACS_UINT) (((a) & VALMASK) | DATA_SEG_BITS))
+#else
#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK))
+#endif
#endif /* not USE_LSB_TAG */
@@ -482,6 +488,14 @@ enum pvec_type
# define XSET(var, vartype, ptr) \
(((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
+#ifdef DATA_SEG_BITS
+/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
+ which were stored in a Lisp_Object */
+#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
+#else
+#define XPNTR(a) ((EMACS_INT) XUINT (a))
+#endif
+
#endif /* !USE_LSB_TAG */
#if __GNUC__ >= 2 && defined (__OPTIMIZE__)
@@ -503,23 +517,6 @@ extern Lisp_Object make_number (EMACS_INT);
#define EQ(x, y) (XHASH (x) == XHASH (y))
-#ifndef XPNTR
-#ifdef DATA_SEG_BITS
-/* This case is used for the rt-pc.
- In the diffs I was given, it checked for ptr = 0
- and did not adjust it in that case.
- But I don't think that zero should ever be found
- in a Lisp object whose data type says it points to something. */
-#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
-#else
-/* Some versions of gcc seem to consider the bitfield width when
- issuing the "cast to pointer from integer of different size"
- warning, so the cast is here to widen the value back to its natural
- size. */
-#define XPNTR(a) ((EMACS_INT) XUINT (a))
-#endif
-#endif /* no XPNTR */
-
/* Largest and smallest representable fixnum values. These are the C
values. */
diff --git a/src/xdisp.c b/src/xdisp.c
index 4d0ff88f9a3..09a3cae5754 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -3173,6 +3173,8 @@ handle_fontified_prop (struct it *it)
val = Vfontification_functions;
specbind (Qfontification_functions, Qnil);
+ xassert (it->end_charpos == ZV);
+
if (!CONSP (val) || EQ (XCAR (val), Qlambda))
safe_call1 (val, pos);
else
@@ -3212,6 +3214,13 @@ handle_fontified_prop (struct it *it)
unbind_to (count, Qnil);
+ /* The fontification code may have added/removed text.
+ It could do even a lot worse, but let's at least protect against
+ the most obvious case where only the text past `pos' gets changed',
+ as is/was done in grep.el where some escapes sequences are turned
+ into face properties (bug#7876). */
+ it->end_charpos = ZV;
+
/* Return HANDLED_RECOMPUTE_PROPS only if function fontified
something. This avoids an endless loop if they failed to
fontify the text for which reason ever. */