diff options
| author | Stefan Monnier | 2008-06-11 01:47:48 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-06-11 01:47:48 +0000 |
| commit | 9b106871a4ace6f2b5a441db801db3727ea4377a (patch) | |
| tree | 0cd3646523136583c0895fecfa217cd0c61f5f5d | |
| parent | 2f4c3d6df6d79fd49cb49cf3aa7f4610b78b21b4 (diff) | |
| download | emacs-9b106871a4ace6f2b5a441db801db3727ea4377a.tar.gz emacs-9b106871a4ace6f2b5a441db801db3727ea4377a.zip | |
* emacs-lisp/map-ynp.el (map-y-or-n-p): Add support for other-window-scroll.
* files.el (save-some-buffers-action-alist): Only use recursive-edit
if the user enabled recursive-minibuffers.
| -rw-r--r-- | lisp/ChangeLog | 15 | ||||
| -rw-r--r-- | lisp/emacs-lisp/map-ynp.el | 56 | ||||
| -rw-r--r-- | lisp/files.el | 84 |
3 files changed, 88 insertions, 67 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c1a72c69428..3810d954628 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,10 +1,17 @@ | |||
| 1 | 2008-06-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * files.el (save-some-buffers-action-alist): Only use recursive-edit | ||
| 4 | if the user enabled recursive-minibuffers. | ||
| 5 | |||
| 6 | * emacs-lisp/map-ynp.el (map-y-or-n-p): Add support for other-window-scroll. | ||
| 7 | |||
| 1 | 2008-06-11 Jason Rumney <jasonr@gnu.org> | 8 | 2008-06-11 Jason Rumney <jasonr@gnu.org> |
| 2 | 9 | ||
| 3 | * term/w32-win.el (w32-menu-bar-open): Rename from menu-bar-open. | 10 | * term/w32-win.el (w32-menu-bar-open): Rename from menu-bar-open. |
| 4 | Use tmm-menubar if menu is disabled in this frame. | 11 | Use tmm-menubar if menu is disabled in this frame. |
| 5 | 12 | ||
| 6 | * menu-bar.el (menu-bar-open): Determine how to open menu bar | 13 | * menu-bar.el (menu-bar-open): Determine how to open menu bar |
| 7 | from frame type, per documentation. Add w32 case. | 14 | from frame type, per documentation. Add w32 case. |
| 8 | 15 | ||
| 9 | 2008-06-10 Stefan Monnier <monnier@iro.umontreal.ca> | 16 | 2008-06-10 Stefan Monnier <monnier@iro.umontreal.ca> |
| 10 | 17 | ||
diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el index 3c28113414e..634538f33a9 100644 --- a/lisp/emacs-lisp/map-ynp.el +++ b/lisp/emacs-lisp/map-ynp.el | |||
| @@ -81,20 +81,14 @@ Returns the number of actions taken." | |||
| 81 | ;; Non-nil means we should use mouse menus to ask. | 81 | ;; Non-nil means we should use mouse menus to ask. |
| 82 | use-menus | 82 | use-menus |
| 83 | delayed-switch-frame | 83 | delayed-switch-frame |
| 84 | (next (if (or (and list (symbolp list)) | 84 | ;; Rebind other-window-scroll-buffer so that subfunctions can set |
| 85 | (subrp list) | 85 | ;; it temporarily, without risking affecting the caller. |
| 86 | (byte-code-function-p list) | 86 | (other-window-scroll-buffer other-window-scroll-buffer) |
| 87 | (and (consp list) | 87 | (next (if (functionp list) |
| 88 | (eq (car list) 'lambda))) | 88 | (lambda () (setq elt (funcall list))) |
| 89 | (function (lambda () | 89 | (lambda () (when list |
| 90 | (setq elt (funcall list)))) | 90 | (setq elt (pop list)) |
| 91 | (function (lambda () | 91 | t))))) |
| 92 | (if list | ||
| 93 | (progn | ||
| 94 | (setq elt (car list) | ||
| 95 | list (cdr list)) | ||
| 96 | t) | ||
| 97 | nil)))))) | ||
| 98 | (if (and (listp last-nonmenu-event) | 92 | (if (and (listp last-nonmenu-event) |
| 99 | use-dialog-box) | 93 | use-dialog-box) |
| 100 | ;; Make a list describing a dialog box. | 94 | ;; Make a list describing a dialog box. |
| @@ -125,11 +119,22 @@ Returns the number of actions taken." | |||
| 125 | "") | 119 | "") |
| 126 | ;; Make a map that defines each user key as a vector containing | 120 | ;; Make a map that defines each user key as a vector containing |
| 127 | ;; its definition. | 121 | ;; its definition. |
| 128 | map (cons 'keymap | 122 | map |
| 129 | (append (mapcar (lambda (elt) | 123 | (let ((map (make-sparse-keymap))) |
| 130 | (cons (car elt) (vector (nth 1 elt)))) | 124 | (set-keymap-parent map query-replace-map) |
| 131 | action-alist) | 125 | (define-key map [?\C-\M-v] 'scroll-other-window) |
| 132 | query-replace-map)))) | 126 | (define-key map [M-next] 'scroll-other-window) |
| 127 | (define-key map [?\C-\M-\S-v] 'scroll-other-window-down) | ||
| 128 | (define-key map [M-prior] 'scroll-other-window-down) | ||
| 129 | ;; The above are rather inconvenient, so maybe we should | ||
| 130 | ;; provide the non-other keys for the other-scroll as well. | ||
| 131 | ;; (define-key map [?\C-v] 'scroll-other-window) | ||
| 132 | ;; (define-key map [next] 'scroll-other-window) | ||
| 133 | ;; (define-key map [?\M-v] 'scroll-other-window-down) | ||
| 134 | ;; (define-key map [prior] 'scroll-other-window-down) | ||
| 135 | (dolist (elt action-alist) | ||
| 136 | (define-key map (vector (car elt)) (vector (nth 1 elt)))) | ||
| 137 | map))) | ||
| 133 | (unwind-protect | 138 | (unwind-protect |
| 134 | (progn | 139 | (progn |
| 135 | (if (stringp prompter) | 140 | (if (stringp prompter) |
| @@ -165,7 +170,7 @@ Returns the number of actions taken." | |||
| 165 | (single-key-description char))) | 170 | (single-key-description char))) |
| 166 | (setq def (lookup-key map (vector char)))) | 171 | (setq def (lookup-key map (vector char)))) |
| 167 | (cond ((eq def 'exit) | 172 | (cond ((eq def 'exit) |
| 168 | (setq next (function (lambda () nil)))) | 173 | (setq next (lambda () nil))) |
| 169 | ((eq def 'act) | 174 | ((eq def 'act) |
| 170 | ;; Act on the object. | 175 | ;; Act on the object. |
| 171 | (funcall actor elt) | 176 | (funcall actor elt) |
| @@ -177,7 +182,7 @@ Returns the number of actions taken." | |||
| 177 | ;; Act on the object and then exit. | 182 | ;; Act on the object and then exit. |
| 178 | (funcall actor elt) | 183 | (funcall actor elt) |
| 179 | (setq actions (1+ actions) | 184 | (setq actions (1+ actions) |
| 180 | next (function (lambda () nil)))) | 185 | next (lambda () nil))) |
| 181 | ((eq def 'quit) | 186 | ((eq def 'quit) |
| 182 | (setq quit-flag t) | 187 | (setq quit-flag t) |
| 183 | (setq next `(lambda () | 188 | (setq next `(lambda () |
| @@ -220,13 +225,18 @@ C-g to quit (cancel the whole command); | |||
| 220 | (format "or . (period) to %s \ | 225 | (format "or . (period) to %s \ |
| 221 | the current %s and exit." | 226 | the current %s and exit." |
| 222 | action object)))) | 227 | action object)))) |
| 223 | (save-excursion | 228 | (with-current-buffer standard-output |
| 224 | (set-buffer standard-output) | ||
| 225 | (help-mode))) | 229 | (help-mode))) |
| 226 | 230 | ||
| 227 | (setq next `(lambda () | 231 | (setq next `(lambda () |
| 228 | (setq next ',next) | 232 | (setq next ',next) |
| 229 | ',elt))) | 233 | ',elt))) |
| 234 | ((and (symbolp def) (commandp def)) | ||
| 235 | (call-interactively def) | ||
| 236 | ;; Regurgitated; try again. | ||
| 237 | (setq next `(lambda () | ||
| 238 | (setq next ',next) | ||
| 239 | ',elt))) | ||
| 230 | ((vectorp def) | 240 | ((vectorp def) |
| 231 | ;; A user-defined key. | 241 | ;; A user-defined key. |
| 232 | (if (funcall (aref def 0) elt) ;Call its function. | 242 | (if (funcall (aref def 0) elt) ;Call its function. |
diff --git a/lisp/files.el b/lisp/files.el index 0dc8ba20b2d..b38871096cc 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -4163,22 +4163,28 @@ This requires the external program `diff' to be in your `exec-path'." | |||
| 4163 | nil) | 4163 | nil) |
| 4164 | 4164 | ||
| 4165 | (defvar save-some-buffers-action-alist | 4165 | (defvar save-some-buffers-action-alist |
| 4166 | '((?\C-r | 4166 | `((?\C-r |
| 4167 | (lambda (buf) | 4167 | ,(lambda (buf) |
| 4168 | (view-buffer buf | 4168 | (if (not enable-recursive-minibuffers) |
| 4169 | (lambda (ignore) | 4169 | (progn (display-buffer buf) |
| 4170 | (exit-recursive-edit))) | 4170 | (setq other-window-scroll-buffer buf)) |
| 4171 | (recursive-edit) | 4171 | (view-buffer buf (lambda (_) (exit-recursive-edit))) |
| 4172 | ;; Return nil to ask about BUF again. | 4172 | (recursive-edit)) |
| 4173 | nil) | 4173 | ;; Return nil to ask about BUF again. |
| 4174 | nil) | ||
| 4174 | "view this buffer") | 4175 | "view this buffer") |
| 4175 | (?d (lambda (buf) | 4176 | (?d ,(lambda (buf) |
| 4176 | (save-window-excursion | 4177 | (if (null buffer-file-name) |
| 4177 | (diff-buffer-with-file buf)) | 4178 | (message "Not applicable: no file") |
| 4178 | (view-buffer (get-buffer-create "*Diff*") | 4179 | (save-window-excursion (diff-buffer-with-file buf)) |
| 4179 | (lambda (ignore) (exit-recursive-edit))) | 4180 | (if (not enable-recursive-minibuffers) |
| 4180 | (recursive-edit) | 4181 | (progn (display-buffer (get-buffer-create "*Diff*")) |
| 4181 | nil) | 4182 | (setq other-window-scroll-buffer "*Diff*")) |
| 4183 | (view-buffer (get-buffer-create "*Diff*") | ||
| 4184 | (lambda (_) (exit-recursive-edit))) | ||
| 4185 | (recursive-edit))) | ||
| 4186 | ;; Return nil to ask about BUF again. | ||
| 4187 | nil) | ||
| 4182 | "view changes in this buffer")) | 4188 | "view changes in this buffer")) |
| 4183 | "ACTION-ALIST argument used in call to `map-y-or-n-p'.") | 4189 | "ACTION-ALIST argument used in call to `map-y-or-n-p'.") |
| 4184 | 4190 | ||
| @@ -4216,31 +4222,29 @@ change the additional actions you can take on files." | |||
| 4216 | ;; and record the number thus saved. | 4222 | ;; and record the number thus saved. |
| 4217 | (setq files-done | 4223 | (setq files-done |
| 4218 | (map-y-or-n-p | 4224 | (map-y-or-n-p |
| 4219 | (function | 4225 | (lambda (buffer) |
| 4220 | (lambda (buffer) | 4226 | (and (buffer-modified-p buffer) |
| 4221 | (and (buffer-modified-p buffer) | 4227 | (not (buffer-base-buffer buffer)) |
| 4222 | (not (buffer-base-buffer buffer)) | 4228 | (or |
| 4223 | (or | 4229 | (buffer-file-name buffer) |
| 4224 | (buffer-file-name buffer) | 4230 | (and pred |
| 4225 | (and pred | 4231 | (progn |
| 4226 | (progn | 4232 | (set-buffer buffer) |
| 4227 | (set-buffer buffer) | 4233 | (and buffer-offer-save (> (buffer-size) 0))))) |
| 4228 | (and buffer-offer-save (> (buffer-size) 0))))) | 4234 | (or (not (functionp pred)) |
| 4229 | (or (not (functionp pred)) | 4235 | (with-current-buffer buffer (funcall pred))) |
| 4230 | (with-current-buffer buffer (funcall pred))) | 4236 | (if arg |
| 4231 | (if arg | 4237 | t |
| 4232 | t | 4238 | (setq queried t) |
| 4233 | (setq queried t) | 4239 | (if (buffer-file-name buffer) |
| 4234 | (if (buffer-file-name buffer) | 4240 | (format "Save file %s? " |
| 4235 | (format "Save file %s? " | 4241 | (buffer-file-name buffer)) |
| 4236 | (buffer-file-name buffer)) | 4242 | (format "Save buffer %s? " |
| 4237 | (format "Save buffer %s? " | 4243 | (buffer-name buffer)))))) |
| 4238 | (buffer-name buffer))))))) | 4244 | (lambda (buffer) |
| 4239 | (function | 4245 | (with-current-buffer buffer |
| 4240 | (lambda (buffer) | 4246 | (save-buffer))) |
| 4241 | (set-buffer buffer) | 4247 | (buffer-list) |
| 4242 | (save-buffer))) | ||
| 4243 | (buffer-list) | ||
| 4244 | '("buffer" "buffers" "save") | 4248 | '("buffer" "buffers" "save") |
| 4245 | save-some-buffers-action-alist)) | 4249 | save-some-buffers-action-alist)) |
| 4246 | ;; Maybe to save abbrevs, and record whether | 4250 | ;; Maybe to save abbrevs, and record whether |