commit 99db66a01fd998942c4e75733863903247345d90 (HEAD, refs/remotes/origin/master) Author: Stefan Monnier Date: Wed Feb 18 20:31:17 2015 -0500 * lisp/emacs-lisp/smie.el (smie-prec2->grammar): Fix corner case problem. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b71b55d..933e5bb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2015-02-19 Stefan Monnier + + * emacs-lisp/smie.el (smie-prec2->grammar): Fix corner case problem. + 2015-02-18 Kelly Dean * register.el (jump-to-register): diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 5b9dc64..48bded4 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -612,8 +612,11 @@ PREC2 is a table as returned by `smie-precs->prec2' or (cons (pcase (cdr x) (`closer (cddr (assoc token table))) (`opener (cdr (assoc token table)))))) - (cl-assert (numberp (car cons))) - (setf (car cons) (list (car cons))))) + ;; `cons' can be nil for openers/closers which only contain + ;; "atomic" elements. + (when cons + (cl-assert (numberp (car cons))) + (setf (car cons) (list (car cons)))))) (let ((ca (gethash :smie-closer-alist prec2))) (when ca (push (cons :smie-closer-alist ca) table))) ;; (smie-check-grammar table prec2 'step3) commit 746d2923d685ff9067ca0a999ac8321dd45d1c43 Author: Katsumi Yamaoka Date: Wed Feb 18 23:06:12 2015 +0000 lisp/gnus/nnimap.el (nnimap-get-groups): Fix XEmacs compilation diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 6904e0a..369d9d3 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -1265,7 +1265,7 @@ If LIMIT, first try to limit the search to the N last articles." (group (buffer-substring-no-properties (progn (skip-chars-forward " \"") (point)) - (progn (move-end-of-line 1) + (progn (end-of-line) (skip-chars-backward " \"") (point))))) (unless (member '%NoSelect flags) commit 0a1c83457d209fcf08c741a5e50bd60b72fd8713 Author: Eric Abrahamsen Date: Wed Feb 18 22:25:22 2015 +0000 Handle unquoted IMAP group names * lisp/gnus/nnimap.el (nnimap-get-groups): Correctly read unquoted group names from the server LIST response. diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 7910d74..7895f37 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,8 @@ +2015-02-18 Eric Abrahamsen + + * nnimap.el (nnimap-get-groups): Correctly read unquoted group names + from the server LIST response. + 2015-02-14 Lars Ingebrigtsen * nnimap.el (nnimap-retrieve-headers): If the server closes connection diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 4a9ca74..6904e0a 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -1262,7 +1262,12 @@ If LIMIT, first try to limit the search to the N last articles." (while (search-forward "* LIST " nil t) (let ((flags (read (current-buffer))) (separator (read (current-buffer))) - (group (read (current-buffer)))) + (group (buffer-substring-no-properties + (progn (skip-chars-forward " \"") + (point)) + (progn (move-end-of-line 1) + (skip-chars-backward " \"") + (point))))) (unless (member '%NoSelect flags) (push (utf7-decode (if (stringp group) group commit 7932d062cf85c2c37bd15b22be30a65c034001fc Author: Eli Zaretskii Date: Wed Feb 18 23:14:31 2015 +0200 Fix exit code when stdin is at EOF (Bug#19897) src/emacs.c (Fkill_emacs): Exit with specified exit code even if stdin is at EOF. diff --git a/src/ChangeLog b/src/ChangeLog index 8a3b534..1c4758f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2015-02-18 Eli Zaretskii + + * emacs.c (Fkill_emacs): Exit with specified exit code even if + stdin is at EOF. (Bug#19897) + 2015-02-18 Oscar Fuentes * keyboard.c (read_char): When there is an input method function, diff --git a/src/emacs.c b/src/emacs.c index fdd17d1..f933eb1 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1896,9 +1896,6 @@ all of which are called before Emacs is actually killed. */ GCPRO1 (arg); - if (feof (stdin)) - arg = Qt; - /* Fsignal calls emacs_abort () if it sees that waiting_for_input is set. */ waiting_for_input = 0; @@ -1910,7 +1907,7 @@ all of which are called before Emacs is actually killed. */ x_clipboard_manager_save_all (); #endif - shut_down_emacs (0, STRINGP (arg) ? arg : Qnil); + shut_down_emacs (0, (STRINGP (arg) && !feof (stdin)) ? arg : Qnil); #ifdef HAVE_NS ns_release_autorelease_pool (ns_pool); commit b1d6ddd44614c84746f5ee494e1f29cd9be8a2d8 Author: Kelly Dean Date: Wed Feb 18 07:41:10 2015 +0000 Push mark before goto-char in jump-to-register and check-parens * register.el (jump-to-register): * emacs-lisp/lisp.el (check-parens): Push mark before goto-char so user doesn't lose his previous place. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a15295f..b71b55d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,11 @@ 2015-02-18 Kelly Dean + * register.el (jump-to-register): + * emacs-lisp/lisp.el (check-parens): + Push mark before goto-char so user doesn't lose his previous place. + +2015-02-18 Kelly Dean + * rect.el (rectangle-mark-mode): Suppress superfluous "Mark set" message from push-mark. diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index fb631a7..67d1487 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -714,7 +714,8 @@ character." (condition-case data ;; Buffer can't have more than (point-max) sexps. (scan-sexps (point-min) (point-max)) - (scan-error (goto-char (nth 2 data)) + (scan-error (push-mark) + (goto-char (nth 2 data)) ;; Could print (nth 1 data), which is either ;; "Containing expression ends prematurely" or ;; "Unbalanced parentheses", but those may not be so diff --git a/lisp/register.el b/lisp/register.el index 053657b..7afbc06 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -254,6 +254,9 @@ Interactively, reads the register using `register-read-with-preview'." (or (marker-buffer val) (user-error "That register's buffer no longer exists")) (switch-to-buffer (marker-buffer val)) + (unless (or (= (point) (marker-position val)) + (eq last-command 'jump-to-register)) + (push-mark)) (goto-char val)) ((and (consp val) (eq (car val) 'file)) (find-file (cdr val))) commit 56f5ea17f19bfb07e263dd2d59a3c61b652fcc3d Author: Kelly Dean Date: Wed Feb 18 07:38:13 2015 +0000 rect.el: Suppress superfluous "Mark set" message from push-mark. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 73e1396..a15295f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2015-02-18 Kelly Dean + * rect.el (rectangle-mark-mode): + Suppress superfluous "Mark set" message from push-mark. + +2015-02-18 Kelly Dean + * help-mode.el (help-go-back, help-go-forward, help-follow): * simple.el (yank-pop, pop-to-mark-command, exchange-point-and-mark): * winner.el (winner-redo): diff --git a/lisp/rect.el b/lisp/rect.el index c5a5486..75585d2 100644 --- a/lisp/rect.el +++ b/lisp/rect.el @@ -586,8 +586,7 @@ Activates the region if needed. Only lasts until the region is deactivated." (add-hook 'deactivate-mark-hook (lambda () (rectangle-mark-mode -1))) (unless (region-active-p) - (push-mark) - (activate-mark) + (push-mark (point) t t) (message "Mark set (rectangle mode)")))) (defun rectangle-exchange-point-and-mark (&optional arg) commit 72f7eded979c672662112304cc8615c0dbcf9803 Author: Kelly Dean Date: Wed Feb 18 07:35:49 2015 +0000 Use user-error where error is inappropriate * help-mode.el (help-go-back, help-go-forward, help-follow): * simple.el (yank-pop, pop-to-mark-command, exchange-point-and-mark): * winner.el (winner-redo): * windmove.el (windmove-do-window-select): * register.el (jump-to-register, increment-register, insert-register) (append-to-register, prepend-to-register): * files.el (find-alternate-file, abort-if-file-too-large, write-file) (set-visited-file-name): * emacs-lisp/lisp.el (kill-backward-up-list): Use user-error instead of error. (Bug#14480) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f683150..73e1396 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2015-02-18 Kelly Dean + + * help-mode.el (help-go-back, help-go-forward, help-follow): + * simple.el (yank-pop, pop-to-mark-command, exchange-point-and-mark): + * winner.el (winner-redo): + * windmove.el (windmove-do-window-select): + * register.el (jump-to-register, increment-register, insert-register) + (append-to-register, prepend-to-register): + * files.el (find-alternate-file, abort-if-file-too-large, write-file) + (set-visited-file-name): + * emacs-lisp/lisp.el (kill-backward-up-list): + Use user-error instead of error. (Bug#14480) + 2015-02-18 Stefan Monnier * emacs-lisp/checkdoc.el (checkdoc-show-diagnostics): Don't make bogus @@ -5,7 +18,7 @@ 2015-02-16 Kelly Dean - * lisp/files.el (insert-file-contents-literally): Fix docstring typo. + * files.el (insert-file-contents-literally): Fix docstring typo. 2015-02-16 Kelly Dean diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 214bed7..fb631a7 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -263,7 +263,7 @@ This command assumes point is not in a string or comment." (backward-up-list arg) (kill-sexp) (insert current-sexp)) - (error "Not at a sexp")))) + (user-error "Not at a sexp")))) (defvar beginning-of-defun-function nil "If non-nil, function for `beginning-of-defun-raw' to call. diff --git a/lisp/files.el b/lisp/files.el index 8336979..1914ad8 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1628,10 +1628,10 @@ killed." (confirm-nonexistent-file-or-buffer) file-name) t))) (unless (run-hook-with-args-until-failure 'kill-buffer-query-functions) - (error "Aborted")) + (user-error "Aborted")) (and (buffer-modified-p) buffer-file-name (not (yes-or-no-p "Kill and replace the buffer without saving it? ")) - (error "Aborted")) + (user-error "Aborted")) (let ((obuf (current-buffer)) (ofile buffer-file-name) (onum buffer-file-number) @@ -1844,7 +1844,7 @@ OP-TYPE specifies the file operation being performed (for message to user)." (not (y-or-n-p (format "File %s is large (%s), really %s? " (file-name-nondirectory filename) (file-size-human-readable size) op-type)))) - (error "Aborted"))) + (user-error "Aborted"))) (defun warn-maybe-out-of-memory (size) "Warn if an attempt to open file of SIZE bytes may run out of memory." @@ -3883,7 +3883,7 @@ the old visited file has been renamed to the new name FILENAME." (not no-query) (not (y-or-n-p (format "A buffer is visiting %s; proceed? " filename))) - (error "Aborted"))) + (user-error "Aborted"))) (or (equal filename buffer-file-name) (progn (and filename (lock-buffer filename)) @@ -4007,7 +4007,7 @@ Interactively, confirmation is required unless you supply a prefix argument." (listp last-nonmenu-event) use-dialog-box)) (or (y-or-n-p (format "File `%s' exists; overwrite? " filename)) - (error "Canceled"))) + (user-error "Canceled"))) (set-visited-file-name filename (not confirm)))) (set-buffer-modified-p t) ;; Make buffer writable if file is writable. diff --git a/lisp/help-mode.el b/lisp/help-mode.el index b8b129d..d6679e9 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -724,14 +724,14 @@ BUFFER or FRAME." (interactive) (if help-xref-stack (help-xref-go-back (current-buffer)) - (error "No previous help buffer"))) + (user-error "No previous help buffer"))) (defun help-go-forward () "Go back to next topic in this help buffer." (interactive) (if help-xref-forward-stack (help-xref-go-forward (current-buffer)) - (error "No next help buffer"))) + (user-error "No next help buffer"))) (defun help-do-xref (_pos function args) "Call the help cross-reference function FUNCTION with args ARGS. @@ -754,7 +754,7 @@ a proper [back] button." For the cross-reference format, see `help-make-xrefs'." (interactive) - (error "No cross-reference here")) + (user-error "No cross-reference here")) (defun help-follow-symbol (&optional pos) "In help buffer, show docs for symbol at POS, defaulting to point. diff --git a/lisp/register.el b/lisp/register.el index a60181e..053657b 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -252,7 +252,7 @@ Interactively, reads the register using `register-read-with-preview'." (goto-char (cadr val))) ((markerp val) (or (marker-buffer val) - (error "That register's buffer no longer exists")) + (user-error "That register's buffer no longer exists")) (switch-to-buffer (marker-buffer val)) (goto-char val)) ((and (consp val) (eq (car val) 'file)) @@ -260,11 +260,11 @@ Interactively, reads the register using `register-read-with-preview'." ((and (consp val) (eq (car val) 'file-query)) (or (find-buffer-visiting (nth 1 val)) (y-or-n-p (format "Visit file %s again? " (nth 1 val))) - (error "Register access aborted")) + (user-error "Register access aborted")) (find-file (nth 1 val)) (goto-char (nth 2 val))) (t - (error "Register doesn't contain a buffer position or configuration"))))) + (user-error "Register doesn't contain a buffer position or configuration"))))) (defun register-swap-out () "Turn markers into file-query references when a buffer is killed." @@ -316,7 +316,7 @@ Interactively, reads the register using `register-read-with-preview'." (set-register register (+ number register-val)))) ((or (not register-val) (stringp register-val)) (append-to-register register (region-beginning) (region-end) prefix)) - (t (error "Register does not contain a number or text"))))) + (t (user-error "Register does not contain a number or text"))))) (defun view-register (register) "Display what is contained in register named REGISTER. @@ -449,7 +449,7 @@ Interactively, reads the register using `register-read-with-preview'." ((and (markerp val) (marker-position val)) (princ (marker-position val) (current-buffer))) (t - (error "Register does not contain text")))) + (user-error "Register does not contain text")))) (if (not arg) (exchange-point-and-mark))) (defun copy-to-register (register start end &optional delete-flag region) @@ -492,7 +492,7 @@ Interactively, reads the register using `register-read-with-preview'." (set-register register (cond ((not reg) text) ((stringp reg) (concat reg separator text)) - (t (error "Register does not contain text"))))) + (t (user-error "Register does not contain text"))))) (setq deactivate-mark t) (cond (delete-flag (delete-region start end)) @@ -516,7 +516,7 @@ Interactively, reads the register using `register-read-with-preview'." (set-register register (cond ((not reg) text) ((stringp reg) (concat text separator reg)) - (t (error "Register does not contain text"))))) + (t (user-error "Register does not contain text"))))) (setq deactivate-mark t) (cond (delete-flag (delete-region start end)) diff --git a/lisp/simple.el b/lisp/simple.el index 967fbc6..b78286d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4326,7 +4326,7 @@ When this command inserts killed text into the buffer, it honors doc string for `insert-for-yank-1', which see." (interactive "*p") (if (not (eq last-command 'yank)) - (error "Previous command was not a yank")) + (user-error "Previous command was not a yank")) (setq this-command 'yank) (unless arg (setq arg 1)) (let ((inhibit-read-only t) @@ -4958,7 +4958,7 @@ Start discarding off end if gets this big." \(Does not affect global mark ring)." (interactive) (if (null (mark t)) - (error "No mark set in this buffer") + (user-error "No mark set in this buffer") (if (= (point) (mark t)) (message "Mark popped")) (goto-char (mark t)) @@ -5107,7 +5107,7 @@ mode temporarily." (let ((omark (mark t)) (temp-highlight (eq (car-safe transient-mark-mode) 'only))) (if (null omark) - (error "No mark set in this buffer")) + (user-error "No mark set in this buffer")) (set-mark (point)) (goto-char omark) (cond (temp-highlight diff --git a/lisp/windmove.el b/lisp/windmove.el index d857dfc..c461a00 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el @@ -479,10 +479,10 @@ DIR, ARG, and WINDOW are handled as by `windmove-other-window-loc'. If no window is at direction DIR, an error is signaled." (let ((other-window (windmove-find-other-window dir arg window))) (cond ((null other-window) - (error "No window %s from selected window" dir)) + (user-error "No window %s from selected window" dir)) ((and (window-minibuffer-p other-window) (not (minibuffer-window-active-p other-window))) - (error "Minibuffer is inactive")) + (user-error "Minibuffer is inactive")) (t (select-window other-window))))) diff --git a/lisp/winner.el b/lisp/winner.el index f244003..fdf6213 100644 --- a/lisp/winner.el +++ b/lisp/winner.el @@ -415,7 +415,7 @@ In other words, \"undo\" changes in window configuration." (ring-ref winner-pending-undo-ring 0))) (unless (eq (selected-window) (minibuffer-window)) (message "Winner undid undo"))) - (t (error "Previous command was not a `winner-undo'")))) + (t (user-error "Previous command was not a `winner-undo'")))) (provide 'winner) ;;; winner.el ends here commit ad6c1be9230ac8ed517a51778b586055edb952c3 Author: Stefan Monnier Date: Wed Feb 18 11:04:15 2015 -0500 * lisp/emacs-lisp/checkdoc.el (checkdoc-show-diagnostics): Don't make bogus assumptions about window ordering. diff --git a/etc/NEWS b/etc/NEWS index 0295245..f359f91 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -235,6 +235,7 @@ If you need your objects to be named, do it by inheriting from `eieio-named'. *** The variables are declared obsolete. *** The variables are declared obsolete. *** defgeneric and defmethod are declared obsolete. +*** `constructor' is now an obsolete alias for `make-instance'. ** ido *** New command `ido-bury-buffer-at-head' bound to C-S-b diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 704ec34..f683150 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2015-02-18 Stefan Monnier + + * emacs-lisp/checkdoc.el (checkdoc-show-diagnostics): Don't make bogus + assumptions about window ordering. + 2015-02-16 Kelly Dean * lisp/files.el (insert-file-contents-literally): Fix docstring typo. diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 47b6e5f..288e25e 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -2619,14 +2619,15 @@ function called to create the messages." (defun checkdoc-show-diagnostics () "Display the checkdoc diagnostic buffer in a temporary window." (if checkdoc-pending-errors - (let ((b (get-buffer checkdoc-diagnostic-buffer))) - (if b (progn (pop-to-buffer b) - (goto-char (point-max)) - (re-search-backward "\C-l" nil t) - (beginning-of-line) - (forward-line 1) - (recenter 0))) - (other-window -1) + (let* ((b (get-buffer checkdoc-diagnostic-buffer)) + (win (if b (display-buffer b)))) + (when win + (with-selected-window win + (goto-char (point-max)) + (re-search-backward "\C-l" nil t) + (beginning-of-line) + (forward-line 1) + (recenter 0))) (setq checkdoc-pending-errors nil) nil)))