;;; menu-bar.el --- define a default menu bar
-;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005,
+;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: RMS
;; Maintainer: FSF
;; help key.
(setq menu-bar-final-items '(help-menu))
-(define-key global-map [menu-bar help-menu] (cons "Help" menu-bar-help-menu))
+(define-key global-map [menu-bar help-menu] (cons (purecopy "Help") menu-bar-help-menu))
(defvar menu-bar-tools-menu (make-sparse-keymap "Tools"))
-(define-key global-map [menu-bar tools] (cons "Tools" menu-bar-tools-menu))
+(define-key global-map [menu-bar tools] (cons (purecopy "Tools") menu-bar-tools-menu))
;; This definition is just to show what this looks like.
;; It gets modified in place when menu-bar-update-buffers is called.
(defvar global-buffers-menu-map (make-sparse-keymap "Buffers"))
(define-key global-map [menu-bar buffer]
- (cons "Buffers" global-buffers-menu-map))
+ (cons (purecopy "Buffers") global-buffers-menu-map))
(defvar menu-bar-options-menu (make-sparse-keymap "Options"))
(define-key global-map [menu-bar options]
- (cons "Options" menu-bar-options-menu))
+ (cons (purecopy "Options") menu-bar-options-menu))
(defvar menu-bar-edit-menu (make-sparse-keymap "Edit"))
-(define-key global-map [menu-bar edit] (cons "Edit" menu-bar-edit-menu))
+(define-key global-map [menu-bar edit] (cons (purecopy "Edit") menu-bar-edit-menu))
(defvar menu-bar-file-menu (make-sparse-keymap "File"))
-(define-key global-map [menu-bar file] (cons "File" menu-bar-file-menu))
+(define-key global-map [menu-bar file] (cons (purecopy "File") menu-bar-file-menu))
-;; This alias is for compatibility with 19.28 and before.
-(defvar menu-bar-files-menu menu-bar-file-menu)
+;; Only declared obsolete (and only made a proper alias) in 23.3.
+(define-obsolete-variable-alias 'menu-bar-files-menu 'menu-bar-file-menu "22.1")
;; This is referenced by some code below; it is defined in uniquify.el
(defvar uniquify-buffer-name-style)
+;; From emulation/cua-base.el; used below
+(defvar cua-enable-cua-keys)
+
\f
;; The "File" menu items
(define-key menu-bar-file-menu [exit-emacs]
:help ,(purecopy "Save unsaved buffers, then exit")))
(define-key menu-bar-file-menu [separator-exit]
- (purecopy "--"))
+ menu-bar-separator)
;; Don't use delete-frame as event name because that is a special
;; event.
:help ,(purecopy "Split selected window in two windows")))
(define-key menu-bar-file-menu [separator-window]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-file-menu [ps-print-region]
`(menu-item ,(purecopy "Postscript Print Region (B+W)") ps-print-region
:help ,(purecopy "Print current buffer with page headings")))
(define-key menu-bar-file-menu [separator-print]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-file-menu [recover-session]
`(menu-item ,(purecopy "Recover Crashed Session") recover-session
:help ,(purecopy "Save current buffer to its file")))
(define-key menu-bar-file-menu [separator-save]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(defun menu-find-file-existing ()
"Edit the existing file FILENAME."
:help ,(purecopy "Search forward for a string as you type it")))
(define-key menu-bar-search-menu [i-search]
- `(menu-item ,(purecopy "Incremental Search") menu-bar-i-search-menu))
+ `(menu-item ,(purecopy "Incremental Search") ,menu-bar-i-search-menu))
(define-key menu-bar-search-menu [separator-tag-isearch]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-search-menu [tags-continue]
`(menu-item ,(purecopy "Continue Tags Search") tags-loop-continue
`(menu-item ,(purecopy "Search Tagged Files...") tags-search
:help ,(purecopy "Search for a regexp in all tagged files")))
(define-key menu-bar-search-menu [separator-tag-search]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-search-menu [repeat-search-back]
`(menu-item ,(purecopy "Repeat Backwards") nonincremental-repeat-search-backward
regexp-search-ring))
:help ,(purecopy "Repeat last search forward")))
(define-key menu-bar-search-menu [separator-repeat-search]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-search-menu [re-search-backward]
`(menu-item ,(purecopy "Regexp Backwards...") nonincremental-re-search-backward
`(menu-item ,(purecopy "Replace in Tagged Files...") tags-query-replace
:help ,(purecopy "Interactively replace a regexp in all tagged files")))
(define-key menu-bar-replace-menu [separator-replace-tags]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-replace-menu [query-replace-regexp]
`(menu-item ,(purecopy "Replace Regexp...") query-replace-regexp
,(purecopy "Fill text in region to fit between left and right margin")))
(define-key menu-bar-edit-menu [separator-bookmark]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-edit-menu [bookmark]
`(menu-item ,(purecopy "Bookmarks") menu-bar-bookmark-map))
:help ,(purecopy "Tell Tags commands which tag table file to use")))
(define-key menu-bar-goto-menu [separator-tag-file]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-goto-menu [apropos-tags]
`(menu-item ,(purecopy "Tags Apropos...") tags-apropos
:help ,(purecopy "Find definition of function or variable")))
(define-key menu-bar-goto-menu [separator-tags]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-goto-menu [end-of-buf]
`(menu-item ,(purecopy "Goto End of Buffer") end-of-buffer))
:help ,(purecopy "Read a line number and go to that line")))
(define-key menu-bar-edit-menu [goto]
- `(menu-item ,(purecopy "Go To") menu-bar-goto-menu))
+ `(menu-item ,(purecopy "Go To") ,menu-bar-goto-menu))
(define-key menu-bar-edit-menu [replace]
- `(menu-item ,(purecopy "Replace") menu-bar-replace-menu))
+ `(menu-item ,(purecopy "Replace") ,menu-bar-replace-menu))
(define-key menu-bar-edit-menu [search]
- `(menu-item ,(purecopy "Search") menu-bar-search-menu))
+ `(menu-item ,(purecopy "Search") ,menu-bar-search-menu))
(define-key menu-bar-edit-menu [separator-search]
- `(menu-item ,(purecopy "--")))
+ menu-bar-separator)
(define-key menu-bar-edit-menu [mark-whole-buffer]
`(menu-item ,(purecopy "Select All") mark-whole-buffer
(not (mouse-region-match)))
:help
,(purecopy "Delete the text in region between mark and current position")))
-(defvar yank-menu (cons "Select Yank" nil))
+(defvar yank-menu (cons (purecopy "Select Yank") nil))
(fset 'yank-menu (cons 'keymap yank-menu))
(define-key menu-bar-edit-menu [paste-from-menu]
`(menu-item ,(purecopy "Paste from Kill Menu") yank-menu
`(menu-item ,(purecopy "Copy") menu-bar-kill-ring-save
:enable mark-active
:help ,(purecopy "Copy text in region between mark and current position")
- :keys "\\[kill-ring-save]"))
+ :keys ,(purecopy "\\[kill-ring-save]")))
(define-key menu-bar-edit-menu [cut]
`(menu-item ,(purecopy "Cut") kill-region
:enable (and mark-active (not buffer-read-only))
`(menu-item ,(purecopy "Settings Matching Regexp...") customize-apropos
:help ,(purecopy "Browse customizable settings whose names match regexp")))
(define-key menu-bar-custom-menu [separator-1]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-custom-menu [customize-group]
`(menu-item ,(purecopy "Specific Group...") customize-group
:help ,(purecopy "Customize settings of specific group")))
`(menu-item ,(purecopy "Specific Option...") customize-option
:help ,(purecopy "Customize value of specific option")))
(define-key menu-bar-custom-menu [separator-2]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-custom-menu [customize-changed-options]
`(menu-item ,(purecopy "New Options...") customize-changed-options
:help ,(purecopy "Options added or changed in recent Emacs versions")))
`(menu-item ,(purecopy "Saved Options") customize-saved
:help ,(purecopy "Customize previously saved options")))
(define-key menu-bar-custom-menu [separator-3]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-custom-menu [customize-browse]
`(menu-item ,(purecopy "Browse Customization Groups") customize-browse
:help ,(purecopy "Browse all customization groups")))
DOC is the text to use for the menu entry.
HELP is the text to use for the tooltip.
PROPS are additional properties."
- `'(menu-item ,(purecopy doc) ,fname
- ,@props
- :help ,(purecopy help)
- :button (:toggle . (and (default-boundp ',fname)
- (default-value ',fname)))))
+ `(list 'menu-item (purecopy ,doc) ',fname
+ ,@(mapcar (lambda (p) (list 'quote p)) props)
+ :help (purecopy ,help)
+ :button '(:toggle . (and (default-boundp ',fname)
+ (default-value ',fname)))))
(defmacro menu-bar-make-toggle (name variable doc message help &rest body)
`(progn
;; a candidate for "Save Options", and we do not want to save options
;; the user have already set explicitly in his init file.
(if interactively (customize-mark-as-set ',variable)))
- '(menu-item ,(purecopy doc) ,name
- :help ,(purecopy help)
- :button (:toggle . (and (default-boundp ',variable)
- (default-value ',variable))))))
+ (list 'menu-item (purecopy ,doc) ',name
+ :help (purecopy ,help)
+ :button '(:toggle . (and (default-boundp ',variable)
+ (default-value ',variable))))))
;; Function for setting/saving default font.
(custom-push-theme 'theme-face 'default 'user 'set spec)
(put 'default 'face-modified nil))))
+
+
;;; Assemble all the top-level items of the "Options" menu
(define-key menu-bar-options-menu [customize]
- `(menu-item ,(purecopy "Customize Emacs") menu-bar-custom-menu))
+ `(menu-item ,(purecopy "Customize Emacs") ,menu-bar-custom-menu))
(defun menu-bar-options-save ()
"Save current values of Options menu items using Custom."
;; put on a customized-value property.
(dolist (elt '(line-number-mode column-number-mode size-indication-mode
cua-mode show-paren-mode transient-mark-mode
- blink-cursor-mode display-time-mode display-battery-mode))
+ blink-cursor-mode display-time-mode display-battery-mode
+ ;; These are set by other functions that don't set
+ ;; the customized state. Having them here has the
+ ;; side-effect that turning them off via X
+ ;; resources acts like having customized them, but
+ ;; that seems harmless.
+ menu-bar-mode tool-bar-mode))
+ ;; FIXME ? It's a little annoying that running this command
+ ;; always loads cua-base, paren, time, and battery, even if they
+ ;; have not been customized in any way. (Due to custom-load-symbol.)
(and (customize-mark-to-save elt)
(setq need-save t)))
;; These are set with `customize-set-variable'.
(dolist (elt '(scroll-bar-mode
debug-on-quit debug-on-error
- tooltip-mode menu-bar-mode tool-bar-mode
+ ;; Somehow this works, when tool-bar and menu-bar don't.
+ tooltip-mode
save-place uniquify-buffer-name-style fringe-mode
indicate-empty-lines indicate-buffer-boundaries
- case-fold-search
+ case-fold-search font-use-system-font
current-language-environment default-input-method
;; Saving `text-mode-hook' is somewhat questionable,
;; as we might get more than we bargain for, if
:help ,(purecopy "Save options set from the menu above")))
(define-key menu-bar-options-menu [custom-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [menu-set-font]
`(menu-item ,(purecopy "Set Default Font...") menu-set-font
:visible (display-multi-font-p)
:help ,(purecopy "Select a default font")))
+(if (featurep 'system-font-setting)
+ (define-key menu-bar-options-menu [menu-system-font]
+ (menu-bar-make-toggle toggle-use-system-font font-use-system-font
+ "Use system font"
+ "Use system font: %s"
+ "Use the monospaced font defined by the system")))
+
+
;; The "Show/Hide" submenu of menu "Options"
(defvar menu-bar-showhide-menu (make-sparse-keymap "Show/Hide"))
"Show the size of the buffer in the mode line"))
(define-key menu-bar-showhide-menu [linecolumn-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-showhide-menu [showhide-battery]
(menu-bar-make-mm-toggle display-battery-mode
mail status in mode line"))
(define-key menu-bar-showhide-menu [datetime-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-showhide-menu [showhide-speedbar]
`(menu-item ,(purecopy "Speedbar") speedbar-frame-mode
:button (:radio . (eq indicate-buffer-boundaries nil))))
(define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind]
- `(menu-item ,(purecopy "Buffer Boundaries") menu-bar-showhide-fringe-ind-menu
- :visible `(display-graphic-p)
- :help ,(purecopy "Indicate buffer boundaries in fringe")))
+ `(menu-item ,(purecopy "Buffer Boundaries") ,menu-bar-showhide-fringe-ind-menu
+ :visible (display-graphic-p)
+ :help ,(purecopy "Indicate buffer boundaries in fringe")))
(define-key menu-bar-showhide-fringe-menu [indicate-empty-lines]
(menu-bar-make-toggle toggle-indicate-empty-lines indicate-empty-lines
:button (:radio . (eq fringe-mode 0))))
(define-key menu-bar-showhide-menu [showhide-fringe]
- `(menu-item ,(purecopy "Fringe") menu-bar-showhide-fringe-menu
- :visible `(display-graphic-p)))
+ `(menu-item ,(purecopy "Fringe") ,menu-bar-showhide-fringe-menu
+ :visible (display-graphic-p)))
(defvar menu-bar-showhide-scroll-bar-menu (make-sparse-keymap "Scroll-bar"))
(customize-set-variable 'scroll-bar-mode nil))
(define-key menu-bar-showhide-menu [showhide-scroll-bar]
- `(menu-item ,(purecopy "Scroll-bar") menu-bar-showhide-scroll-bar-menu
- :visible `(display-graphic-p)))
+ `(menu-item ,(purecopy "Scroll-bar") ,menu-bar-showhide-scroll-bar-menu
+ :visible (display-graphic-p)))
(define-key menu-bar-showhide-menu [showhide-tooltip-mode]
- `(menu-item ,(purecopy "Tooltips") 'tooltip-mode
- :help ,(purecopy "Turn tooltips on/off")
- :visible `(and (display-graphic-p) (fboundp 'x-show-tip))
- :button `(:toggle . tooltip-mode)))
+ `(menu-item ,(purecopy "Tooltips") tooltip-mode
+ :help ,(purecopy "Turn tooltips on/off")
+ :visible (and (display-graphic-p) (fboundp 'x-show-tip))
+ :button (:toggle . tooltip-mode)))
(define-key menu-bar-showhide-menu [menu-bar-mode]
`(menu-item ,(purecopy "Menu-bar") toggle-menu-bar-mode-from-frame
:button (:toggle . (> (frame-parameter nil 'menu-bar-lines) 0))))
(define-key menu-bar-showhide-menu [showhide-tool-bar]
- `(menu-item ,(purecopy "Tool-bar") 'toggle-tool-bar-mode-from-frame
- :help ,(purecopy "Turn tool-bar on/off")
- :visible `(display-graphic-p)
- :button `(:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
+ `(menu-item ,(purecopy "Tool-bar") toggle-tool-bar-mode-from-frame
+ :help ,(purecopy "Turn tool-bar on/off")
+ :visible (display-graphic-p)
+ :button (:toggle . (> (frame-parameter nil 'tool-bar-lines) 0))))
(define-key menu-bar-options-menu [showhide]
- `(menu-item ,(purecopy "Show/Hide") menu-bar-showhide-menu))
+ `(menu-item ,(purecopy "Show/Hide") ,menu-bar-showhide-menu))
(define-key menu-bar-options-menu [showhide-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [mule]
;; It is better not to use backquote here,
;; because that makes a bootstrapping problem
;; if you need to recompile all the Lisp files using interpreted code.
- `(menu-item ,(purecopy "Mule (Multilingual Environment)") mule-menu-keymap
+ `(menu-item ,(purecopy "Mule (Multilingual Environment)") ,mule-menu-keymap
;; Most of the MULE menu actually does make sense in unibyte mode,
;; e.g. language selection.
;;; :visible '(default-value 'enable-multibyte-characters)
))
;(setq menu-bar-final-items (cons 'mule menu-bar-final-items))
;(define-key menu-bar-options-menu [preferences]
-; `(menu-item ,(purecopy "Preferences") menu-bar-preferences-menu
-; :help ,(purecopy "Toggle important global options")))
+; `(menu-item ,(purecopy "Preferences") ,menu-bar-preferences-menu
+; :help ,(purecopy "Toggle important global options")))
(define-key menu-bar-options-menu [mule-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [debug-on-quit]
(menu-bar-make-toggle toggle-debug-on-quit debug-on-quit
"Enter Debugger on Error" "Debug on Error %s"
"Enter Lisp debugger when an error is signaled"))
(define-key menu-bar-options-menu [debugger-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [blink-cursor-mode]
(menu-bar-make-mm-toggle blink-cursor-mode
"Blinking Cursor"
"Whether the cursor blinks (Blink Cursor mode)"))
(define-key menu-bar-options-menu [cursor-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [save-place]
(menu-bar-make-toggle toggle-save-place-globally save-place
'forward))))
(define-key menu-bar-options-menu [edit-options-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [cua-mode]
(menu-bar-make-mm-toggle cua-mode
"C-x/C-c/C-v Cut and Paste (CUA)"
(interactive)
(unless visual-line-mode
(visual-line-mode 1))
- (message "Visual-Line mode enabled"))
+ (message ,(purecopy "Visual-Line mode enabled")))
:help ,(purecopy "Wrap long lines at word boundaries")
:button (:radio . (and (null truncate-lines)
(not (truncated-partial-width-window-p))
:enable (not (truncated-partial-width-window-p))))
(define-key menu-bar-options-menu [line-wrapping]
- `(menu-item ,(purecopy "Line Wrapping in this Buffer") menu-bar-line-wrapping-menu))
+ `(menu-item ,(purecopy "Line Wrapping in this Buffer") ,menu-bar-line-wrapping-menu))
(define-key menu-bar-options-menu [highlight-separator]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-options-menu [highlight-paren-mode]
(menu-bar-make-mm-toggle show-paren-mode
"Paren Match Highlighting"
(defvar menu-bar-games-menu (make-sparse-keymap "Games"))
(define-key menu-bar-tools-menu [games]
- `(menu-item ,(purecopy "Games") menu-bar-games-menu))
+ `(menu-item ,(purecopy "Games") ,menu-bar-games-menu))
(define-key menu-bar-tools-menu [separator-games]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-games-menu [zone]
`(menu-item ,(purecopy "Zone Out") zone
(define-key menu-bar-games-menu [life]
`(menu-item ,(purecopy "Life") life
:help ,(purecopy "Watch how John Conway's cellular automaton evolves")))
+(define-key menu-bar-games-menu [land]
+ `(menu-item ,(purecopy "Landmark") landmark
+ :help ,(purecopy "Watch a neural-network robot learn landmarks")))
(define-key menu-bar-games-menu [hanoi]
`(menu-item ,(purecopy "Towers of Hanoi") hanoi
:help ,(purecopy "Watch Towers-of-Hanoi puzzle solved by Emacs")))
(make-sparse-keymap "Encryption/Decryption"))
(define-key menu-bar-tools-menu [encryption-decryption]
- `(menu-item ,(purecopy "Encryption/Decryption") menu-bar-encryption-decryption-menu))
+ `(menu-item ,(purecopy "Encryption/Decryption") ,menu-bar-encryption-decryption-menu))
(define-key menu-bar-tools-menu [separator-encryption-decryption]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-encryption-decryption-menu [insert-keys]
`(menu-item ,(purecopy "Insert Keys") epa-insert-keys
:help ,(purecopy "Browse your public keyring")))
(define-key menu-bar-encryption-decryption-menu [separator-keys]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-encryption-decryption-menu [sign-region]
`(menu-item ,(purecopy "Sign Region") epa-sign-region
:help ,(purecopy "Decrypt the current region")))
(define-key menu-bar-encryption-decryption-menu [separator-file]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-encryption-decryption-menu [sign-file]
`(menu-item ,(purecopy "Sign File...") epa-sign-file
:help ,(purecopy "Invoke the Emacs built-in calendar")))
(define-key menu-bar-tools-menu [separator-net]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-tools-menu [directory-search]
`(menu-item ,(purecopy "Directory Search") eudc-tools-menu))
(define-key menu-bar-tools-menu [compose-mail]
- `(list
- 'menu-item `(format "Send Mail (with %s)" (send-mail-item-name))
- 'compose-mail
- :visible `(and mail-user-agent (not (eq mail-user-agent 'ignore)))
- :help ,(purecopy "Send a mail message")))
+ `(menu-item (format "Send Mail (with %s)" (send-mail-item-name)) compose-mail
+ :visible (and mail-user-agent (not (eq mail-user-agent 'ignore)))
+ :help ,(purecopy "Send a mail message")))
(define-key menu-bar-tools-menu [rmail]
- `(list
- 'menu-item `(format "Read Mail (with %s)" (read-mail-item-name))
- 'menu-bar-read-mail
- :visible `(and read-mail-command (not (eq read-mail-command 'ignore)))
- :help ,(purecopy "Read your mail and reply to it")))
+ `(menu-item (format "Read Mail (with %s)" (read-mail-item-name))
+ menu-bar-read-mail
+ :visible (and read-mail-command
+ (not (eq read-mail-command 'ignore)))
+ :help ,(purecopy "Read your mail and reply to it")))
(defun menu-bar-read-mail ()
"Read mail using `read-mail-command'."
:help ,(purecopy "Read network news groups")))
(define-key menu-bar-tools-menu [separator-vc]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-tools-menu [pcl-cvs]
`(menu-item ,(purecopy "PCL-CVS") cvs-global-menu))
(define-key menu-bar-tools-menu [vc] nil) ;Create the place for the VC menu.
(define-key menu-bar-tools-menu [separator-compare]
- '("--"))
+ menu-bar-separator)
-(define-key menu-bar-tools-menu [ediff-misc]
- `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu))
(define-key menu-bar-tools-menu [epatch]
`(menu-item ,(purecopy "Apply Patch") menu-bar-epatch-menu))
(define-key menu-bar-tools-menu [ediff-merge]
`(menu-item ,(purecopy "Compare (Ediff)") menu-bar-ediff-menu))
(define-key menu-bar-tools-menu [separator-spell]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-tools-menu [spell]
`(menu-item ,(purecopy "Spell Checking") ispell-menu-map))
(define-key menu-bar-tools-menu [separator-prog]
- '("--"))
+ menu-bar-separator)
+
+(define-key menu-bar-tools-menu [semantic]
+ `(menu-item ,(purecopy "Source Code Parsers (Semantic)")
+ semantic-mode
+ :help ,(purecopy "Toggle automatic parsing in source code buffers (Semantic mode)")
+ :button (:toggle . (bound-and-true-p semantic-mode))))
+
+(define-key menu-bar-tools-menu [ede]
+ `(menu-item ,(purecopy "Project support (EDE)")
+ global-ede-mode
+ :help ,(purecopy "Toggle the Emacs Development Environment (Global EDE mode)")
+ :button (:toggle . (bound-and-true-p global-ede-mode))))
(define-key menu-bar-tools-menu [gdb]
`(menu-item ,(purecopy "Debugger (GDB)...") gdb
:help ,(purecopy "Keyboard layout for specific input method")))
(define-key menu-bar-describe-menu [describe-language-environment]
`(menu-item ,(purecopy "Describe Language Environment")
- describe-language-environment-map))
+ ,describe-language-environment-map))
(define-key menu-bar-describe-menu [separator-desc-mule]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-describe-menu [list-keybindings]
`(menu-item ,(purecopy "List Key Bindings") describe-bindings
`(menu-item ,(purecopy "Find Commands by Name...") apropos-command
:help ,(purecopy "Find commands whose names match a regexp")))
(define-key menu-bar-search-documentation-menu [sep1]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-search-documentation-menu [lookup-command-in-manual]
`(menu-item ,(purecopy "Look Up Command in User Manual...") Info-goto-emacs-command-node
:help ,(purecopy "Display manual section that describes a command")))
`(menu-item ,(purecopy "Read Man Page...") manual-entry
:help ,(purecopy "Man-page docs for external commands and libraries")))
(define-key menu-bar-manuals-menu [sep2]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-manuals-menu [order-emacs-manuals]
`(menu-item ,(purecopy "Ordering Manuals") view-order-manuals
:help ,(purecopy "How to order manuals from the Free Software Foundation")))
(define-key menu-bar-manuals-menu [emacs-lisp-reference]
`(menu-item ,(purecopy "Emacs Lisp Reference") menu-bar-read-lispref
:help ,(purecopy "Read the Emacs Lisp Reference manual")))
-(define-key menu-bar-manuals-menu [emac-lisp-intro]
+(define-key menu-bar-manuals-menu [emacs-lisp-intro]
`(menu-item ,(purecopy "Introduction to Emacs Lisp") menu-bar-read-lispintro
:help ,(purecopy "Read the Introduction to Emacs Lisp Programming")))
`(menu-item ,(purecopy "About Emacs") about-emacs
:help ,(purecopy "Display version number, copyright info, and basic help")))
(define-key menu-bar-help-menu [sep4]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-help-menu [describe-no-warranty]
`(menu-item ,(purecopy "(Non)Warranty") describe-no-warranty
:help ,(purecopy "Explain that Emacs has NO WARRANTY")))
data-directory))
(goto-address-mode 1)))
(define-key menu-bar-help-menu [sep2]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-help-menu [external-packages]
`(menu-item ,(purecopy "External Packages") menu-bar-help-extra-packages
:help ,(purecopy "Lisp packages distributed separately for use in Emacs")))
`(menu-item ,(purecopy "Find Emacs Packages") finder-by-keyword
:help ,(purecopy "Find packages and features by keyword")))
(define-key menu-bar-help-menu [more-manuals]
- `(menu-item ,(purecopy "More Manuals") menu-bar-manuals-menu))
+ `(menu-item ,(purecopy "More Manuals") ,menu-bar-manuals-menu))
(define-key menu-bar-help-menu [emacs-manual]
`(menu-item ,(purecopy "Read the Emacs Manual") info-emacs-manual
:help ,(purecopy "Full documentation of Emacs features")))
(define-key menu-bar-help-menu [describe]
- `(menu-item ,(purecopy "Describe") menu-bar-describe-menu))
+ `(menu-item ,(purecopy "Describe") ,menu-bar-describe-menu))
(define-key menu-bar-help-menu [search-documentation]
- `(menu-item ,(purecopy "Search Documentation") menu-bar-search-documentation-menu))
+ `(menu-item ,(purecopy "Search Documentation") ,menu-bar-search-documentation-menu))
(define-key menu-bar-help-menu [sep1]
- '("--"))
+ menu-bar-separator)
(define-key menu-bar-help-menu [emacs-psychotherapist]
`(menu-item ,(purecopy "Emacs Psychotherapist") doctor
:help ,(purecopy "Our doctor will help you feel better")))
:type 'boolean
:group 'menu)
-(defvar list-buffers-directory nil)
+(defvar list-buffers-directory nil
+ "String to display in buffer listings for buffers not visiting a file.")
+(make-variable-buffer-local 'list-buffers-directory)
(defun menu-bar-select-buffer ()
(interactive)
;;nil means the buffer shouldn't be listed. You can redefine this."
;; (if (string-match "\\` " (buffer-name buffer))
;; nil
-;; (save-excursion
-;; (set-buffer buffer)
+;; (with-current-buffer buffer
;; (let ((size (buffer-size)))
;; (format "%s%s %-19s %6s %-15s %s"
;; (if (buffer-modified-p) "*" " ")
;; bug in keymap.c that I don't understand yet. -stef
minibuffer-local-completion-map))
(define-key map [menu-bar minibuf]
- (cons "Minibuf" (make-sparse-keymap "Minibuf"))))
+ (cons (purecopy "Minibuf") (make-sparse-keymap "Minibuf"))))
(let ((map minibuffer-local-completion-map))
(define-key map [menu-bar minibuf ?\?]
- `(menu-item ,(purecopy "List Completions") 'minibuffer-completion-help
- :help ,(purecopy "Display all possible completions")))
+ `(menu-item ,(purecopy "List Completions") minibuffer-completion-help
+ :help ,(purecopy "Display all possible completions")))
(define-key map [menu-bar minibuf space]
- `(menu-item ,(purecopy "Complete Word") 'minibuffer-complete-word
- :help ,(purecopy "Complete at most one word")))
+ `(menu-item ,(purecopy "Complete Word") minibuffer-complete-word
+ :help ,(purecopy "Complete at most one word")))
(define-key map [menu-bar minibuf tab]
- `(menu-item ,(purecopy "Complete") 'minibuffer-complete
- :help ,(purecopy "Complete as far as possible"))))
+ `(menu-item ,(purecopy "Complete") minibuffer-complete
+ :help ,(purecopy "Complete as far as possible"))))
(let ((map minibuffer-local-map))
(define-key map [menu-bar minibuf quit]
- `(menu-item ,(purecopy "Quit") 'abort-recursive-edit
- :help ,(purecopy "Abort input and exit minibuffer")))
+ `(menu-item ,(purecopy "Quit") abort-recursive-edit
+ :help ,(purecopy "Abort input and exit minibuffer")))
(define-key map [menu-bar minibuf return]
- `(menu-item ,(purecopy "Enter") 'exit-minibuffer
- :key-sequence "\r"
- :help ,(purecopy "Terminate input and exit minibuffer")))
+ `(menu-item ,(purecopy "Enter") exit-minibuffer
+ :key-sequence ,(purecopy "\r")
+ :help ,(purecopy "Terminate input and exit minibuffer")))
(define-key map [menu-bar minibuf isearch-forward]
- `(menu-item ,(purecopy "Isearch History Forward") 'isearch-forward
- :help ,(purecopy "Incrementally search minibuffer history forward")))
+ `(menu-item ,(purecopy "Isearch History Forward") isearch-forward
+ :help ,(purecopy "Incrementally search minibuffer history forward")))
(define-key map [menu-bar minibuf isearch-backward]
- `(menu-item ,(purecopy "Isearch History Backward") 'isearch-backward
- :help ,(purecopy "Incrementally search minibuffer history backward")))
+ `(menu-item ,(purecopy "Isearch History Backward") isearch-backward
+ :help ,(purecopy "Incrementally search minibuffer history backward")))
(define-key map [menu-bar minibuf next]
- `(menu-item ,(purecopy "Next History Item") 'next-history-element
- :help ,(purecopy "Put next minibuffer history element in the minibuffer")))
+ `(menu-item ,(purecopy "Next History Item") next-history-element
+ :help ,(purecopy "Put next minibuffer history element in the minibuffer")))
(define-key map [menu-bar minibuf previous]
- `(menu-item ,(purecopy "Previous History Item") 'previous-history-element
- :help ,(purecopy "Put previous minibuffer history element in the minibuffer"))))
+ `(menu-item ,(purecopy "Previous History Item") previous-history-element
+ :help ,(purecopy "Put previous minibuffer history element in the minibuffer"))))
\f
-;;;###autoload
-;; This comment is taken from tool-bar.el near
-;; (put 'tool-bar-mode ...)
-;; We want to pretend the menu bar by standard is on, as this will make
-;; customize consider disabling the menu bar a customization, and save
-;; that. We could do this for real by setting :init-value below, but
-;; that would overwrite disabling the tool bar from X resources.
-(put 'menu-bar-mode 'standard-value '(t))
-
(define-minor-mode menu-bar-mode
"Toggle display of a menu bar on each frame.
This command applies to all frames that exist and frames to be
;; Make the message appear when Emacs is idle. We can not call message
;; directly. The minor-mode message "Menu-bar mode disabled" comes
;; after this function returns, overwriting any message we do here.
- (when (and (interactive-p) (not menu-bar-mode))
+ (when (and (called-interactively-p 'interactive) (not menu-bar-mode))
(run-with-idle-timer 0 nil 'message
"Menu-bar mode disabled. Use M-x menu-bar-mode to make the menu bar appear."))
menu-bar-mode)
+;;;###autoload
+;; (This does not work right unless it comes after the above definition.)
+;; This comment is taken from tool-bar.el near
+;; (put 'tool-bar-mode ...)
+;; We want to pretend the menu bar by standard is on, as this will make
+;; customize consider disabling the menu bar a customization, and save
+;; that. We could do this for real by setting :init-value above, but
+;; that would overwrite disabling the menu bar from X resources.
+(put 'menu-bar-mode 'standard-value '(t))
+
(defun toggle-menu-bar-mode-from-frame (&optional arg)
"Toggle menu bar on or off, based on the status of the current frame.
See `menu-bar-mode' for more information."
(provide 'menu-bar)
-;; arch-tag: 6e6a3c22-4ec4-4d3d-8190-583f8ef94ced
;;; menu-bar.el ends here