X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ebf5c4f5267dbac1e9e4b875c56f36ef2835c370..6a5c21753e3918152ca4abc50291d6e628e89f6c:/lisp/menu-bar.el diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 07f94a7120..9d8e474908 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -1,11 +1,12 @@ ;;; 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 ;; Keywords: internal, mouse +;; Package: emacs ;; This file is part of GNU Emacs. @@ -71,7 +72,7 @@ :help ,(purecopy "Save unsaved buffers, then exit"))) (define-key menu-bar-file-menu [separator-exit] - `(menu-item ,(purecopy "--"))) + menu-bar-separator) ;; Don't use delete-frame as event name because that is a special ;; event. @@ -101,7 +102,7 @@ :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 @@ -129,7 +130,7 @@ :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 @@ -167,7 +168,7 @@ :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." @@ -292,7 +293,7 @@ (define-key menu-bar-search-menu [i-search] `(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 @@ -301,7 +302,7 @@ `(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 @@ -318,7 +319,7 @@ 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 @@ -345,7 +346,7 @@ `(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 @@ -360,6 +361,11 @@ (define-key menu-bar-edit-menu [props] `(menu-item ,(purecopy "Text Properties") facemenu-menu)) +;; ns-win.el said: Add spell for platorm consistency. +(if (featurep 'ns) + (define-key menu-bar-edit-menu [spell] + `(menu-item ,(purecopy "Spell") ispell-menu-map))) + (define-key menu-bar-edit-menu [fill] `(menu-item ,(purecopy "Fill") fill-region :enable (and mark-active (not buffer-read-only)) @@ -367,7 +373,7 @@ ,(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)) @@ -379,7 +385,7 @@ :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 @@ -415,7 +421,7 @@ :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)) @@ -438,7 +444,7 @@ `(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 @@ -452,30 +458,46 @@ ,(purecopy "Delete the text in region between mark and current position"))) (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 +;; The ns differences here seem silly. +(define-key menu-bar-edit-menu (if (featurep 'ns) [select-paste] + [paste-from-menu]) + ;; ns-win.el said: Change text to be more consistent with + ;; surrounding menu items `paste', etc." + `(menu-item ,(purecopy (if (featurep 'ns) "Select and Paste" + "Paste from Kill Menu")) yank-menu :enable (and (cdr yank-menu) (not buffer-read-only)) :help ,(purecopy "Choose a string from the kill ring and paste it"))) (define-key menu-bar-edit-menu [paste] `(menu-item ,(purecopy "Paste") yank :enable (and (or - ;; Emacs compiled --without-x doesn't have - ;; x-selection-exists-p. + ;; Emacs compiled --without-x (or --with-ns) + ;; doesn't have x-selection-exists-p. (and (fboundp 'x-selection-exists-p) - (x-selection-exists-p)) - kill-ring) + (x-selection-exists-p 'CLIPBOARD)) + (if (featurep 'ns) ; like paste-from-menu + (cdr yank-menu) + kill-ring)) (not buffer-read-only)) :help ,(purecopy "Paste (yank) text most recently cut/copied"))) (define-key menu-bar-edit-menu [copy] - `(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]")) + ;; ns-win.el said: Substitute a Copy function that works better + ;; under X (for GNUstep). + `(menu-item ,(purecopy "Copy") ,(if (featurep 'ns) + 'ns-copy-including-secondary + 'menu-bar-kill-ring-save) + :enable mark-active + :help ,(purecopy "Copy text in region between mark and current position") + :keys ,(purecopy (if (featurep 'ns) + "\\[ns-copy-including-secondary]" + "\\[kill-ring-save]")))) (define-key menu-bar-edit-menu [cut] `(menu-item ,(purecopy "Cut") kill-region :enable (and mark-active (not buffer-read-only)) :help ,(purecopy "Cut (kill) text in region between mark and current position"))) +;; ns-win.el said: Separate undo from cut/paste section. +(if (featurep 'ns) + (define-key menu-bar-edit-menu [separator-undo] `(,(purecopy "--")))) (define-key menu-bar-edit-menu [undo] `(menu-item ,(purecopy "Undo") undo :enable (and (not buffer-read-only) @@ -485,7 +507,6 @@ (consp buffer-undo-list))) :help ,(purecopy "Undo last operation"))) - (defun menu-bar-kill-ring-save (beg end) (interactive "r") (if (mouse-region-match) @@ -526,17 +547,6 @@ "Make CUT, PASTE and COPY (keys and menu bar items) use the clipboard. Do the same for the keys of the same name." (interactive) - ;; We can't use constant list structure here because it becomes pure, - ;; and because it gets modified with cache data. - (define-key menu-bar-edit-menu [paste] - (cons "Paste" (cons "Paste text from clipboard" 'clipboard-yank))) - (define-key menu-bar-edit-menu [copy] - (cons "Copy" (cons "Copy text in region to the clipboard" - 'clipboard-kill-ring-save))) - (define-key menu-bar-edit-menu [cut] - (cons "Cut" (cons "Delete text in region and copy it to the clipboard" - 'clipboard-kill-region))) - ;; These are Sun server keysyms for the Cut, Copy and Paste keys ;; (also for XFree86 on Sun keyboard): (define-key global-map [f20] 'clipboard-kill-region) @@ -564,7 +574,7 @@ Do the same for the keys of the same name." `(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"))) @@ -575,7 +585,7 @@ Do the same for the keys of the same name." `(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"))) @@ -583,7 +593,7 @@ Do the same for the keys of the same name." `(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"))) @@ -600,10 +610,10 @@ DOC is the text to use for the menu entry. HELP is the text to use for the tooltip. PROPS are additional properties." `(list 'menu-item (purecopy ,doc) ',fname - ,@props - ':help (purecopy ,help) - ':button '(:toggle . (and (default-boundp ',fname) - (default-value ',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 @@ -627,9 +637,9 @@ by \"Save Options\" in Custom buffers.") ;; the user have already set explicitly in his init file. (if interactively (customize-mark-as-set ',variable))) (list 'menu-item (purecopy ,doc) ',name - ':help (purecopy ,help) - ':button '(:toggle . (and (default-boundp ',variable) - (default-value ',variable)))))) + :help (purecopy ,help) + :button '(:toggle . (and (default-boundp ',variable) + (default-value ',variable)))))) ;; Function for setting/saving default font. @@ -660,6 +670,8 @@ by \"Save Options\" in Custom buffers.") (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)) @@ -672,16 +684,26 @@ by \"Save Options\" in Custom buffers.") ;; 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 @@ -689,7 +711,7 @@ by \"Save Options\" in Custom buffers.") ;; Nonetheless, not saving it would like be confuse ;; more often. ;; -- Per Abrahamsen 2002-02-11. - text-mode-hook)) + text-mode-hook tool-bar-position)) (and (get elt 'customized-value) (customize-mark-to-save elt) (setq need-save t))) @@ -701,18 +723,30 @@ by \"Save Options\" in Custom buffers.") (when need-save (custom-save-all)))) +(define-key menu-bar-options-menu [package] + '(menu-item "Manage Emacs Packages" package-list-packages + :help "Install or uninstall additional Emacs packages")) + (define-key menu-bar-options-menu [save] `(menu-item ,(purecopy "Save Options") menu-bar-options-save :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")) @@ -733,7 +767,7 @@ by \"Save Options\" in Custom buffers.") "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 @@ -747,7 +781,7 @@ by \"Save Options\" in Custom buffers.") 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 @@ -965,17 +999,99 @@ mail status in mode line")) :help ,(purecopy "Turn menu-bar on/off") :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)))) +(defun menu-bar-set-tool-bar-position (position) + (customize-set-variable 'tool-bar-mode t) + (customize-set-variable 'tool-bar-position position)) +(defun menu-bar-showhide-tool-bar-menu-customize-disable () + "Do not display tool bars." + (interactive) + (customize-set-variable 'tool-bar-mode nil)) +(defun menu-bar-showhide-tool-bar-menu-customize-enable-left () + "Display tool bars on the left side." + (interactive) + (menu-bar-set-tool-bar-position 'left)) +(defun menu-bar-showhide-tool-bar-menu-customize-enable-right () + "Display tool bars on the right side." + (interactive) + (menu-bar-set-tool-bar-position 'right)) +(defun menu-bar-showhide-tool-bar-menu-customize-enable-top () + "Display tool bars on the top side." + (interactive) + (menu-bar-set-tool-bar-position 'top)) +(defun menu-bar-showhide-tool-bar-menu-customize-enable-bottom () + "Display tool bars on the bottom side." + (interactive) + (menu-bar-set-tool-bar-position 'bottom)) + +(if (featurep 'move-toolbar) + (progn + (defvar menu-bar-showhide-tool-bar-menu (make-sparse-keymap "Tool-bar")) + + (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-left] + `(menu-item ,(purecopy "On the left") + menu-bar-showhide-tool-bar-menu-customize-enable-left + :help ,(purecopy "Tool-bar at the left side") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter nil 'tool-bar-position) + 'left))))) + + (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-right] + `(menu-item ,(purecopy "On the right") + menu-bar-showhide-tool-bar-menu-customize-enable-right + :help ,(purecopy "Tool-bar at the right side") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter nil 'tool-bar-position) + 'right))))) + + (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-bottom] + `(menu-item ,(purecopy "On the bottom") + menu-bar-showhide-tool-bar-menu-customize-enable-bottom + :help ,(purecopy "Tool-bar at the bottom") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter nil 'tool-bar-position) + 'bottom))))) + + (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-top] + `(menu-item ,(purecopy "On the top") + menu-bar-showhide-tool-bar-menu-customize-enable-top + :help ,(purecopy "Tool-bar at the top") + :visible (display-graphic-p) + :button + (:radio . (and tool-bar-mode + (eq (frame-parameter nil 'tool-bar-position) + 'top))))) + + (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-none] + `(menu-item ,(purecopy "None") + menu-bar-showhide-tool-bar-menu-customize-disable + :help ,(purecopy "Turn tool-bar off") + :visible (display-graphic-p) + :button (:radio . (eq tool-bar-mode nil)))) + + (define-key menu-bar-showhide-menu [showhide-tool-bar] + `(menu-item ,(purecopy "Tool-bar") ,menu-bar-showhide-tool-bar-menu + :visible (display-graphic-p))) + + ) + ;; else not tool bar that can move. + (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)))) +) (define-key menu-bar-options-menu [showhide] `(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, @@ -992,7 +1108,7 @@ mail status in mode line")) ; :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 @@ -1003,14 +1119,14 @@ mail status in mode line")) "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 @@ -1034,7 +1150,7 @@ mail status in mode line")) '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)" @@ -1045,7 +1161,7 @@ mail status in mode line")) (define-key menu-bar-options-menu [cua-emulation-mode] (menu-bar-make-mm-toggle cua-mode "Shift movement mark region (CUA)" - "Use shifted movement keys to set and extend the region." + "Use shifted movement keys to set and extend the region" (:visible (and (boundp 'cua-enable-cua-keys) (not cua-enable-cua-keys))))) @@ -1080,7 +1196,7 @@ mail status in mode line")) (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)) @@ -1118,7 +1234,7 @@ mail status in mode line")) (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" @@ -1158,7 +1274,7 @@ mail status in mode line")) `(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 @@ -1181,6 +1297,9 @@ mail status in mode line")) (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"))) @@ -1207,7 +1326,7 @@ mail status in mode line")) `(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 @@ -1230,7 +1349,7 @@ mail status in mode line")) :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 @@ -1249,7 +1368,7 @@ mail status in mode line")) :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 @@ -1278,7 +1397,7 @@ mail status in mode line")) :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)) @@ -1287,8 +1406,10 @@ mail status in mode line")) :visible (and mail-user-agent (not (eq mail-user-agent 'ignore))) :help ,(purecopy "Send a mail message"))) (define-key menu-bar-tools-menu [rmail] - `(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))) + `(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 () @@ -1301,14 +1422,14 @@ mail status in mode line")) :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 [epatch] `(menu-item ,(purecopy "Apply Patch") menu-bar-epatch-menu)) @@ -1318,13 +1439,13 @@ mail status in mode line")) `(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)") @@ -1380,7 +1501,7 @@ mail status in mode line")) ,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 @@ -1388,6 +1509,9 @@ mail status in mode line")) (define-key menu-bar-describe-menu [describe-current-display-table] `(menu-item ,(purecopy "Describe Display Table") describe-current-display-table :help ,(purecopy "Describe the current display table"))) +(define-key menu-bar-describe-menu [describe-package] + `(menu-item ,(purecopy "Describe Package...") describe-package + :help ,(purecopy "Display documentation of a Lisp package"))) (define-key menu-bar-describe-menu [describe-face] `(menu-item ,(purecopy "Describe Face...") describe-face :help ,(purecopy "Display the properties of a face"))) @@ -1452,7 +1576,7 @@ key, a click, or a menu-item"))) `(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"))) @@ -1475,7 +1599,7 @@ key, a click, or a menu-item"))) `(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"))) @@ -1488,7 +1612,7 @@ key, a click, or a menu-item"))) (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"))) @@ -1499,7 +1623,7 @@ key, a click, or a menu-item"))) `(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"))) @@ -1517,13 +1641,13 @@ key, a click, or a menu-item"))) 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 + `(menu-item ,(purecopy "Finding Extra Packages") menu-bar-help-extra-packages :help ,(purecopy "Lisp packages distributed separately for use in Emacs"))) (define-key menu-bar-help-menu [find-emacs-packages] - `(menu-item ,(purecopy "Find Emacs Packages") finder-by-keyword - :help ,(purecopy "Find packages and features by keyword"))) + `(menu-item ,(purecopy "Search Built-in Packages") finder-by-keyword + :help ,(purecopy "Find built-in packages and features by keyword"))) (define-key menu-bar-help-menu [more-manuals] `(menu-item ,(purecopy "More Manuals") ,menu-bar-manuals-menu)) (define-key menu-bar-help-menu [emacs-manual] @@ -1534,7 +1658,7 @@ key, a click, or a menu-item"))) (define-key menu-bar-help-menu [search-documentation] `(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"))) @@ -1857,8 +1981,7 @@ Buffers menu is regenerated." ;;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) "*" " ") @@ -1894,7 +2017,7 @@ Buffers menu is regenerated." :help ,(purecopy "Abort input and exit minibuffer"))) (define-key map [menu-bar minibuf return] `(menu-item ,(purecopy "Enter") exit-minibuffer - :key-sequence "\r" + :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 @@ -1909,36 +2032,43 @@ Buffers menu is regenerated." `(menu-item ,(purecopy "Previous History Item") previous-history-element :help ,(purecopy "Put previous minibuffer history element in the minibuffer")))) -;;;###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 created in the future. With a numeric argument, if the argument is positive, turn on menu bars; otherwise, turn off menu bars." - :init-value nil + :init-value t :global t :group 'frames - ;; Make menu-bar-mode and default-frame-alist consistent. - (modify-all-frames-parameters (list (cons 'menu-bar-lines - (if menu-bar-mode 1 0)))) - + ;; Turn the menu-bars on all frames on or off. + (let ((val (if menu-bar-mode 1 0))) + (dolist (frame (frame-list)) + (set-frame-parameter frame 'menu-bar-lines val)) + ;; If the user has given `default-frame-alist' a `menu-bar-lines' + ;; parameter, replace it. + (if (assq 'menu-bar-lines default-frame-alist) + (setq default-frame-alist + (cons (cons 'menu-bar-lines val) + (assq-delete-all 'menu-bar-lines + default-frame-alist))))) ;; 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 (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) + "Menu-bar mode disabled. Use M-x menu-bar-mode to make the menu bar appear."))) + +;;;###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. @@ -1972,5 +2102,4 @@ If FRAME is nil or not given, use the selected frame." (provide 'menu-bar) -;; arch-tag: 6e6a3c22-4ec4-4d3d-8190-583f8ef94ced ;;; menu-bar.el ends here