diff options
| author | Kenichi Handa | 2012-08-30 21:07:42 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2012-08-30 21:07:42 +0900 |
| commit | 31e7d6e0902a895e13833204907dfb86268b5acf (patch) | |
| tree | 445b59dd5e87c8e2a8b969356386f45cae8cd6d9 /lisp | |
| parent | 4eb4de01df384be9b8d811f7ab476eeb37ece748 (diff) | |
| parent | f17e1d00e0513d781d2bd9a80af24bb047d32d5c (diff) | |
| download | emacs-31e7d6e0902a895e13833204907dfb86268b5acf.tar.gz emacs-31e7d6e0902a895e13833204907dfb86268b5acf.zip | |
merge trunk
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 110 | ||||
| -rw-r--r-- | lisp/emacs-lisp/cl-lib.el | 2 | ||||
| -rw-r--r-- | lisp/emacs-lisp/gv.el | 5 | ||||
| -rw-r--r-- | lisp/eshell/esh-ext.el | 6 | ||||
| -rw-r--r-- | lisp/ffap.el | 2 | ||||
| -rw-r--r-- | lisp/files.el | 56 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/gnus/gnus-notifications.el | 157 | ||||
| -rw-r--r-- | lisp/ibuffer.el | 2 | ||||
| -rw-r--r-- | lisp/net/rcirc.el | 40 | ||||
| -rw-r--r-- | lisp/net/tramp-sh.el | 6 | ||||
| -rw-r--r-- | lisp/obsolete/vc-mcvs.el | 2 | ||||
| -rw-r--r-- | lisp/paren.el | 11 | ||||
| -rw-r--r-- | lisp/progmodes/compile.el | 8 | ||||
| -rw-r--r-- | lisp/progmodes/hideif.el | 2 | ||||
| -rw-r--r-- | lisp/progmodes/hideshow.el | 2 | ||||
| -rw-r--r-- | lisp/progmodes/sh-script.el | 30 | ||||
| -rw-r--r-- | lisp/simple.el | 26 | ||||
| -rw-r--r-- | lisp/skeleton.el | 2 | ||||
| -rw-r--r-- | lisp/vc/vc-cvs.el | 2 | ||||
| -rw-r--r-- | lisp/vc/vc.el | 4 | ||||
| -rw-r--r-- | lisp/window.el | 6 |
22 files changed, 373 insertions, 114 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3dd2b7b1272..5229c3332b2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,80 @@ | |||
| 1 | 2012-08-30 Andreas Schwab <schwab@linux-m68k.org> | ||
| 2 | |||
| 3 | * progmodes/compile.el (compilation-always-kill): Doc fix. | ||
| 4 | |||
| 5 | 2012-08-30 Chong Yidong <cyd@gnu.org> | ||
| 6 | |||
| 7 | * window.el (display-buffer-reuse-frames): Make the obsolescence | ||
| 8 | message more informative. | ||
| 9 | |||
| 10 | 2012-08-30 Glenn Morris <rgm@gnu.org> | ||
| 11 | |||
| 12 | * paren.el (show-paren-delay): | ||
| 13 | Add a :set function. Doc fix. (Bug#12297) | ||
| 14 | |||
| 15 | 2012-08-29 Martin Blais <blais@furius.ca> (tiny change) | ||
| 16 | |||
| 17 | * progmodes/compile.el (compilation-always-kill): New var. | ||
| 18 | (compilation-start): Use it. | ||
| 19 | |||
| 20 | 2012-08-29 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 21 | |||
| 22 | * simple.el (read-only-mode): Move from files.el for bootstrapping. | ||
| 23 | * files.el (read-only-mode): Move to simple.el. | ||
| 24 | |||
| 25 | * files.el (read-only-mode): New minor mode. | ||
| 26 | (toggle-read-only): Use it and mark obsolete. | ||
| 27 | (find-file--read-only): | ||
| 28 | * vc/vc.el (vc-next-action, vc-checkout): | ||
| 29 | * vc/vc-cvs.el (vc-cvs-checkout): | ||
| 30 | * obsolete/vc-mcvs.el (vc-mcvs-update): | ||
| 31 | * ffap.el (ffap--toggle-read-only): Update callers. | ||
| 32 | |||
| 33 | 2012-08-29 Michael Albinus <michael.albinus@gmx.de> | ||
| 34 | |||
| 35 | * eshell/esh-ext.el (eshell-external-command): Do not examine | ||
| 36 | remote shell scripts. See | ||
| 37 | <https://bugs.launchpad.net/ubuntu/+source/emacs23/+bug/1035790>. | ||
| 38 | |||
| 39 | * net/tramp-sh.el (tramp-remote-path): Add "/sbin" and | ||
| 40 | "/usr/local/sbin". | ||
| 41 | |||
| 42 | 2012-08-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 43 | |||
| 44 | * emacs-lisp/cl-lib.el (buffer-string): Fix setter macro (bug#12293). | ||
| 45 | |||
| 46 | 2012-08-28 Leo Liu <sdl.web@gmail.com> | ||
| 47 | |||
| 48 | * progmodes/sh-script.el (sh-dynamic-complete-functions): Adapt to | ||
| 49 | completion-at-point. (Bug#12220) | ||
| 50 | |||
| 51 | * skeleton.el (skeleton-untabify): Change to nil (bug#12223). | ||
| 52 | |||
| 53 | * progmodes/sh-script.el (sh-indent-comment): Change to t (bug#12267). | ||
| 54 | |||
| 55 | 2012-08-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 56 | |||
| 57 | * files.el (safe-local-eval-forms): Fix before-save-hook entry to | ||
| 58 | be buffer-local; add delete-trailing-whitespace (bug#12259). | ||
| 59 | |||
| 60 | 2012-08-28 Jeremy Moore <jmoore@ieee.org> (tiny change) | ||
| 61 | |||
| 62 | * progmodes/hideif.el (hif-compress-define-list): | ||
| 63 | Fix typo. (Bug#11951) | ||
| 64 | |||
| 65 | 2012-08-28 Dan Nicolaescu <dann@gnu.org> | ||
| 66 | |||
| 67 | * progmodes/hideshow.el (hs-block-end-regexp): Restore lost | ||
| 68 | buffer local setting. | ||
| 69 | |||
| 70 | * net/rcirc.el (rcirc-split-message): Fix for buffer-local | ||
| 71 | rcirc-encode-coding-system. | ||
| 72 | |||
| 73 | 2012-08-28 Leo Liu <sdl.web@gmail.com> | ||
| 74 | |||
| 75 | * net/rcirc.el (rcirc-split-message): New function. | ||
| 76 | (rcirc-send-message): Use it. (Bug#12051) | ||
| 77 | |||
| 1 | 2012-08-28 Juri Linkov <juri@jurta.org> | 78 | 2012-08-28 Juri Linkov <juri@jurta.org> |
| 2 | 79 | ||
| 3 | * info.el (Info-fontify-node): Hide empty lines at the end of | 80 | * info.el (Info-fontify-node): Hide empty lines at the end of |
| @@ -21,8 +98,8 @@ | |||
| 21 | 98 | ||
| 22 | 2012-08-26 Chong Yidong <cyd@gnu.org> | 99 | 2012-08-26 Chong Yidong <cyd@gnu.org> |
| 23 | 100 | ||
| 24 | * progmodes/gdb-mi.el (gdb-display-buffer-other-frame-action): New | 101 | * progmodes/gdb-mi.el (gdb-display-buffer-other-frame-action): |
| 25 | variable, replacing gdb-frame-parameters. | 102 | New variable, replacing gdb-frame-parameters. |
| 26 | (gdb-frame-io-buffer, gdb-frame-breakpoints-buffer) | 103 | (gdb-frame-io-buffer, gdb-frame-breakpoints-buffer) |
| 27 | (gdb-frame-threads-buffer, gdb-frame-memory-buffer) | 104 | (gdb-frame-threads-buffer, gdb-frame-memory-buffer) |
| 28 | (gdb-frame-disassembly-buffer, gdb-frame-stack-buffer) | 105 | (gdb-frame-disassembly-buffer, gdb-frame-stack-buffer) |
| @@ -98,17 +175,17 @@ | |||
| 98 | 175 | ||
| 99 | 2012-08-22 Martin Rudalics <rudalics@gmx.at> | 176 | 2012-08-22 Martin Rudalics <rudalics@gmx.at> |
| 100 | 177 | ||
| 101 | * window.el (walk-window-tree, window-with-parameter): New | 178 | * window.el (walk-window-tree, window-with-parameter): |
| 102 | optional argument MINIBUF to control whether these functions | 179 | New optional argument MINIBUF to control whether these functions |
| 103 | should run on the minibuffer window. | 180 | should run on the minibuffer window. |
| 104 | (window-at-side-list): Don't operate on minibuffer window. | 181 | (window-at-side-list): Don't operate on minibuffer window. |
| 105 | (window-in-direction): Simplify and rewrite doc-string. | 182 | (window-in-direction): Simplify and rewrite doc-string. |
| 106 | (window--size-ignore): Rename to window--size-ignore-p. Update | 183 | (window--size-ignore): Rename to window--size-ignore-p. |
| 107 | callers. | 184 | Update callers. |
| 108 | (display-buffer-in-atom-window, window--major-non-side-window) | 185 | (display-buffer-in-atom-window, window--major-non-side-window) |
| 109 | (window--major-side-window, display-buffer-in-major-side-window) | 186 | (window--major-side-window, display-buffer-in-major-side-window) |
| 110 | (delete-side-window, display-buffer-in-side-window): New | 187 | (delete-side-window, display-buffer-in-side-window): |
| 111 | functions. | 188 | New functions. |
| 112 | (window--side-check, window-deletable-p, delete-window) | 189 | (window--side-check, window-deletable-p, delete-window) |
| 113 | (delete-other-windows, split-window): Handle side windows and | 190 | (delete-other-windows, split-window): Handle side windows and |
| 114 | atomic windows appropriately. | 191 | atomic windows appropriately. |
| @@ -160,8 +237,8 @@ | |||
| 160 | * window.el (window-point-1, set-window-point-1): Remove. | 237 | * window.el (window-point-1, set-window-point-1): Remove. |
| 161 | (window-in-direction, record-window-buffer) | 238 | (window-in-direction, record-window-buffer) |
| 162 | (set-window-buffer-start-and-point, split-window-below) | 239 | (set-window-buffer-start-and-point, split-window-below) |
| 163 | (window--state-get-1, display-buffer-record-window): Replace | 240 | (window--state-get-1, display-buffer-record-window): |
| 164 | calls to window-point-1 and set-window-point-1 by calls to | 241 | Replace calls to window-point-1 and set-window-point-1 by calls to |
| 165 | window-point and set-window-point respectively. | 242 | window-point and set-window-point respectively. |
| 166 | 243 | ||
| 167 | 2012-08-21 Glenn Morris <rgm@gnu.org> | 244 | 2012-08-21 Glenn Morris <rgm@gnu.org> |
| @@ -279,8 +356,8 @@ | |||
| 279 | (yank-excluded-properties): Add font-lock-face and category. | 356 | (yank-excluded-properties): Add font-lock-face and category. |
| 280 | (yank): Doc fix. | 357 | (yank): Doc fix. |
| 281 | 358 | ||
| 282 | * subr.el (remove-yank-excluded-properties): Obey | 359 | * subr.el (remove-yank-excluded-properties): |
| 283 | yank-handled-properties. The special handling of font-lock-face | 360 | Obey yank-handled-properties. The special handling of font-lock-face |
| 284 | and category is now done this way, instead of being hard-coded. | 361 | and category is now done this way, instead of being hard-coded. |
| 285 | (insert-for-yank-1): Remove font-lock-face handling. | 362 | (insert-for-yank-1): Remove font-lock-face handling. |
| 286 | (yank-handle-font-lock-face-property) | 363 | (yank-handle-font-lock-face-property) |
| @@ -294,8 +371,8 @@ | |||
| 294 | 371 | ||
| 295 | 2012-08-17 Michael Albinus <michael.albinus@gmx.de> | 372 | 2012-08-17 Michael Albinus <michael.albinus@gmx.de> |
| 296 | 373 | ||
| 297 | * net/tramp-sh.el (tramp-sh-handle-start-file-process): Eliminate | 374 | * net/tramp-sh.el (tramp-sh-handle-start-file-process): |
| 298 | superfluous prompt. (Bug#12203) | 375 | Eliminate superfluous prompt. (Bug#12203) |
| 299 | 376 | ||
| 300 | 2012-08-17 Chong Yidong <cyd@gnu.org> | 377 | 2012-08-17 Chong Yidong <cyd@gnu.org> |
| 301 | 378 | ||
| @@ -322,8 +399,8 @@ | |||
| 322 | (next-buffer, previous-buffer, split-window, balance-windows-2) | 399 | (next-buffer, previous-buffer, split-window, balance-windows-2) |
| 323 | (set-window-text-height, window-buffer-height) | 400 | (set-window-text-height, window-buffer-height) |
| 324 | (fit-window-to-buffer, shrink-window-if-larger-than-buffer) | 401 | (fit-window-to-buffer, shrink-window-if-larger-than-buffer) |
| 325 | (truncated-partial-width-window-p): Minor code adjustments. In | 402 | (truncated-partial-width-window-p): Minor code adjustments. |
| 326 | doc-strings state whether the argument window has to denote a | 403 | In doc-strings state whether the argument window has to denote a |
| 327 | live, valid or any window. | 404 | live, valid or any window. |
| 328 | 405 | ||
| 329 | 2012-08-16 Phil Sainty <psainty@orcon.net.nz> (tiny change) | 406 | 2012-08-16 Phil Sainty <psainty@orcon.net.nz> (tiny change) |
| @@ -566,6 +643,7 @@ | |||
| 566 | * files.el (hack-local-variables-filter): If an eval: form is not | 643 | * files.el (hack-local-variables-filter): If an eval: form is not |
| 567 | known to be safe, and enable-local-variables is :safe, then ignore | 644 | known to be safe, and enable-local-variables is :safe, then ignore |
| 568 | the form totally, as is done for non-eval forms. (Bug#12155) | 645 | the form totally, as is done for non-eval forms. (Bug#12155) |
| 646 | This is CVE-2012-3479. | ||
| 569 | 647 | ||
| 570 | 2012-08-10 Stefan Monnier <monnier@iro.umontreal.ca> | 648 | 2012-08-10 Stefan Monnier <monnier@iro.umontreal.ca> |
| 571 | 649 | ||
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el index 86497a3c73f..532c81c502c 100644 --- a/lisp/emacs-lisp/cl-lib.el +++ b/lisp/emacs-lisp/cl-lib.el | |||
| @@ -635,7 +635,7 @@ If ALIST is non-nil, the new pairs are prepended to it." | |||
| 635 | (set-buffer-modified-p ,flag))) | 635 | (set-buffer-modified-p ,flag))) |
| 636 | (gv-define-simple-setter buffer-name rename-buffer t) | 636 | (gv-define-simple-setter buffer-name rename-buffer t) |
| 637 | (gv-define-setter buffer-string (store) | 637 | (gv-define-setter buffer-string (store) |
| 638 | `(progn (erase-buffer) (insert ,store))) | 638 | `(insert (prog1 ,store (erase-buffer)))) |
| 639 | (gv-define-simple-setter buffer-substring cl--set-buffer-substring) | 639 | (gv-define-simple-setter buffer-substring cl--set-buffer-substring) |
| 640 | (gv-define-simple-setter current-buffer set-buffer) | 640 | (gv-define-simple-setter current-buffer set-buffer) |
| 641 | (gv-define-simple-setter current-case-table set-case-table) | 641 | (gv-define-simple-setter current-case-table set-case-table) |
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el index d1f997c99c4..4caa0a73866 100644 --- a/lisp/emacs-lisp/gv.el +++ b/lisp/emacs-lisp/gv.el | |||
| @@ -191,8 +191,9 @@ well for simple place forms. | |||
| 191 | Assignments of VAL to (NAME ARGS...) are expanded by binding the argument | 191 | Assignments of VAL to (NAME ARGS...) are expanded by binding the argument |
| 192 | forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must | 192 | forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must |
| 193 | return a Lisp form that does the assignment. | 193 | return a Lisp form that does the assignment. |
| 194 | Actually, ARGLIST may be bound to temporary variables which are introduced | 194 | The first arg in ARLIST (the one that receives VAL) receives an expression |
| 195 | automatically to preserve proper execution order of the arguments. Example: | 195 | which can do arbitrary things, whereas the other arguments are all guaranteed |
| 196 | to be pure and copyable. Example use: | ||
| 196 | (gv-define-setter aref (v a i) `(aset ,a ,i ,v))" | 197 | (gv-define-setter aref (v a i) `(aset ,a ,i ,v))" |
| 197 | (declare (indent 2) (debug (&define name sexp body))) | 198 | (declare (indent 2) (debug (&define name sexp body))) |
| 198 | `(gv-define-expander ,name | 199 | `(gv-define-expander ,name |
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el index 52df1587d5f..f9f9b1a558f 100644 --- a/lisp/eshell/esh-ext.el +++ b/lisp/eshell/esh-ext.el | |||
| @@ -209,7 +209,11 @@ causing the user to wonder if anything's really going on..." | |||
| 209 | (setq args (eshell-stringify-list (eshell-flatten-list args))) | 209 | (setq args (eshell-stringify-list (eshell-flatten-list args))) |
| 210 | ;; (if (file-remote-p default-directory) | 210 | ;; (if (file-remote-p default-directory) |
| 211 | ;; (eshell-remote-command command args)) | 211 | ;; (eshell-remote-command command args)) |
| 212 | (let ((interp (eshell-find-interpreter command))) | 212 | (let ((interp (eshell-find-interpreter |
| 213 | command | ||
| 214 | ;; Do not examine remote shell scripts. | ||
| 215 | (or (and (stringp command) (file-remote-p command)) | ||
| 216 | (file-remote-p default-directory))))) | ||
| 213 | (cl-assert interp) | 217 | (cl-assert interp) |
| 214 | (if (functionp (car interp)) | 218 | (if (functionp (car interp)) |
| 215 | (apply (car interp) (append (cdr interp) args)) | 219 | (apply (car interp) (append (cdr interp) args)) |
diff --git a/lisp/ffap.el b/lisp/ffap.el index d0f3b639cf2..ebe8b6dee94 100644 --- a/lisp/ffap.el +++ b/lisp/ffap.el | |||
| @@ -1703,7 +1703,7 @@ Only intended for interactive use." | |||
| 1703 | buffer-or-list | 1703 | buffer-or-list |
| 1704 | (list buffer-or-list))) | 1704 | (list buffer-or-list))) |
| 1705 | (with-current-buffer buffer | 1705 | (with-current-buffer buffer |
| 1706 | (toggle-read-only 1)))) | 1706 | (read-only-mode 1)))) |
| 1707 | 1707 | ||
| 1708 | (defun ffap-read-only () | 1708 | (defun ffap-read-only () |
| 1709 | "Like `ffap', but mark buffer as read-only. | 1709 | "Like `ffap', but mark buffer as read-only. |
diff --git a/lisp/files.el b/lisp/files.el index 5caa4681884..ef7f8e43a41 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -1456,7 +1456,7 @@ file names with wildcards." | |||
| 1456 | (file-exists-p filename)) | 1456 | (file-exists-p filename)) |
| 1457 | (error "%s does not exist" filename)) | 1457 | (error "%s does not exist" filename)) |
| 1458 | (let ((value (funcall fun filename wildcards))) | 1458 | (let ((value (funcall fun filename wildcards))) |
| 1459 | (mapc (lambda (b) (with-current-buffer b (toggle-read-only 1))) | 1459 | (mapc (lambda (b) (with-current-buffer b (read-only-mode 1))) |
| 1460 | (if (listp value) value (list value))) | 1460 | (if (listp value) value (list value))) |
| 1461 | value)) | 1461 | value)) |
| 1462 | 1462 | ||
| @@ -2837,7 +2837,8 @@ symbol and VAL is a value that is considered safe." | |||
| 2837 | ;; This should be here at least as long as Emacs supports write-file-hooks. | 2837 | ;; This should be here at least as long as Emacs supports write-file-hooks. |
| 2838 | '((add-hook 'write-file-hooks 'time-stamp) | 2838 | '((add-hook 'write-file-hooks 'time-stamp) |
| 2839 | (add-hook 'write-file-functions 'time-stamp) | 2839 | (add-hook 'write-file-functions 'time-stamp) |
| 2840 | (add-hook 'before-save-hook 'time-stamp)) | 2840 | (add-hook 'before-save-hook 'time-stamp nil t) |
| 2841 | (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)) | ||
| 2841 | "Expressions that are considered safe in an `eval:' local variable. | 2842 | "Expressions that are considered safe in an `eval:' local variable. |
| 2842 | Add expressions to this list if you want Emacs to evaluate them, when | 2843 | Add expressions to this list if you want Emacs to evaluate them, when |
| 2843 | they appear in an `eval' local variable specification, without first | 2844 | they appear in an `eval' local variable specification, without first |
| @@ -4817,51 +4818,12 @@ prints a message in the minibuffer. Instead, use `set-buffer-modified-p'." | |||
| 4817 | "Modification-flag cleared")) | 4818 | "Modification-flag cleared")) |
| 4818 | (set-buffer-modified-p arg)) | 4819 | (set-buffer-modified-p arg)) |
| 4819 | 4820 | ||
| 4820 | (defun toggle-read-only (&optional arg message) | 4821 | (defun toggle-read-only (&optional arg interactive) |
| 4821 | "Toggle the read-only state of the current buffer. | 4822 | (declare (obsolete read-only-mode "24.3")) |
| 4822 | With prefix argument ARG, make the buffer read-only if ARG is | 4823 | (interactive (list current-prefix-arg t)) |
| 4823 | positive; otherwise make it writable. | 4824 | (if interactive |
| 4824 | 4825 | (call-interactively 'read-only-mode) | |
| 4825 | When making the buffer read-only, enable View mode if | 4826 | (read-only-mode (or arg 'toggle)))) |
| 4826 | `view-read-only' is non-nil. When making the buffer writable, | ||
| 4827 | disable View mode if View mode is enabled. | ||
| 4828 | |||
| 4829 | If called interactively, or if called from Lisp with MESSAGE | ||
| 4830 | non-nil, print a message reporting the buffer's new read-only | ||
| 4831 | status. | ||
| 4832 | |||
| 4833 | Do not call this from a Lisp program unless you really intend to | ||
| 4834 | do the same thing as the \\[toggle-read-only] command, including | ||
| 4835 | possibly enabling or disabling View mode. Also, note that this | ||
| 4836 | command works by setting the variable `buffer-read-only', which | ||
| 4837 | does not affect read-only regions caused by text properties. To | ||
| 4838 | ignore read-only status in a Lisp program (whether due to text | ||
| 4839 | properties or buffer state), bind `inhibit-read-only' temporarily | ||
| 4840 | to a non-nil value." | ||
| 4841 | (interactive "P") | ||
| 4842 | (cond | ||
| 4843 | ;; Do nothing if `buffer-read-only' already matches the state | ||
| 4844 | ;; specified by ARG. | ||
| 4845 | ((and arg | ||
| 4846 | (if (> (prefix-numeric-value arg) 0) | ||
| 4847 | buffer-read-only | ||
| 4848 | (not buffer-read-only)))) | ||
| 4849 | ;; If View mode is enabled, exit it. | ||
| 4850 | ((and buffer-read-only view-mode) | ||
| 4851 | (View-exit-and-edit) | ||
| 4852 | (set (make-local-variable 'view-read-only) t)) | ||
| 4853 | ;; If `view-read-only' is non-nil, enable View mode. | ||
| 4854 | ((and view-read-only | ||
| 4855 | (not buffer-read-only) | ||
| 4856 | (not view-mode) | ||
| 4857 | (not (eq (get major-mode 'mode-class) 'special))) | ||
| 4858 | (view-mode-enter)) | ||
| 4859 | ;; The usual action: flip `buffer-read-only'. | ||
| 4860 | (t (setq buffer-read-only (not buffer-read-only)) | ||
| 4861 | (force-mode-line-update))) | ||
| 4862 | (if (or message (called-interactively-p 'interactive)) | ||
| 4863 | (message "Read-only %s for this buffer" | ||
| 4864 | (if buffer-read-only "enabled" "disabled")))) | ||
| 4865 | 4827 | ||
| 4866 | (defun insert-file (filename) | 4828 | (defun insert-file (filename) |
| 4867 | "Insert contents of file FILENAME into buffer after point. | 4829 | "Insert contents of file FILENAME into buffer after point. |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 4b56d351ac2..4db752f13a4 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2012-08-29 Julien Danjou <julien@danjou.info> | ||
| 2 | |||
| 3 | * gnus-notifications.el: New file. | ||
| 4 | (gnus-notifications-notify): New function. | ||
| 5 | (gnus-notifications): Use `gnus-notifications-notify'. | ||
| 6 | |||
| 1 | 2012-08-28 Katsumi Yamaoka <yamaoka@jpl.org> | 7 | 2012-08-28 Katsumi Yamaoka <yamaoka@jpl.org> |
| 2 | 8 | ||
| 3 | * gnus-sum.el (gnus-summary-enter-digest-group): Decode content | 9 | * gnus-sum.el (gnus-summary-enter-digest-group): Decode content |
diff --git a/lisp/gnus/gnus-notifications.el b/lisp/gnus/gnus-notifications.el new file mode 100644 index 00000000000..8811b47ba42 --- /dev/null +++ b/lisp/gnus/gnus-notifications.el | |||
| @@ -0,0 +1,157 @@ | |||
| 1 | ;; gnus-notifications.el -- Send notification on new message in Gnus | ||
| 2 | |||
| 3 | ;; Copyright (C) 2012 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Julien Danjou <julien@danjou.info> | ||
| 6 | ;; Keywords: news | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;; This implements notifications using `notifications-notify' on new | ||
| 26 | ;; messages received. | ||
| 27 | ;; Use (add-hook 'gnus-after-getting-new-news-hook 'gnus-notifications) | ||
| 28 | ;; to get notifications just after getting the new news. | ||
| 29 | |||
| 30 | ;;; Code: | ||
| 31 | |||
| 32 | (require 'notifications nil t) | ||
| 33 | (require 'gnus-sum) | ||
| 34 | (require 'gnus-group) | ||
| 35 | (require 'gnus-int) | ||
| 36 | (require 'gnus-art) | ||
| 37 | (require 'gnus-util) | ||
| 38 | (require 'google-contacts nil t) ; Optional | ||
| 39 | |||
| 40 | (defgroup gnus-notifications nil | ||
| 41 | "Send notifications on new message in Gnus." | ||
| 42 | :group 'gnus) | ||
| 43 | |||
| 44 | (defcustom gnus-notifications-use-google-contacts t | ||
| 45 | "Use Google Contacts to retrieve photo." | ||
| 46 | :type 'boolean | ||
| 47 | :group 'gnus-notifications) | ||
| 48 | |||
| 49 | (defcustom gnus-notifications-use-gravatar t | ||
| 50 | "Use Gravatar to retrieve photo." | ||
| 51 | :type 'boolean | ||
| 52 | :group 'gnus-notifications) | ||
| 53 | |||
| 54 | (defcustom gnus-notifications-minimum-level 1 | ||
| 55 | "Minimum group level the message should have to be notified. | ||
| 56 | Any message in a group that has a greater value than this will | ||
| 57 | not get notifications." | ||
| 58 | :type 'integer | ||
| 59 | :group 'gnus-notifications) | ||
| 60 | |||
| 61 | (defvar gnus-notifications-sent nil | ||
| 62 | "Notifications already sent.") | ||
| 63 | |||
| 64 | (defun gnus-notifications-notify (from subject photo-file) | ||
| 65 | "Send a notification about a new mail." | ||
| 66 | (if (fboundp 'notifications-notify) | ||
| 67 | (notifications-notify | ||
| 68 | :title from | ||
| 69 | :body subject | ||
| 70 | :app-icon (image-search-load-path "gnus/gnus.png") | ||
| 71 | :app-name "Gnus" | ||
| 72 | :category "email.arrived" | ||
| 73 | :image-path photo-file) | ||
| 74 | (message "New message from %s: %s" from subject))) | ||
| 75 | |||
| 76 | (defun gnus-notifications-get-photo (mail-address) | ||
| 77 | "Get photo for mail address." | ||
| 78 | (let ((google-photo (when (and gnus-notifications-use-google-contacts | ||
| 79 | (fboundp 'google-contacts-get-photo)) | ||
| 80 | (ignore-errors | ||
| 81 | (google-contacts-get-photo mail-address))))) | ||
| 82 | (if google-photo | ||
| 83 | google-photo | ||
| 84 | (when gnus-notifications-use-gravatar | ||
| 85 | (let ((gravatar (ignore-errors | ||
| 86 | (gravatar-retrieve-synchronously mail-address)))) | ||
| 87 | (if (eq gravatar 'error) | ||
| 88 | nil | ||
| 89 | (plist-get (cdr gravatar) :data))))))) | ||
| 90 | |||
| 91 | (defun gnus-notifications-get-photo-file (mail-address) | ||
| 92 | "Get a temporary file with an image for MAIL-ADDRESS. | ||
| 93 | You have to delete the temporary image yourself using | ||
| 94 | `delete-image'. | ||
| 95 | |||
| 96 | Returns nil if no image found." | ||
| 97 | (let ((photo (gnus-notifications-get-photo mail-address))) | ||
| 98 | (when photo | ||
| 99 | (let ((photo-file (make-temp-file "gnus-notifications-photo-")) | ||
| 100 | (coding-system-for-write 'binary)) | ||
| 101 | (with-temp-file photo-file | ||
| 102 | (insert photo)) | ||
| 103 | photo-file)))) | ||
| 104 | |||
| 105 | ;;;###autoload | ||
| 106 | (defun gnus-notifications () | ||
| 107 | "Send a notification on new message. | ||
| 108 | This check for new messages that are in group with a level lower | ||
| 109 | or equal to `gnus-notifications-minimum-level' and send a | ||
| 110 | notification using `notifications-notify' for it. | ||
| 111 | |||
| 112 | This is typically a function to add in | ||
| 113 | `gnus-after-getting-new-news-hook'" | ||
| 114 | (dolist (entry gnus-newsrc-alist) | ||
| 115 | (let ((group (car entry))) | ||
| 116 | ;; Check that the group level is less than | ||
| 117 | ;; `gnus-notifications-minimum-level' and the the group has unread | ||
| 118 | ;; messages. | ||
| 119 | (when (and (<= (gnus-group-level group) gnus-notifications-minimum-level) | ||
| 120 | (let ((unread (gnus-group-unread group))) | ||
| 121 | (and (numberp unread) | ||
| 122 | (> unread 0)))) | ||
| 123 | ;; Each group should have an entry in the `gnus-notifications-sent' | ||
| 124 | ;; alist. If not, we add one at this time. | ||
| 125 | (let ((group-notifications (or (assoc group gnus-notifications-sent) | ||
| 126 | ;; Nothing, add one and return it. | ||
| 127 | (assoc group | ||
| 128 | (add-to-list | ||
| 129 | 'gnus-notifications-sent | ||
| 130 | (cons group nil)))))) | ||
| 131 | (dolist (article (gnus-list-of-unread-articles group)) | ||
| 132 | ;; Check if the article already has been notified | ||
| 133 | (unless (memq article (cdr group-notifications)) | ||
| 134 | (with-current-buffer nntp-server-buffer | ||
| 135 | (gnus-request-head article group) | ||
| 136 | (article-decode-encoded-words) ; to decode mail addresses, subjects, etc | ||
| 137 | (let* ((address-components (mail-extract-address-components | ||
| 138 | (or (mail-fetch-field "From") ""))) | ||
| 139 | (address (cadr address-components)) | ||
| 140 | (photo-file (gnus-notifications-get-photo-file | ||
| 141 | address))) | ||
| 142 | (when (or | ||
| 143 | ;; Ignore mails from ourselves | ||
| 144 | (gnus-string-match-p gnus-ignored-from-addresses | ||
| 145 | address) | ||
| 146 | (gnus-notifications-notify | ||
| 147 | (or (car address-components) address) | ||
| 148 | (mail-fetch-field "Subject") | ||
| 149 | photo-file)) | ||
| 150 | ;; Register that we did notify this message | ||
| 151 | (setcdr group-notifications (cons article (cdr group-notifications)))) | ||
| 152 | (when photo-file | ||
| 153 | (delete-file photo-file))))))))))) | ||
| 154 | |||
| 155 | (provide 'gnus-notifications) | ||
| 156 | |||
| 157 | ;;; gnus-notifications.el ends here | ||
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index 648c4c3b0af..c6e799252a2 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el | |||
| @@ -2401,7 +2401,7 @@ Operations on marked buffers: | |||
| 2401 | buffer's file as an argument. | 2401 | buffer's file as an argument. |
| 2402 | '\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This | 2402 | '\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This |
| 2403 | is a very flexible command. For example, if you want to make all | 2403 | is a very flexible command. For example, if you want to make all |
| 2404 | of the marked buffers read only, try using (toggle-read-only 1) as | 2404 | of the marked buffers read only, try using (read-only-mode 1) as |
| 2405 | the input form. | 2405 | the input form. |
| 2406 | '\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form | 2406 | '\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form |
| 2407 | is evaluated. | 2407 | is evaluated. |
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 27cf50f06ca..dd345630b9b 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el | |||
| @@ -802,26 +802,36 @@ With no argument or nil as argument, use the current buffer." | |||
| 802 | (defvar rcirc-max-message-length 420 | 802 | (defvar rcirc-max-message-length 420 |
| 803 | "Messages longer than this value will be split.") | 803 | "Messages longer than this value will be split.") |
| 804 | 804 | ||
| 805 | (defun rcirc-split-message (message) | ||
| 806 | "Split MESSAGE into chunks within `rcirc-max-message-length'." | ||
| 807 | ;; `rcirc-encode-coding-system' can have buffer-local value. | ||
| 808 | (let ((encoding rcirc-encode-coding-system)) | ||
| 809 | (with-temp-buffer | ||
| 810 | (insert message) | ||
| 811 | (goto-char (point-min)) | ||
| 812 | (let (result) | ||
| 813 | (while (not (eobp)) | ||
| 814 | (goto-char (or (byte-to-position rcirc-max-message-length) | ||
| 815 | (point-max))) | ||
| 816 | ;; max message length is 512 including CRLF | ||
| 817 | (while (and (not (bobp)) | ||
| 818 | (> (length (encode-coding-region | ||
| 819 | (point-min) (point) encoding t)) | ||
| 820 | rcirc-max-message-length)) | ||
| 821 | (forward-char -1)) | ||
| 822 | (push (delete-and-extract-region (point-min) (point)) result)) | ||
| 823 | (nreverse result))))) | ||
| 824 | |||
| 805 | (defun rcirc-send-message (process target message &optional noticep silent) | 825 | (defun rcirc-send-message (process target message &optional noticep silent) |
| 806 | "Send TARGET associated with PROCESS a privmsg with text MESSAGE. | 826 | "Send TARGET associated with PROCESS a privmsg with text MESSAGE. |
| 807 | If NOTICEP is non-nil, send a notice instead of privmsg. | 827 | If NOTICEP is non-nil, send a notice instead of privmsg. |
| 808 | If SILENT is non-nil, do not print the message in any irc buffer." | 828 | If SILENT is non-nil, do not print the message in any irc buffer." |
| 809 | ;; max message length is 512 including CRLF | 829 | (let ((response (if noticep "NOTICE" "PRIVMSG"))) |
| 810 | (let* ((response (if noticep "NOTICE" "PRIVMSG")) | ||
| 811 | (oversize (> (length message) rcirc-max-message-length)) | ||
| 812 | (text (if oversize | ||
| 813 | (substring message 0 rcirc-max-message-length) | ||
| 814 | message)) | ||
| 815 | (text (if (string= text "") | ||
| 816 | " " | ||
| 817 | text)) | ||
| 818 | (more (if oversize | ||
| 819 | (substring message rcirc-max-message-length)))) | ||
| 820 | (rcirc-get-buffer-create process target) | 830 | (rcirc-get-buffer-create process target) |
| 821 | (rcirc-send-string process (concat response " " target " :" text)) | 831 | (dolist (msg (rcirc-split-message message)) |
| 822 | (unless silent | 832 | (rcirc-send-string process (concat response " " target " :" msg)) |
| 823 | (rcirc-print process (rcirc-nick process) response target text)) | 833 | (unless silent |
| 824 | (when more (rcirc-send-message process target more noticep)))) | 834 | (rcirc-print process (rcirc-nick process) response target msg))))) |
| 825 | 835 | ||
| 826 | (defvar rcirc-input-ring nil) | 836 | (defvar rcirc-input-ring nil) |
| 827 | (defvar rcirc-input-ring-index 0) | 837 | (defvar rcirc-input-ring-index 0) |
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 6283188d46a..2c1af3e83fa 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -512,9 +512,9 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 512 | ;; IRIX64: /usr/bin | 512 | ;; IRIX64: /usr/bin |
| 513 | ;;;###tramp-autoload | 513 | ;;;###tramp-autoload |
| 514 | (defcustom tramp-remote-path | 514 | (defcustom tramp-remote-path |
| 515 | '(tramp-default-remote-path "/bin" "/usr/bin" "/usr/sbin" | 515 | '(tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin" |
| 516 | "/usr/local/bin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" | 516 | "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin" |
| 517 | "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" | 517 | "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" |
| 518 | "/opt/bin" "/opt/sbin" "/opt/local/bin") | 518 | "/opt/bin" "/opt/sbin" "/opt/local/bin") |
| 519 | "List of directories to search for executables on remote host. | 519 | "List of directories to search for executables on remote host. |
| 520 | For every remote host, this variable will be set buffer local, | 520 | For every remote host, this variable will be set buffer local, |
diff --git a/lisp/obsolete/vc-mcvs.el b/lisp/obsolete/vc-mcvs.el index 94db90f1d6a..78221945073 100644 --- a/lisp/obsolete/vc-mcvs.el +++ b/lisp/obsolete/vc-mcvs.el | |||
| @@ -329,7 +329,7 @@ This is only possible if Meta-CVS is responsible for FILE's directory.") | |||
| 329 | (if vc-mcvs-use-edit | 329 | (if vc-mcvs-use-edit |
| 330 | (vc-mcvs-command nil 0 file "edit") | 330 | (vc-mcvs-command nil 0 file "edit") |
| 331 | (set-file-modes file (logior (file-modes file) 128)) | 331 | (set-file-modes file (logior (file-modes file) 128)) |
| 332 | (if (equal file buffer-file-name) (toggle-read-only -1)))) | 332 | (if (equal file buffer-file-name) (read-only-mode -1)))) |
| 333 | ;; Check out a particular revision (or recreate the file). | 333 | ;; Check out a particular revision (or recreate the file). |
| 334 | (vc-file-setprop file 'vc-working-revision nil) | 334 | (vc-file-setprop file 'vc-working-revision nil) |
| 335 | (apply 'vc-mcvs-command nil 0 file | 335 | (apply 'vc-mcvs-command nil 0 file |
diff --git a/lisp/paren.el b/lisp/paren.el index 2d6c42478e1..ab856380d3f 100644 --- a/lisp/paren.el +++ b/lisp/paren.el | |||
| @@ -52,8 +52,17 @@ otherwise)." | |||
| 52 | :group 'paren-showing) | 52 | :group 'paren-showing) |
| 53 | 53 | ||
| 54 | (defcustom show-paren-delay 0.125 | 54 | (defcustom show-paren-delay 0.125 |
| 55 | "Time in seconds to delay before showing a matching paren." | 55 | "Time in seconds to delay before showing a matching paren. |
| 56 | If you change this without using customize while `show-paren-mode' is | ||
| 57 | active, you must toggle the mode off and on again for this to take effect." | ||
| 56 | :type '(number :tag "seconds") | 58 | :type '(number :tag "seconds") |
| 59 | :initialize 'custom-initialize-default | ||
| 60 | :set (lambda (sym val) | ||
| 61 | (if (not show-paren-mode) | ||
| 62 | (set sym val) | ||
| 63 | (show-paren-mode -1) | ||
| 64 | (set sym val) | ||
| 65 | (show-paren-mode 1))) | ||
| 57 | :group 'paren-showing) | 66 | :group 'paren-showing) |
| 58 | 67 | ||
| 59 | (defcustom show-paren-priority 1000 | 68 | (defcustom show-paren-priority 1000 |
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index eb966e8a90d..fbb0c9e204a 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el | |||
| @@ -1503,6 +1503,13 @@ Otherwise, construct a buffer name from NAME-OF-MODE." | |||
| 1503 | (compilation-start command nil name-function highlight-regexp))) | 1503 | (compilation-start command nil name-function highlight-regexp))) |
| 1504 | (make-obsolete 'compile-internal 'compilation-start "22.1") | 1504 | (make-obsolete 'compile-internal 'compilation-start "22.1") |
| 1505 | 1505 | ||
| 1506 | (defcustom compilation-always-kill nil | ||
| 1507 | "If t, always kill a running compilation process before starting a new one. | ||
| 1508 | If nil, ask to kill it." | ||
| 1509 | :type 'boolean | ||
| 1510 | :version "24.3" | ||
| 1511 | :group 'compilation) | ||
| 1512 | |||
| 1506 | ;;;###autoload | 1513 | ;;;###autoload |
| 1507 | (defun compilation-start (command &optional mode name-function highlight-regexp) | 1514 | (defun compilation-start (command &optional mode name-function highlight-regexp) |
| 1508 | "Run compilation command COMMAND (low level interface). | 1515 | "Run compilation command COMMAND (low level interface). |
| @@ -1537,6 +1544,7 @@ Returns the compilation buffer created." | |||
| 1537 | (let ((comp-proc (get-buffer-process (current-buffer)))) | 1544 | (let ((comp-proc (get-buffer-process (current-buffer)))) |
| 1538 | (if comp-proc | 1545 | (if comp-proc |
| 1539 | (if (or (not (eq (process-status comp-proc) 'run)) | 1546 | (if (or (not (eq (process-status comp-proc) 'run)) |
| 1547 | compilation-always-kill | ||
| 1540 | (yes-or-no-p | 1548 | (yes-or-no-p |
| 1541 | (format "A %s process is running; kill it? " | 1549 | (format "A %s process is running; kill it? " |
| 1542 | name-of-mode))) | 1550 | name-of-mode))) |
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 3e3d7adc0b6..4b77c6dab1a 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el | |||
| @@ -1003,7 +1003,7 @@ Return as (TOP . BOTTOM) the extent of ifdef block." | |||
| 1003 | "Compress the define list ENV into a list of defined symbols only." | 1003 | "Compress the define list ENV into a list of defined symbols only." |
| 1004 | (let ((new-defs nil)) | 1004 | (let ((new-defs nil)) |
| 1005 | (dolist (def env new-defs) | 1005 | (dolist (def env new-defs) |
| 1006 | (if (hif-lookup (car def)) (push (car env) new-defs))))) | 1006 | (if (hif-lookup (car def)) (push (car def) new-defs))))) |
| 1007 | 1007 | ||
| 1008 | (defun hide-ifdef-set-define-alist (name) | 1008 | (defun hide-ifdef-set-define-alist (name) |
| 1009 | "Set the association for NAME to `hide-ifdef-env'." | 1009 | "Set the association for NAME to `hide-ifdef-env'." |
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index b6d2b5e319c..233b9a5212e 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el | |||
| @@ -408,6 +408,8 @@ element (using `match-beginning') before calling `hs-forward-sexp-func'.") | |||
| 408 | 408 | ||
| 409 | (defvar hs-block-end-regexp nil | 409 | (defvar hs-block-end-regexp nil |
| 410 | "Regexp for end of block.") | 410 | "Regexp for end of block.") |
| 411 | (make-variable-buffer-local 'hs-block-end-regexp) | ||
| 412 | |||
| 411 | 413 | ||
| 412 | (defvar hs-forward-sexp-func 'forward-sexp | 414 | (defvar hs-forward-sexp-func 'forward-sexp |
| 413 | "Function used to do a `forward-sexp'. | 415 | "Function used to do a `forward-sexp'. |
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index a6089aabb04..a422462775d 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el | |||
| @@ -202,6 +202,11 @@ | |||
| 202 | (require 'comint)) | 202 | (require 'comint)) |
| 203 | (require 'executable) | 203 | (require 'executable) |
| 204 | 204 | ||
| 205 | (autoload 'comint-completion-at-point "comint") | ||
| 206 | (autoload 'comint-filename-completion "comint") | ||
| 207 | (autoload 'shell-command-completion "shell") | ||
| 208 | (autoload 'shell-environment-variable-completion "shell") | ||
| 209 | |||
| 205 | (defvar font-lock-comment-face) | 210 | (defvar font-lock-comment-face) |
| 206 | (defvar font-lock-set-defaults) | 211 | (defvar font-lock-set-defaults) |
| 207 | (defvar font-lock-string-face) | 212 | (defvar font-lock-string-face) |
| @@ -470,7 +475,6 @@ This is buffer-local in every such buffer.") | |||
| 470 | (define-key map "\C-\M-x" 'sh-execute-region) | 475 | (define-key map "\C-\M-x" 'sh-execute-region) |
| 471 | (define-key map "\C-c\C-x" 'executable-interpret) | 476 | (define-key map "\C-c\C-x" 'executable-interpret) |
| 472 | 477 | ||
| 473 | (define-key map [remap complete-tag] 'comint-dynamic-complete) | ||
| 474 | (define-key map [remap delete-backward-char] | 478 | (define-key map [remap delete-backward-char] |
| 475 | 'backward-delete-char-untabify) | 479 | 'backward-delete-char-untabify) |
| 476 | (define-key map "\C-c:" 'sh-set-shell) | 480 | (define-key map "\C-c:" 'sh-set-shell) |
| @@ -553,9 +557,9 @@ This is buffer-local in every such buffer.") | |||
| 553 | "Value to use for `skeleton-pair-default-alist' in Shell-Script mode.") | 557 | "Value to use for `skeleton-pair-default-alist' in Shell-Script mode.") |
| 554 | 558 | ||
| 555 | (defcustom sh-dynamic-complete-functions | 559 | (defcustom sh-dynamic-complete-functions |
| 556 | '(shell-dynamic-complete-environment-variable | 560 | '(shell-environment-variable-completion |
| 557 | shell-dynamic-complete-command | 561 | shell-command-completion |
| 558 | comint-dynamic-complete-filename) | 562 | comint-filename-completion) |
| 559 | "Functions for doing TAB dynamic completion." | 563 | "Functions for doing TAB dynamic completion." |
| 560 | :type '(repeat function) | 564 | :type '(repeat function) |
| 561 | :group 'sh-script) | 565 | :group 'sh-script) |
| @@ -1187,7 +1191,7 @@ This value is used for the `+' and `-' symbols in an indentation variable." | |||
| 1187 | :group 'sh-indentation) | 1191 | :group 'sh-indentation) |
| 1188 | (put 'sh-basic-offset 'safe-local-variable 'integerp) | 1192 | (put 'sh-basic-offset 'safe-local-variable 'integerp) |
| 1189 | 1193 | ||
| 1190 | (defcustom sh-indent-comment nil | 1194 | (defcustom sh-indent-comment t |
| 1191 | "How a comment line is to be indented. | 1195 | "How a comment line is to be indented. |
| 1192 | nil means leave it as it is; | 1196 | nil means leave it as it is; |
| 1193 | t means indent it as a normal line, aligning it to previous non-blank | 1197 | t means indent it as a normal line, aligning it to previous non-blank |
| @@ -1198,6 +1202,7 @@ a number means align to that column, e.g. 0 means first column." | |||
| 1198 | (const :tag "Indent as a normal line." t) | 1202 | (const :tag "Indent as a normal line." t) |
| 1199 | (integer :menu-tag "Indent to this col (0 means first col)." | 1203 | (integer :menu-tag "Indent to this col (0 means first col)." |
| 1200 | :tag "Indent to column number.") ) | 1204 | :tag "Indent to column number.") ) |
| 1205 | :version "24.3" | ||
| 1201 | :group 'sh-indentation) | 1206 | :group 'sh-indentation) |
| 1202 | 1207 | ||
| 1203 | 1208 | ||
| @@ -1485,6 +1490,7 @@ with your script for an edit-interpret-debug cycle." | |||
| 1485 | (set (make-local-variable 'local-abbrev-table) sh-mode-abbrev-table) | 1490 | (set (make-local-variable 'local-abbrev-table) sh-mode-abbrev-table) |
| 1486 | (set (make-local-variable 'comint-dynamic-complete-functions) | 1491 | (set (make-local-variable 'comint-dynamic-complete-functions) |
| 1487 | sh-dynamic-complete-functions) | 1492 | sh-dynamic-complete-functions) |
| 1493 | (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t) | ||
| 1488 | ;; we can't look if previous line ended with `\' | 1494 | ;; we can't look if previous line ended with `\' |
| 1489 | (set (make-local-variable 'comint-prompt-regexp) "^[ \t]*") | 1495 | (set (make-local-variable 'comint-prompt-regexp) "^[ \t]*") |
| 1490 | (set (make-local-variable 'imenu-case-fold-search) nil) | 1496 | (set (make-local-variable 'imenu-case-fold-search) nil) |
| @@ -4109,20 +4115,6 @@ The document is bounded by `sh-here-document-word'." | |||
| 4109 | 4115 | ||
| 4110 | ;; various other commands | 4116 | ;; various other commands |
| 4111 | 4117 | ||
| 4112 | (autoload 'comint-dynamic-complete "comint" | ||
| 4113 | "Dynamically perform completion at point." t) | ||
| 4114 | |||
| 4115 | (autoload 'shell-dynamic-complete-command "shell" | ||
| 4116 | "Dynamically complete the command at point." t) | ||
| 4117 | |||
| 4118 | (autoload 'comint-dynamic-complete-filename "comint" | ||
| 4119 | "Dynamically complete the filename at point." t) | ||
| 4120 | |||
| 4121 | (autoload 'shell-dynamic-complete-environment-variable "shell" | ||
| 4122 | "Dynamically complete the environment variable at point." t) | ||
| 4123 | |||
| 4124 | |||
| 4125 | |||
| 4126 | (defun sh-beginning-of-command () | 4118 | (defun sh-beginning-of-command () |
| 4127 | ;; FIXME: Redefine using SMIE. | 4119 | ;; FIXME: Redefine using SMIE. |
| 4128 | "Move point to successive beginnings of commands." | 4120 | "Move point to successive beginnings of commands." |
diff --git a/lisp/simple.el b/lisp/simple.el index 1080757f7d2..7673e4c5d6e 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -6961,6 +6961,32 @@ See also `normal-erase-is-backspace'." | |||
| 6961 | (defvar vis-mode-saved-buffer-invisibility-spec nil | 6961 | (defvar vis-mode-saved-buffer-invisibility-spec nil |
| 6962 | "Saved value of `buffer-invisibility-spec' when Visible mode is on.") | 6962 | "Saved value of `buffer-invisibility-spec' when Visible mode is on.") |
| 6963 | 6963 | ||
| 6964 | (define-minor-mode read-only-mode | ||
| 6965 | "Change whether the current buffer is read-only. | ||
| 6966 | With prefix argument ARG, make the buffer read-only if ARG is | ||
| 6967 | positive, otherwise make it writable. If buffer is read-only | ||
| 6968 | and `view-read-only' is non-nil, enter view mode. | ||
| 6969 | |||
| 6970 | Do not call this from a Lisp program unless you really intend to | ||
| 6971 | do the same thing as the \\[toggle-read-only] command, including | ||
| 6972 | possibly enabling or disabling View mode. Also, note that this | ||
| 6973 | command works by setting the variable `buffer-read-only', which | ||
| 6974 | does not affect read-only regions caused by text properties. To | ||
| 6975 | ignore read-only status in a Lisp program (whether due to text | ||
| 6976 | properties or buffer state), bind `inhibit-read-only' temporarily | ||
| 6977 | to a non-nil value." | ||
| 6978 | :variable buffer-read-only | ||
| 6979 | (cond | ||
| 6980 | ((and (not buffer-read-only) view-mode) | ||
| 6981 | (View-exit-and-edit) | ||
| 6982 | (make-local-variable 'view-read-only) | ||
| 6983 | (setq view-read-only t)) ; Must leave view mode. | ||
| 6984 | ((and buffer-read-only view-read-only | ||
| 6985 | ;; If view-mode is already active, `view-mode-enter' is a nop. | ||
| 6986 | (not view-mode) | ||
| 6987 | (not (eq (get major-mode 'mode-class) 'special))) | ||
| 6988 | (view-mode-enter)))) | ||
| 6989 | |||
| 6964 | (define-minor-mode visible-mode | 6990 | (define-minor-mode visible-mode |
| 6965 | "Toggle making all invisible text temporarily visible (Visible mode). | 6991 | "Toggle making all invisible text temporarily visible (Visible mode). |
| 6966 | With a prefix argument ARG, enable Visible mode if ARG is | 6992 | With a prefix argument ARG, enable Visible mode if ARG is |
diff --git a/lisp/skeleton.el b/lisp/skeleton.el index 34d69a74369..b6e1d0a58f2 100644 --- a/lisp/skeleton.el +++ b/lisp/skeleton.el | |||
| @@ -77,7 +77,7 @@ The variables `v1' and `v2' are still set when calling this.") | |||
| 77 | "Function for transforming a skeleton proxy's aliases' variable value.") | 77 | "Function for transforming a skeleton proxy's aliases' variable value.") |
| 78 | (defvaralias 'skeleton-filter 'skeleton-filter-function) | 78 | (defvaralias 'skeleton-filter 'skeleton-filter-function) |
| 79 | 79 | ||
| 80 | (defvar skeleton-untabify t | 80 | (defvar skeleton-untabify nil ; bug#12223 |
| 81 | "When non-nil untabifies when deleting backwards with element -ARG.") | 81 | "When non-nil untabifies when deleting backwards with element -ARG.") |
| 82 | 82 | ||
| 83 | (defvar skeleton-newline-indent-rigidly nil | 83 | (defvar skeleton-newline-indent-rigidly nil |
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el index c1c4b750267..ae1a3cf92f8 100644 --- a/lisp/vc/vc-cvs.el +++ b/lisp/vc/vc-cvs.el | |||
| @@ -394,7 +394,7 @@ REV is the revision to check out." | |||
| 394 | (if vc-cvs-use-edit | 394 | (if vc-cvs-use-edit |
| 395 | (vc-cvs-command nil 0 file "edit") | 395 | (vc-cvs-command nil 0 file "edit") |
| 396 | (set-file-modes file (logior (file-modes file) 128)) | 396 | (set-file-modes file (logior (file-modes file) 128)) |
| 397 | (if (equal file buffer-file-name) (toggle-read-only -1)))) | 397 | (if (equal file buffer-file-name) (read-only-mode -1)))) |
| 398 | ;; Check out a particular revision (or recreate the file). | 398 | ;; Check out a particular revision (or recreate the file). |
| 399 | (vc-file-setprop file 'vc-working-revision nil) | 399 | (vc-file-setprop file 'vc-working-revision nil) |
| 400 | (apply 'vc-cvs-command nil 0 file | 400 | (apply 'vc-cvs-command nil 0 file |
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index ddb9565544d..1ef4faaa008 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el | |||
| @@ -1133,7 +1133,7 @@ For old-style locking-based version control systems, like RCS: | |||
| 1133 | (let ((visited (get-file-buffer file))) | 1133 | (let ((visited (get-file-buffer file))) |
| 1134 | (when visited | 1134 | (when visited |
| 1135 | (with-current-buffer visited | 1135 | (with-current-buffer visited |
| 1136 | (toggle-read-only -1)))))) | 1136 | (read-only-mode -1)))))) |
| 1137 | ;; Allow user to revert files with no changes | 1137 | ;; Allow user to revert files with no changes |
| 1138 | (save-excursion | 1138 | (save-excursion |
| 1139 | (dolist (file files) | 1139 | (dolist (file files) |
| @@ -1344,7 +1344,7 @@ After check-out, runs the normal hook `vc-checkout-hook'." | |||
| 1344 | ;; Maybe the backend is not installed ;-( | 1344 | ;; Maybe the backend is not installed ;-( |
| 1345 | (when writable | 1345 | (when writable |
| 1346 | (let ((buf (get-file-buffer file))) | 1346 | (let ((buf (get-file-buffer file))) |
| 1347 | (when buf (with-current-buffer buf (toggle-read-only -1))))) | 1347 | (when buf (with-current-buffer buf (read-only-mode -1))))) |
| 1348 | (signal (car err) (cdr err)))) | 1348 | (signal (car err) (cdr err)))) |
| 1349 | `((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit) | 1349 | `((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit) |
| 1350 | (not writable)) | 1350 | (not writable)) |
diff --git a/lisp/window.el b/lisp/window.el index 3599ff5527f..8f410ea3d4d 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -4710,7 +4710,11 @@ that frame." | |||
| 4710 | :type 'boolean | 4710 | :type 'boolean |
| 4711 | :version "21.1" | 4711 | :version "21.1" |
| 4712 | :group 'windows) | 4712 | :group 'windows) |
| 4713 | (make-obsolete-variable 'display-buffer-reuse-frames 'display-buffer-alist "24.3") | 4713 | |
| 4714 | (make-obsolete-variable | ||
| 4715 | 'display-buffer-reuse-frames | ||
| 4716 | "use a `reusable-frames' alist entry in `display-buffer-alist'." | ||
| 4717 | "24.3") | ||
| 4714 | 4718 | ||
| 4715 | (defcustom pop-up-windows t | 4719 | (defcustom pop-up-windows t |
| 4716 | "Non-nil means `display-buffer' should make a new window." | 4720 | "Non-nil means `display-buffer' should make a new window." |