diff options
author | Glenn Morris <rgm@gnu.org> | 2011-01-24 19:47:47 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2011-01-24 19:47:47 -0800 |
commit | 06d8ace51597cd41e110560a56a1abeb6cce23d6 (patch) | |
tree | e893bab169f27821637fc07e3cd2414b4b9b7b68 | |
parent | c5ecc7690d4afafb42049634d64abd781ff76642 (diff) | |
parent | 0d19d4feaa653a315853716e64bbaddb210a26ca (diff) | |
download | emacs-06d8ace51597cd41e110560a56a1abeb6cce23d6.tar.gz |
Merge from emacs-23.
Note setting of CANNOT_DUMP on ia64 hpux is still to be merged manually.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | configure.in | 8 | ||||
-rw-r--r-- | doc/lispref/ChangeLog | 18 | ||||
-rw-r--r-- | doc/lispref/display.texi | 5 | ||||
-rw-r--r-- | doc/lispref/frames.texi | 10 | ||||
-rw-r--r-- | doc/lispref/loading.texi | 25 | ||||
-rw-r--r-- | doc/lispref/searching.texi | 9 | ||||
-rw-r--r-- | lib-src/ChangeLog | 5 | ||||
-rw-r--r-- | lib-src/movemail.c | 8 | ||||
-rw-r--r-- | lisp/ChangeLog | 35 | ||||
-rw-r--r-- | lisp/button.el | 17 | ||||
-rw-r--r-- | lisp/comint.el | 5 | ||||
-rw-r--r-- | lisp/dired.el | 5 | ||||
-rw-r--r-- | lisp/emacs-lisp/re-builder.el | 4 | ||||
-rw-r--r-- | lisp/files.el | 27 | ||||
-rw-r--r-- | lisp/gnus/nnbabyl.el | 2 | ||||
-rw-r--r-- | lisp/progmodes/ruby-mode.el | 92 | ||||
-rw-r--r-- | lisp/simple.el | 14 | ||||
-rw-r--r-- | lwlib/ChangeLog | 5 | ||||
-rw-r--r-- | lwlib/lwlib-Xm.c | 2 | ||||
-rw-r--r-- | nt/icons/README | 8 | ||||
-rw-r--r-- | src/ChangeLog | 10 | ||||
-rw-r--r-- | src/lisp.h | 31 | ||||
-rw-r--r-- | src/xdisp.c | 9 |
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. */ |