# HG changeset patch # User Eli Zaretskii # Date 1126349714 0 # Node ID b50dda01c73df86c670d3880bec012bc6e831743 # Parent 4b9f048f9a7eaeaab4b10a3729fded7c742f7997 (menu-bar-menu-frame-live-and-visible-p) (menu-bar-non-minibuffer-window-p): New functions. ("Split Window", "Save As..."): Use them. ("Postscript Print Buffer (B+W)", "Postscript Print Buffer") ("Print Buffer", "Truncate Long Lines in this Buffer"): Use menu-bar-menu-frame-live-and-visible-p. ("Save Buffer", "Insert File", "Open Directory...") ("Open File...", "Visit New File..."): Use menu-bar-non-minibuffer-window-p. (kill-this-buffer-enabled-p, dired ): Use menu-bar-non-minibuffer-window-p. diff -r 4b9f048f9a7e -r b50dda01c73d lisp/menu-bar.el --- a/lisp/menu-bar.el Fri Sep 09 16:24:25 2005 +0000 +++ b/lisp/menu-bar.el Sat Sep 10 10:55:14 2005 +0000 @@ -105,12 +105,8 @@ (define-key menu-bar-file-menu [split-window] '(menu-item "Split Window" split-window-vertically - :enable (or (not (display-multi-frame-p)) - (and (frame-live-p menu-updating-frame) - (frame-visible-p menu-updating-frame ) - (not (window-minibuffer-p - (frame-selected-window - menu-updating-frame))))) + :enable (and (menu-bar-menu-frame-live-and-visible-p) + (menu-bar-non-minibuffer-window-p)) :help "Split selected window in two windows")) (define-key menu-bar-file-menu [separator-window] @@ -122,9 +118,7 @@ :help "Pretty-print marked region in black and white to PostScript printer")) (define-key menu-bar-file-menu [ps-print-buffer] '(menu-item "Postscript Print Buffer (B+W)" ps-print-buffer - :enable (or (not (display-multi-frame-p)) - (and (frame-live-p menu-updating-frame) - (frame-visible-p menu-updating-frame))) + :enable (menu-bar-menu-frame-live-and-visible-p) :help "Pretty-print current buffer in black and white to PostScript printer")) (define-key menu-bar-file-menu [ps-print-region-faces] '(menu-item "Postscript Print Region" ps-print-region-with-faces @@ -132,9 +126,7 @@ :help "Pretty-print marked region to PostScript printer")) (define-key menu-bar-file-menu [ps-print-buffer-faces] '(menu-item "Postscript Print Buffer" ps-print-buffer-with-faces - :enable (or (not (display-multi-frame-p)) - (and (frame-live-p menu-updating-frame) - (frame-visible-p menu-updating-frame))) + :enable (menu-bar-menu-frame-live-and-visible-p) :help "Pretty-print current buffer to PostScript printer")) (define-key menu-bar-file-menu [print-region] '(menu-item "Print Region" print-region @@ -142,9 +134,7 @@ :help "Print region between mark and current position")) (define-key menu-bar-file-menu [print-buffer] '(menu-item "Print Buffer" print-buffer - :enable (or (not (display-multi-frame-p)) - (and (frame-live-p menu-updating-frame) - (frame-visible-p menu-updating-frame))) + :enable (menu-bar-menu-frame-live-and-visible-p) :help "Print current buffer with page headings")) (define-key menu-bar-file-menu [separator-print] @@ -175,21 +165,14 @@ :help "Re-read current buffer from its file")) (define-key menu-bar-file-menu [write-file] '(menu-item "Save As..." write-file - :enable (or (not (display-multi-frame-p)) - (and (frame-live-p menu-updating-frame) - (frame-visible-p menu-updating-frame ) - (not (window-minibuffer-p - (frame-selected-window - menu-updating-frame))))) + :enable (and (menu-bar-menu-frame-live-and-visible-p) + (menu-bar-non-minibuffer-window-p)) :help "Write current buffer to another file")) (define-key menu-bar-file-menu [save-buffer] '(menu-item "Save" save-buffer :enable (and (buffer-modified-p) (buffer-file-name) - (or (not (display-multi-frame-p)) - (not (window-minibuffer-p - (frame-selected-window - menu-updating-frame))))) + (menu-bar-non-minibuffer-window-p)) :help "Save current buffer to its file")) (define-key menu-bar-file-menu [separator-save] @@ -201,28 +184,19 @@ :help "Discard (kill) current buffer")) (define-key menu-bar-file-menu [insert-file] '(menu-item "Insert File..." insert-file - :enable (or (not (display-multi-frame-p)) - (and (not (window-minibuffer-p - (frame-selected-window - menu-updating-frame))))) + :enable (menu-bar-non-minibuffer-window-p) :help "Insert another file into current buffer")) (define-key menu-bar-file-menu [dired] '(menu-item "Open Directory..." dired - :enable (or (not (display-multi-frame-p)) - (not (window-minibuffer-p - (frame-selected-window menu-updating-frame)))) + :enable (menu-bar-non-minibuffer-window-p) :help "Read a directory, operate on its files")) (define-key menu-bar-file-menu [open-file] '(menu-item "Open File..." find-file-existing - :enable (or (not (display-multi-frame-p)) - (not (window-minibuffer-p - (frame-selected-window menu-updating-frame)))) + :enable (menu-bar-non-minibuffer-window-p) :help "Read an existing file into an Emacs buffer")) (define-key menu-bar-file-menu [new-file] '(menu-item "Visit New File..." find-file - :enable (or (not (display-multi-frame-p)) - (not (window-minibuffer-p - (frame-selected-window menu-updating-frame)))) + :enable (menu-bar-non-minibuffer-window-p) :help "Read or create a file and edit it")) @@ -1057,9 +1031,7 @@ toggle-truncate-lines :help "Truncate long lines on the screen" :button (:toggle . truncate-lines) - :enable (or (not (display-multi-frame-p)) - (and (frame-live-p menu-updating-frame) - (frame-visible-p menu-updating-frame))))) + :enable (menu-bar-menu-frame-live-and-visible-p))) (define-key menu-bar-options-menu [highlight-separator] '("--")) @@ -1440,6 +1412,23 @@ '(menu-item "Emacs Tutorial" help-with-tutorial :help "Learn how to use Emacs")) +(defun menu-bar-menu-frame-live-and-visible-p () + "Return non-nil if the menu frame is alive and visible. +The menu frame is the frame for which we are updating the menu." + (let ((menu-frame (if (display-multi-frame-p) menu-updating-frame + (selected-frame)))) + (and (frame-live-p menu-frame) + (frame-visible-p menu-frame)))) + +(defun menu-bar-non-minibuffer-window-p () + "Return non-nil if selected window of the menu frame is not a minibuf window. + +See the documentation of `menu-bar-menu-frame-live-and-visible-p' +for the definition of the menu frame." + (let ((menu-frame (if (display-multi-frame-p) menu-updating-frame + (selected-frame)))) + (not (window-minibuffer-p (frame-selected-window menu-frame))))) + (defun kill-this-buffer () ; for the menubar "Kill the current buffer." (interactive) @@ -1452,11 +1441,10 @@ (or (string-match "^ " (buffer-name (car buffers))) (setq count (1+ count))) (setq buffers (cdr buffers))) - (and (not (window-minibuffer-p (frame-selected-window menu-updating-frame))) + (and (menu-bar-non-minibuffer-window-p) (> count 1)))) -(put 'dired 'menu-enable - '(not (window-minibuffer-p (frame-selected-window menu-updating-frame)))) +(put 'dired 'menu-enable '(menu-bar-non-minibuffer-window-p)) ;; Permit deleting frame if it would leave a visible or iconified frame. (defun delete-frame-enabled-p ()