# HG changeset patch # User Glenn Morris # Date 1295725005 28800 # Node ID 9f7614f1a8922083cccb1b38d081d20fe03ab7da # Parent f792eb37d0ca546eabbda957c719469835b99ac9# Parent 550574f08669c5c2993a4da945de237c4adaa2fb Merge from emacs-23 diff -r f792eb37d0ca -r 9f7614f1a892 lisp/ChangeLog --- a/lisp/ChangeLog Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/ChangeLog Sat Jan 22 11:36:45 2011 -0800 @@ -1,3 +1,33 @@ +2011-01-22 Chong Yidong + + * emacs-lisp/re-builder.el (reb-mode-map): Fix logic error in + "Case sensitive" menu item. + +2011-01-22 Roland McGrath + + * comint.el (comint-replace-by-expanded-history-before-point): Fix + expansion of !$ and !!:N syntax to pick the indicated word (bug#7883). + +2011-01-22 Stefan Monnier + + * progmodes/js.el (js--regexp-literal): Count backslashes (bug#7882). + +2011-01-22 Jari Aalto + + * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): + Assume foo(bar) is a manpage reference rather than some unquoted + symbol (bug#7705). + +2011-01-22 Stefan Monnier + + * subr.el (shell-quote-argument): Properly quote \n (bug#7687). + Suggested by Flo . + +2011-01-22 Glenn Morris + + * progmodes/compile.el (compilation-error-regexp-alist): + Fix custom type. (Bug#7812) + 2011-01-22 Ken Manheimer * allout.el (allout-prefixed-keybindings): Bind (prefixed) '#' to @@ -46,7 +76,6 @@ * international/mule.el (ctext-pre-write-conversion): Don't hardcode point-min==1. - 2011-01-20 Ken Manheimer * allout.el: (allout-institute-keymap): Use fset instead of diff -r f792eb37d0ca -r 9f7614f1a892 lisp/comint.el --- a/lisp/comint.el Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/comint.el Sat Jan 22 11:36:45 2011 -0800 @@ -1294,7 +1294,9 @@ (message "Relative reference exceeds input history size")))) ((or (looking-at "!!?:?\\([0-9^$*-]+\\)") (looking-at "!!")) ;; Just a number of args from the previous input line. - (replace-match (comint-previous-input-string 0) t t) + (replace-match (comint-args (comint-previous-input-string 0) + (match-beginning 1) (match-end 1)) + t t) (message "History item: previous")) ((looking-at "!\\??\\({\\(.+\\)}\\|\\(\\sw+\\)\\)\\(:?[0-9^$*-]+\\)?") diff -r f792eb37d0ca -r 9f7614f1a892 lisp/emacs-lisp/checkdoc.el --- a/lisp/emacs-lisp/checkdoc.el Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/emacs-lisp/checkdoc.el Sat Jan 22 11:36:45 2011 -0800 @@ -1798,7 +1798,9 @@ (let ((found nil) (start (point)) (msg nil) (ms nil)) (while (and (not msg) (re-search-forward - "[^-([`':a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^]']" + ;; Ignore manual page refereces like + ;; git-config(1). + "[^-([`':a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^](']" e t)) (setq ms (match-string 1)) ;; A . is a \s_ char, so we must remove periods from diff -r f792eb37d0ca -r 9f7614f1a892 lisp/emacs-lisp/re-builder.el --- a/lisp/emacs-lisp/re-builder.el Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/emacs-lisp/re-builder.el Sat Jan 22 11:36:45 2011 -0800 @@ -243,7 +243,7 @@ :help "Quit the RE Builder mode")) (define-key menu-map [rt] '(menu-item "Case sensitive" reb-toggle-case - :button (:toggle . case-fold-search) + :button (:toggle . (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 -r f792eb37d0ca -r 9f7614f1a892 lisp/progmodes/compile.el --- a/lisp/progmodes/compile.el Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/progmodes/compile.el Sat Jan 22 11:36:45 2011 -0800 @@ -508,10 +508,8 @@ Additional HIGHLIGHTs as described under `font-lock-keywords' can be added." - :type `(set :menu-tag "Pick" - ,@(mapcar (lambda (elt) - (list 'const (car elt))) - compilation-error-regexp-alist-alist)) + :type '(repeat (choice (symbol :tag "Predefined symbol") + (sexp :tag "Error specification"))) :link `(file-link :tag "example file" ,(expand-file-name "compilation.txt" data-directory)) :group 'compilation) diff -r f792eb37d0ca -r 9f7614f1a892 lisp/progmodes/js.el --- a/lisp/progmodes/js.el Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/progmodes/js.el Sat Jan 22 11:36:45 2011 -0800 @@ -1659,12 +1659,11 @@ ;; below. (eval-and-compile (defconst js--regexp-literal - "[=(,:]\\(?:\\s-\\|\n\\)*\\(/\\)\\(?:\\\\/\\|[^/*]\\)\\(?:\\\\/\\|[^/]\\)*\\(/\\)" + "[=(,:]\\(?:\\s-\\|\n\\)*\\(/\\)\\(?:\\\\.\\|[^/*\\]\\)\\(?:\\\\.\\|[^/\\]\\)*\\(/\\)" "Regexp matching a JavaScript regular expression literal. Match groups 1 and 2 are the characters forming the beginning and end of the literal.")) - (defconst js-syntax-propertize-function (syntax-propertize-rules ;; We want to match regular expressions only at the beginning of diff -r f792eb37d0ca -r 9f7614f1a892 lisp/subr.el --- a/lisp/subr.el Sat Jan 22 17:21:38 2011 +0100 +++ b/lisp/subr.el Sat Jan 22 11:36:45 2011 -0800 @@ -2461,13 +2461,8 @@ "''" ;; Quote everything except POSIX filename characters. ;; This should be safe enough even for really weird shells. - (let ((result "") (start 0) end) - (while (string-match "[^-0-9a-zA-Z_./]" argument start) - (setq end (match-beginning 0) - result (concat result (substring argument start end) - "\\" (substring argument end (1+ end))) - start (1+ end))) - (concat result (substring argument start)))))) + (replace-regexp-in-string "\n" "'\n'" + (replace-regexp-in-string "[^-0-9a-zA-Z_./\n]" "\\\\\\&" argument))))) (defun string-or-null-p (object) "Return t if OBJECT is a string or nil. diff -r f792eb37d0ca -r 9f7614f1a892 src/ChangeLog --- a/src/ChangeLog Sat Jan 22 17:21:38 2011 +0100 +++ b/src/ChangeLog Sat Jan 22 11:36:45 2011 -0800 @@ -1,3 +1,10 @@ +2011-01-22 Martin Rudalics + + * window.c (select_window): New function. + (Fselect_window): Call it. + (inhibit_point_swap): Variable deleted. + (Fset_window_configuration): Call select_window directly. + 2011-01-22 Jan Djärv * nsterm.m (constrainFrameRect): Only constrain the first time called. diff -r f792eb37d0ca -r 9f7614f1a892 src/window.c --- a/src/window.c Sat Jan 22 17:21:38 2011 +0100 +++ b/src/window.c Sat Jan 22 11:36:45 2011 -0800 @@ -79,12 +79,13 @@ static void decode_next_window_args (Lisp_Object *, Lisp_Object *, Lisp_Object *); static void foreach_window (struct frame *, - int (* fn) (struct window *, void *), + int (* fn) (struct window *, void *), void *); static int foreach_window_1 (struct window *, int (* fn) (struct window *, void *), void *); static Lisp_Object window_list_1 (Lisp_Object, Lisp_Object, Lisp_Object); +static Lisp_Object select_window (Lisp_Object, Lisp_Object, int); /* This is the window in which the terminal's cursor should be left when nothing is being done with it. This must @@ -126,11 +127,6 @@ static int window_initialized; -/* Set in `set-window-configuration' to prevent "swapping out point" - in the old selected window. */ - -static int inhibit_point_swap; - /* Hook to run when window config changes. */ static Lisp_Object Qwindow_configuration_change_hook; @@ -3497,20 +3493,14 @@ return Qnil; } -/* Note that selected_window can be nil when this is called from - Fset_window_configuration. */ - -DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, - doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. -If WINDOW is not already selected, make WINDOW's buffer current -and make WINDOW the frame's selected window. Return WINDOW. -Optional second arg NORECORD non-nil means do not put this buffer -at the front of the list of recently selected ones and do not -make this window the most recently selected one. - -Note that the main editor command loop selects the buffer of the -selected window before each command. */) - (register Lisp_Object window, Lisp_Object norecord) +/* If select_window is called with inhibit_point_swap non-zero it will + not store point of the old selected window's buffer back into that + window's pointm slot. This is needed by Fset_window_configuration to + avoid that the display routine is called with selected_window set to + Qnil causing a subsequent crash. */ + +static Lisp_Object +select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap) { register struct window *w; register struct window *ow; @@ -3550,9 +3540,7 @@ /* Store the current buffer's actual point into the old selected window. It belongs to that window, and when the window is not selected, must be in the window. */ - if (inhibit_point_swap) - inhibit_point_swap = 0; - else + if (!inhibit_point_swap) { ow = XWINDOW (selected_window); if (! NILP (ow->buffer)) @@ -3586,6 +3574,25 @@ return window; } + +/* Note that selected_window can be nil when this is called from + Fset_window_configuration. */ + +DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, + doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. +If WINDOW is not already selected, make WINDOW's buffer current +and make WINDOW the frame's selected window. Return WINDOW. +Optional second arg NORECORD non-nil means do not put this buffer +at the front of the list of recently selected ones and do not +make this window the most recently selected one. + +Note that the main editor command loop selects the buffer of the +selected window before each command. */) + (register Lisp_Object window, Lisp_Object norecord) +{ + select_window (window, norecord, 0); +} + static Lisp_Object select_window_norecord (Lisp_Object window) { @@ -6114,8 +6121,7 @@ out point" in the old selected window using the buffer that has been restored into it. We already swapped out that point from that window's old buffer. */ - inhibit_point_swap = 1; - Fselect_window (data->current_window, Qnil); + select_window (data->current_window, Qnil, 1); XBUFFER (XWINDOW (selected_window)->buffer)->last_selected_window = selected_window; @@ -7046,8 +7052,6 @@ window_scroll_preserve_hpos = -1; window_scroll_preserve_vpos = -1; - inhibit_point_swap = 0; - DEFVAR_LISP ("temp-buffer-show-function", Vtemp_buffer_show_function, doc: /* Non-nil means call as function to display a help buffer. The function is called with one argument, the buffer to be displayed.