aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2007-10-22 04:26:47 +0000
committerStefan Monnier2007-10-22 04:26:47 +0000
commit7ccc8f7050dc4e56eca827bc79b263b01090edf2 (patch)
tree37381e69b6b7d655af4e0bf9df559d7be26b9f6c
parentbf90285595edf103510242be5f8c50e8cb976d96 (diff)
downloademacs-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/ChangeLog4
-rw-r--r--lisp/msb.el73
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
62007-10-21 Dan Nicolaescu <dann@ics.uci.edu> 102007-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.
456An item look like (NAME . BUFFER)." 456An 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:
791results in 789results 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