;;; menu-bar.el --- define a default menu bar
;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
-;; 2005 Free Software Foundation, Inc.
+;; 2005, 2006 Free Software Foundation, Inc.
;; Author: RMS
;; Maintainer: FSF
(define-key menu-bar-file-menu [separator-save]
'(menu-item "--"))
+(defun menu-find-file-existing ()
+ "Edit the existing file FILENAME."
+ (interactive)
+ (let* ((mustmatch (not (and (fboundp 'x-uses-old-gtk-dialog)
+ (x-uses-old-gtk-dialog))))
+ (filename (car (find-file-read-args "Find file: " mustmatch))))
+ (if mustmatch
+ (find-file-existing filename)
+ (find-file filename))))
+
+
(define-key menu-bar-file-menu [kill-buffer]
'(menu-item "Close" kill-this-buffer
:enable (kill-this-buffer-enabled-p)
:enable (menu-bar-non-minibuffer-window-p)
:help "Read a directory, to operate on its files"))
(define-key menu-bar-file-menu [open-file]
- '(menu-item "Open File..." find-file-existing
+ '(menu-item "Open File..." menu-find-file-existing
:enable (menu-bar-non-minibuffer-window-p)
:help "Read an existing file into an Emacs buffer"))
(define-key menu-bar-file-menu [new-file]
:enable (and (not buffer-read-only)
(not (eq t buffer-undo-list))
(if (eq last-command 'undo)
- pending-undo-list
+ (listp pending-undo-list)
(consp buffer-undo-list)))
:help "Undo last operation"))
:visible (display-graphic-p)
:button (:radio . (eq fringe-mode nil))))
-(defun menu-bar-showhide-fringe-menu-customize-left ()
- "Display fringes only on the left of each window."
- (interactive)
- (require 'fringe)
- (customize-set-variable 'fringe-mode '(nil . 0)))
-
-(define-key menu-bar-showhide-fringe-menu [left]
- '(menu-item "On the Left" menu-bar-showhide-fringe-menu-customize-left
- :help "Fringe only on the left side"
- :visible (display-graphic-p)
- :button (:radio . (equal fringe-mode '(nil . 0)))))
-
(defun menu-bar-showhide-fringe-menu-customize-right ()
"Display fringes only on the right of each window."
(interactive)
:visible (display-graphic-p)
:button (:radio . (equal fringe-mode '(0 . nil)))))
+(defun menu-bar-showhide-fringe-menu-customize-left ()
+ "Display fringes only on the left of each window."
+ (interactive)
+ (require 'fringe)
+ (customize-set-variable 'fringe-mode '(nil . 0)))
+
+(define-key menu-bar-showhide-fringe-menu [left]
+ '(menu-item "On the Left" menu-bar-showhide-fringe-menu-customize-left
+ :help "Fringe only on the left side"
+ :visible (display-graphic-p)
+ :button (:radio . (equal fringe-mode '(nil . 0)))))
+
(defun menu-bar-showhide-fringe-menu-customize-disable ()
"Do not display window fringes."
(interactive)
(define-key menu-bar-describe-menu [list-keybindings]
'(menu-item "List Key Bindings" describe-bindings
- :help "Display a list of all current keybindings"))
+ :help "Display all current keybindings (keyboard shortcuts)"))
(define-key menu-bar-describe-menu [describe-current-display-table]
'(menu-item "Describe Display Table" describe-current-display-table
:help "Describe the current display table"))
'(menu-item "Getting New Versions" describe-distribution
:help "How to get latest versions of Emacs"))
(define-key menu-bar-help-menu [more]
- '(menu-item "Find Extra Packages"
- menu-bar-help-extra-packages
- :help "Where to find some extra packages and possible updates"))
+ '(menu-item "External Packages" menu-bar-help-extra-packages
+ :help "Lisp packages distributed separately for use in Emacs"))
(defun menu-bar-help-extra-packages ()
"Display help about some additional packages available for Emacs."
(interactive)
(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))))
+ (let ((menu-frame (or menu-updating-frame (selected-frame))))
(and (frame-live-p menu-frame)
(frame-visible-p menu-frame))))
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))))
+ (let ((menu-frame (or menu-updating-frame (selected-frame))))
(not (window-minibuffer-p (frame-selected-window menu-frame)))))
-(defun kill-this-buffer () ; for the menubar
+(defun kill-this-buffer () ; for the menu bar
"Kill the current buffer."
(interactive)
(kill-buffer (current-buffer)))
(put 'menu-bar-select-yank 'apropos-inhibit t)
(defun menu-bar-select-yank ()
+ "Insert the stretch of previously-killed text selected from menu.
+The menu shows all the killed text sequences stored in `kill-ring'."
(interactive "*")
(push-mark (point))
(insert last-command-event))
"Next Buffer"
'next-buffer
:help "Switch to the \"next\" buffer in a cyclic order")
- (list 'prev-buffer
+ (list 'previous-buffer
'menu-item
"Previous Buffer"
- 'prev-buffer
+ 'previous-buffer
:help "Switch to the \"previous\" buffer in a cyclic order")
(list 'select-named-buffer
'menu-item