summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1993-07-19 05:44:27 +0000
committerRoland McGrath <roland@gnu.org>1993-07-19 05:44:27 +0000
commite936d399818d207a9c9308179d9bc6a30c4648e8 (patch)
tree869c0ca5fde75c829a787ef615db1438cc81b98a /lisp
parentb0c901a35ed249ba991a1cfcb6691c11d2ad1ffb (diff)
downloademacs-e936d399818d207a9c9308179d9bc6a30c4648e8.tar.gz
(mouse-menu-bar-buffers): Add Frames pane if there are multiple panes.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/menu-bar.el132
1 files changed, 76 insertions, 56 deletions
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index fdcecf3966c..6415eac958d 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -173,68 +173,88 @@ and selects that window."
(if (> (length buffers) buffers-menu-max-size)
(setcdr (nthcdr buffers-menu-max-size buffers) nil)))
(setq menu
- (list "Buffer Menu"
- (cons "Select Buffer"
- (let ((tail buffers)
- (maxbuf 0)
- (maxlen 0)
- head)
- (while tail
- (or (eq ?\ (aref (buffer-name (car tail)) 0))
- (setq maxbuf
- (max maxbuf
- (length (buffer-name (car tail))))))
- (setq tail (cdr tail)))
- (setq tail buffers)
- (while tail
- (let ((elt (car tail)))
- (if (not (string-match "^ "
- (buffer-name elt)))
- (setq head (cons
- (cons
- (format
- (format "%%%ds %%s%%s %%s"
- maxbuf)
- (buffer-name elt)
- (if (buffer-modified-p elt) "*" " ")
- (save-excursion
- (set-buffer elt)
- (if buffer-read-only "%" " "))
- (or (buffer-file-name elt) ""))
- elt)
- head)))
- (and head (> (length (car (car head))) maxlen)
- (setq maxlen (length (car (car head))))))
- (setq tail (cdr tail)))
- (nconc (reverse head)
- (list (cons (concat (make-string (max 0 (- (/ maxlen 2) 8)) ?\ )
- "List All Buffers")
- 'list-buffers)))))))
+ (cons "Select Buffer"
+ (let ((tail buffers)
+ (maxbuf 0)
+ (maxlen 0)
+ head)
+ (while tail
+ (or (eq ?\ (aref (buffer-name (car tail)) 0))
+ (setq maxbuf
+ (max maxbuf
+ (length (buffer-name (car tail))))))
+ (setq tail (cdr tail)))
+ (setq tail buffers)
+ (while tail
+ (let ((elt (car tail)))
+ (if (not (string-match "^ "
+ (buffer-name elt)))
+ (setq head (cons
+ (cons
+ (format
+ (format "%%%ds %%s%%s %%s"
+ maxbuf)
+ (buffer-name elt)
+ (if (buffer-modified-p elt)
+ "*" " ")
+ (save-excursion
+ (set-buffer elt)
+ (if buffer-read-only "%" " "))
+ (or (buffer-file-name elt) ""))
+ elt)
+ head)))
+ (and head (> (length (car (car head))) maxlen)
+ (setq maxlen (length (car (car head))))))
+ (setq tail (cdr tail)))
+ (nconc (nreverse head)
+ (list (cons
+ (concat (make-string (max (- (/ maxlen
+ 2)
+ 8)
+ 0) ?\ )
+ "List All Buffers")
+ 'list-buffers))))))
+ (setq menu (list menu))
+ (if (cdr (frame-list))
+ (setq menu
+ (cons (cons "Select Frame"
+ (mapcar (lambda (frame)
+ (cons (cdr (assq 'name
+ (frame-parameters frame)))
+ frame))
+ (frame-list)))
+ menu)))
+ (setq menu (cons "Buffer and Frame Menu" menu))
(let ((buf (x-popup-menu (if (listp event) event
(cons '(0 0) (selected-frame)))
menu))
(window (and (listp event) (posn-window (event-start event)))))
- (if (eq buf 'list-buffers)
- (list-buffers)
- (if buf
- (if complex-buffers-menu-p
- (let ((action (x-popup-menu (if (listp event) event
- (cons '(0 0) (selected-frame)))
- '("Buffer Action"
- (""
- ("Save Buffer" . save-buffer)
- ("Kill Buffer" . kill-buffer)
- ("Select Buffer" . switch-to-buffer))))))
- (if (eq action 'save-buffer)
- (save-excursion
- (set-buffer buf)
- (save-buffer))
- (funcall action buf)))
- (and (windowp window)
- (select-window window))
- (switch-to-buffer buf)))))))
+ (cond ((framep buf)
+ (make-frame-visible buf)
+ (raise-frame buf)
+ (select-frame buf))
+ ((eq buf 'list-buffers)
+ (list-buffers))
+ (buf
+ (if complex-buffers-menu-p
+ (let ((action (x-popup-menu
+ (if (listp event) event
+ (cons '(0 0) (selected-frame)))
+ '("Buffer Action"
+ (""
+ ("Save Buffer" . save-buffer)
+ ("Kill Buffer" . kill-buffer)
+ ("Select Buffer" . switch-to-buffer))))))
+ (if (eq action 'save-buffer)
+ (save-excursion
+ (set-buffer buf)
+ (save-buffer))
+ (funcall action buf)))
+ (and (windowp window)
+ (select-window window))
+ (switch-to-buffer buf)))))))
;; this version is too slow
;;;(defun format-buffers-menu-line (buffer)