diff options
| author | Stefan Monnier | 2007-10-22 04:26:47 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2007-10-22 04:26:47 +0000 |
| commit | 7ccc8f7050dc4e56eca827bc79b263b01090edf2 (patch) | |
| tree | 37381e69b6b7d655af4e0bf9df559d7be26b9f6c | |
| parent | bf90285595edf103510242be5f8c50e8cb976d96 (diff) | |
| download | emacs-7ccc8f7050dc4e56eca827bc79b263b01090edf2.tar.gz emacs-7ccc8f7050dc4e56eca827bc79b263b01090edf2.zip | |
(msb-menu-bar-update-buffers): Use global-buffers-menu-map.
(msb-sort-by-directory, msb--choose-menu, msb--mode-menu-cond)
(msb--most-recently-used-menu, msb--create-buffer-menu-2):
Use with-current-buffer.
| -rw-r--r-- | lisp/ChangeLog | 4 | ||||
| -rw-r--r-- | lisp/msb.el | 73 |
2 files changed, 37 insertions, 40 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9aaf99278ba..b401e6a8c9a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -2,6 +2,10 @@ | |||
| 2 | 2 | ||
| 3 | * menu-bar.el (global-buffers-menu-map): New var. | 3 | * menu-bar.el (global-buffers-menu-map): New var. |
| 4 | (global-map, menu-bar-update-buffers): Use it. | 4 | (global-map, menu-bar-update-buffers): Use it. |
| 5 | * msb.el (msb-menu-bar-update-buffers): Use it. | ||
| 6 | (msb-sort-by-directory, msb--choose-menu, msb--mode-menu-cond) | ||
| 7 | (msb--most-recently-used-menu, msb--create-buffer-menu-2): | ||
| 8 | Use with-current-buffer. | ||
| 5 | 9 | ||
| 6 | 2007-10-21 Dan Nicolaescu <dann@ics.uci.edu> | 10 | 2007-10-21 Dan Nicolaescu <dann@ics.uci.edu> |
| 7 | 11 | ||
diff --git a/lisp/msb.el b/lisp/msb.el index 8dfe31c99d2..11c9cfc4d37 100644 --- a/lisp/msb.el +++ b/lisp/msb.el | |||
| @@ -454,10 +454,10 @@ An item looks like (NAME . BUFFER)." | |||
| 454 | (defun msb-sort-by-directory (item1 item2) | 454 | (defun msb-sort-by-directory (item1 item2) |
| 455 | "Sort the items ITEM1 and ITEM2 by directory name. Made for dired. | 455 | "Sort the items ITEM1 and ITEM2 by directory name. Made for dired. |
| 456 | An item look like (NAME . BUFFER)." | 456 | An item look like (NAME . BUFFER)." |
| 457 | (string-lessp (save-excursion (set-buffer (cdr item1)) | 457 | (string-lessp (with-current-buffer (cdr item1) |
| 458 | (msb--dired-directory)) | 458 | (msb--dired-directory)) |
| 459 | (save-excursion (set-buffer (cdr item2)) | 459 | (with-current-buffer (cdr item2) |
| 460 | (msb--dired-directory)))) | 460 | (msb--dired-directory)))) |
| 461 | 461 | ||
| 462 | ;;; | 462 | ;;; |
| 463 | ;;; msb | 463 | ;;; msb |
| @@ -581,8 +581,7 @@ If the argument is left out or nil, then the current buffer is considered." | |||
| 581 | (while rest | 581 | (while rest |
| 582 | (let ((found-p nil) | 582 | (let ((found-p nil) |
| 583 | (tmp-rest rest) | 583 | (tmp-rest rest) |
| 584 | result | 584 | item) |
| 585 | new-dir item) | ||
| 586 | (setq item (car tmp-rest)) | 585 | (setq item (car tmp-rest)) |
| 587 | ;; Clump together the "rest"-buffers that have a dir that is | 586 | ;; Clump together the "rest"-buffers that have a dir that is |
| 588 | ;; a subdir of the current one. | 587 | ;; a subdir of the current one. |
| @@ -745,8 +744,7 @@ to the buffer-list variable in function-info." | |||
| 745 | (unless (and (not msb-display-invisible-buffers-p) | 744 | (unless (and (not msb-display-invisible-buffers-p) |
| 746 | (msb-invisible-buffer-p buffer)) | 745 | (msb-invisible-buffer-p buffer)) |
| 747 | (condition-case nil | 746 | (condition-case nil |
| 748 | (save-excursion | 747 | (with-current-buffer buffer |
| 749 | (set-buffer buffer) | ||
| 750 | ;; Menu found. Add to this menu | 748 | ;; Menu found. Add to this menu |
| 751 | (dolist (info (msb--collect function-info-vector)) | 749 | (dolist (info (msb--collect function-info-vector)) |
| 752 | (msb--add-to-menu buffer info max-buffer-name-length))) | 750 | (msb--add-to-menu buffer info max-buffer-name-length))) |
| @@ -791,8 +789,7 @@ Example: | |||
| 791 | results in | 789 | results in |
| 792 | \((a a1 a2 a4 a3) (b b1 b3 b2) (c c3))" | 790 | \((a a1 a2 a4 a3) (b b1 b3 b2) (c c3))" |
| 793 | (when (not (null alist)) | 791 | (when (not (null alist)) |
| 794 | (let (result | 792 | (let (same |
| 795 | same | ||
| 796 | tmp-old-car | 793 | tmp-old-car |
| 797 | tmp-same | 794 | tmp-same |
| 798 | (first-time-p t) | 795 | (first-time-p t) |
| @@ -817,7 +814,8 @@ results in | |||
| 817 | old-car (car item)) | 814 | old-car (car item)) |
| 818 | (list (cons tmp-old-car (nreverse tmp-same)))))) | 815 | (list (cons tmp-old-car (nreverse tmp-same)))))) |
| 819 | (sort alist (lambda (item1 item2) | 816 | (sort alist (lambda (item1 item2) |
| 820 | (funcall sort-predicate (car item1) (car item2)))))) | 817 | (funcall sort-predicate |
| 818 | (car item1) (car item2)))))) | ||
| 821 | (list (cons old-car (nreverse same))))))) | 819 | (list (cons old-car (nreverse same))))))) |
| 822 | 820 | ||
| 823 | 821 | ||
| @@ -831,8 +829,7 @@ results in | |||
| 831 | (sort | 829 | (sort |
| 832 | (let ((mode-list nil)) | 830 | (let ((mode-list nil)) |
| 833 | (dolist (buffer (cdr (buffer-list))) | 831 | (dolist (buffer (cdr (buffer-list))) |
| 834 | (save-excursion | 832 | (with-current-buffer buffer |
| 835 | (set-buffer buffer) | ||
| 836 | (when (and (not (msb-invisible-buffer-p)) | 833 | (when (and (not (msb-invisible-buffer-p)) |
| 837 | (not (assq major-mode mode-list))) | 834 | (not (assq major-mode mode-list))) |
| 838 | (push (cons major-mode mode-name) | 835 | (push (cons major-mode mode-name) |
| @@ -850,12 +847,10 @@ It takes the form ((TITLE . BUFFER-LIST)...)." | |||
| 850 | (most-recently-used | 847 | (most-recently-used |
| 851 | (loop with n = 0 | 848 | (loop with n = 0 |
| 852 | for buffer in buffers | 849 | for buffer in buffers |
| 853 | if (save-excursion | 850 | if (with-current-buffer buffer |
| 854 | (set-buffer buffer) | ||
| 855 | (and (not (msb-invisible-buffer-p)) | 851 | (and (not (msb-invisible-buffer-p)) |
| 856 | (not (eq major-mode 'dired-mode)))) | 852 | (not (eq major-mode 'dired-mode)))) |
| 857 | collect (save-excursion | 853 | collect (with-current-buffer buffer |
| 858 | (set-buffer buffer) | ||
| 859 | (cons (funcall msb-item-handling-function | 854 | (cons (funcall msb-item-handling-function |
| 860 | buffer | 855 | buffer |
| 861 | max-buffer-name-length) | 856 | max-buffer-name-length) |
| @@ -908,22 +903,20 @@ It takes the form ((TITLE . BUFFER-LIST)...)." | |||
| 908 | (when file-buffers | 903 | (when file-buffers |
| 909 | (setq file-buffers | 904 | (setq file-buffers |
| 910 | (mapcar (lambda (buffer-list) | 905 | (mapcar (lambda (buffer-list) |
| 911 | (cons msb-files-by-directory-sort-key | 906 | (list* msb-files-by-directory-sort-key |
| 912 | (cons (car buffer-list) | 907 | (car buffer-list) |
| 913 | (sort | 908 | (sort |
| 914 | (mapcar (function | 909 | (mapcar (lambda (buffer) |
| 915 | (lambda (buffer) | 910 | (cons (with-current-buffer buffer |
| 916 | (cons (save-excursion | 911 | (funcall |
| 917 | (set-buffer buffer) | 912 | msb-item-handling-function |
| 918 | (funcall msb-item-handling-function | 913 | buffer |
| 919 | buffer | 914 | max-buffer-name-length)) |
| 920 | max-buffer-name-length)) | 915 | buffer)) |
| 921 | buffer))) | 916 | (cdr buffer-list)) |
| 922 | (cdr buffer-list)) | 917 | (lambda (item1 item2) |
| 923 | (function | 918 | (string< (car item1) (car item2)))))) |
| 924 | (lambda (item1 item2) | 919 | (msb--choose-file-menu file-buffers)))) |
| 925 | (string< (car item1) (car item2)))))))) | ||
| 926 | (msb--choose-file-menu file-buffers)))) | ||
| 927 | ;; Now make the menu - a list of (TITLE . BUFFER-LIST) | 920 | ;; Now make the menu - a list of (TITLE . BUFFER-LIST) |
| 928 | (let* (menu | 921 | (let* (menu |
| 929 | (most-recently-used | 922 | (most-recently-used |
| @@ -1103,7 +1096,8 @@ variable `msb-menu-cond'." | |||
| 1103 | buffers-menu frames-menu) | 1096 | buffers-menu frames-menu) |
| 1104 | ;; Make the menu of buffers proper. | 1097 | ;; Make the menu of buffers proper. |
| 1105 | (setq msb--last-buffer-menu (msb--create-buffer-menu)) | 1098 | (setq msb--last-buffer-menu (msb--create-buffer-menu)) |
| 1106 | (setq buffers-menu msb--last-buffer-menu) | 1099 | ;; Skip the `keymap' symbol. |
| 1100 | (setq buffers-menu (cdr msb--last-buffer-menu)) | ||
| 1107 | ;; Make a Frames menu if we have more than one frame. | 1101 | ;; Make a Frames menu if we have more than one frame. |
| 1108 | (when (cdr frames) | 1102 | (when (cdr frames) |
| 1109 | (let* ((frame-length (length frames)) | 1103 | (let* ((frame-length (length frames)) |
| @@ -1124,14 +1118,13 @@ variable `msb-menu-cond'." | |||
| 1124 | (cons nil nil)) | 1118 | (cons nil nil)) |
| 1125 | 'menu-bar-select-frame)) | 1119 | 'menu-bar-select-frame)) |
| 1126 | frames))))) | 1120 | frames))))) |
| 1127 | (define-key (current-global-map) [menu-bar buffer] | 1121 | (setcdr global-buffers-menu-map |
| 1128 | (cons "Buffers" | ||
| 1129 | (if (and buffers-menu frames-menu) | 1122 | (if (and buffers-menu frames-menu) |
| 1130 | ;; Combine Frame and Buffers menus with separator between | 1123 | ;; Combine Frame and Buffers menus with separator between |
| 1131 | (nconc (list 'keymap "Buffers and Frames" frames-menu | 1124 | (nconc (list "Buffers and Frames" frames-menu |
| 1132 | (and msb-separator-diff '(separator "--"))) | 1125 | (and msb-separator-diff '(separator "--"))) |
| 1133 | (cddr buffers-menu)) | 1126 | (cdr buffers-menu)) |
| 1134 | (or buffers-menu 'undefined))))))) | 1127 | buffers-menu))))) |
| 1135 | 1128 | ||
| 1136 | ;; Snarf current bindings of `mouse-buffer-menu' (normally | 1129 | ;; Snarf current bindings of `mouse-buffer-menu' (normally |
| 1137 | ;; C-down-mouse-1). | 1130 | ;; C-down-mouse-1). |
| @@ -1163,5 +1156,5 @@ different buffer menu using the function `msb'." | |||
| 1163 | (provide 'msb) | 1156 | (provide 'msb) |
| 1164 | (eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks)) | 1157 | (eval-after-load "msb" '(run-hooks 'msb-after-load-hook 'msb-after-load-hooks)) |
| 1165 | 1158 | ||
| 1166 | ;;; arch-tag: 403f9e82-b92e-4e7a-a797-5d6d9b76da36 | 1159 | ;; arch-tag: 403f9e82-b92e-4e7a-a797-5d6d9b76da36 |
| 1167 | ;;; msb.el ends here | 1160 | ;;; msb.el ends here |