X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/815776895dc9e73e1ff456c1d3c25cc174682c82..36fc09321bce7286ce378c45382a0a4773d69a9d:/lisp/menu-bar.el diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index f9e43757d7..24fd88e681 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -1,7 +1,7 @@ ;;; menu-bar.el --- define a default menu bar ;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ;; Author: RMS ;; Maintainer: FSF @@ -64,7 +64,7 @@ ;; The "File" menu items (define-key menu-bar-file-menu [exit-emacs] - '(menu-item "Exit Emacs" save-buffers-kill-emacs + '(menu-item "Quit" save-buffers-kill-terminal :help "Save unsaved buffers, then exit")) (define-key menu-bar-file-menu [separator-exit] @@ -440,7 +440,7 @@ (define-key menu-bar-edit-menu [mark-whole-buffer] '(menu-item "Select All" mark-whole-buffer - :help "Mark the whole buffer for a subsequent cut/copy.")) + :help "Mark the whole buffer for a subsequent cut/copy")) (define-key menu-bar-edit-menu [clear] '(menu-item "Clear" delete-region :enable (and mark-active @@ -451,16 +451,18 @@ (defvar yank-menu (cons "Select Yank" nil)) (fset 'yank-menu (cons 'keymap yank-menu)) (define-key menu-bar-edit-menu [paste-from-menu] - '(menu-item "Paste from kill menu" yank-menu + '(menu-item "Paste from Kill Menu" yank-menu :enable (and (cdr yank-menu) (not buffer-read-only)) :help "Choose a string from the kill ring and paste it")) (define-key menu-bar-edit-menu [paste] '(menu-item "Paste" yank - :enable (and - ;; Emacs compiled --without-x doesn't have - ;; x-selection-exists-p. - (fboundp 'x-selection-exists-p) - (x-selection-exists-p) (not buffer-read-only)) + :enable (and (or + ;; Emacs compiled --without-x doesn't have + ;; x-selection-exists-p. + (and (fboundp 'x-selection-exists-p) + (x-selection-exists-p)) + kill-ring) + (not buffer-read-only)) :help "Paste (yank) text most recently cut/copied")) (define-key menu-bar-edit-menu [copy] '(menu-item "Copy" menu-bar-kill-ring-save @@ -495,10 +497,10 @@ '(and mark-active (not buffer-read-only))) (put 'clipboard-kill-ring-save 'menu-enable 'mark-active) (put 'clipboard-yank 'menu-enable - '(and (or (and (fboundp 'x-selection-exists-p) - (x-selection-exists-p)) + '(and (or (not (fboundp 'x-selection-exists-p)) + (x-selection-exists-p) (x-selection-exists-p 'CLIPBOARD)) - (not buffer-read-only))) + (not buffer-read-only))) (defun clipboard-yank () "Insert the clipboard contents, or the last stretch of killed text." @@ -637,7 +639,20 @@ by \"Save Options\" in Custom buffers.") (mouse-select-font))) spec) (when font - (set-face-attribute 'default nil :font font) + ;; Be careful here: when set-face-attribute is called for the + ;; :font attribute, Emacs tries to guess the best matching font + ;; by examining the other face attributes (Bug#2476). + (set-face-attribute 'default (selected-frame) + :width 'normal + :weight 'normal + :slant 'normal + :font font) + (let ((font-object (face-attribute 'default :font))) + (dolist (f (frame-list)) + (and (not (eq f (selected-frame))) + (display-graphic-p f) + (set-face-attribute 'default f :font font-object))) + (set-face-attribute 'default t :font font-object)) (setq spec (list (list t (face-attr-construct 'default)))) (put 'default 'customized-face spec) (custom-push-theme 'theme-face 'default 'user 'set spec) @@ -950,7 +965,7 @@ mail status in mode line")) (define-key menu-bar-showhide-menu [showhide-tool-bar] (list 'menu-item "Tool-bar" 'toggle-tool-bar-mode-from-frame - :help "Toggle tool-bar on/off" + :help "Turn tool-bar on/off" :visible `(display-graphic-p) :button `(:toggle . (> (frame-parameter nil 'tool-bar-lines) 0)))) @@ -1049,7 +1064,7 @@ mail status in mode line")) (define-key menu-bar-options-menu [auto-fill-mode] '(menu-item "Auto Fill in Text Modes" menu-bar-text-mode-auto-fill - :help "Automatically fill text while typing (Auto Fill Mode)" + :help "Automatically fill text while typing (Auto Fill mode)" :button (:toggle . (if (listp text-mode-hook) (member 'turn-on-auto-fill text-mode-hook) (eq 'turn-on-auto-fill text-mode-hook))))) @@ -1057,30 +1072,38 @@ mail status in mode line")) (defvar menu-bar-line-wrapping-menu (make-sparse-keymap "Line Wrapping")) -(define-key menu-bar-line-wrapping-menu [truncate] - '(menu-item "Truncate Long Lines" - toggle-truncate-lines - :help "Truncate long lines at window edge" - :button (:radio . (or truncate-lines - (truncated-partial-width-window-p))) - :visible (menu-bar-menu-frame-live-and-visible-p) - :enable (not (truncated-partial-width-window-p)))) - (define-key menu-bar-line-wrapping-menu [word-wrap] - '(menu-item "Wrap at Word Boundaries" - (lambda () (interactive) (setq truncate-lines nil - word-wrap t)) + '(menu-item "Word Wrap (Visual Line mode)" + (lambda () + (interactive) + (unless visual-line-mode + (visual-line-mode 1)) + (message "Visual-Line mode enabled")) :help "Wrap long lines at word boundaries" :button (:radio . (and (null truncate-lines) (not (truncated-partial-width-window-p)) word-wrap)) + :visible (menu-bar-menu-frame-live-and-visible-p))) + +(define-key menu-bar-line-wrapping-menu [truncate] + '(menu-item "Truncate Long Lines" + (lambda () + (interactive) + (if visual-line-mode (visual-line-mode 0)) + (setq word-wrap nil) + (toggle-truncate-lines 1)) + :help "Truncate long lines at window edge" + :button (:radio . (or truncate-lines + (truncated-partial-width-window-p))) :visible (menu-bar-menu-frame-live-and-visible-p) :enable (not (truncated-partial-width-window-p)))) (define-key menu-bar-line-wrapping-menu [window-wrap] '(menu-item "Wrap at Window Edge" - (lambda () (interactive) (setq truncate-lines nil - word-wrap nil)) + (lambda () (interactive) + (if visual-line-mode (visual-line-mode 0)) + (setq word-wrap nil) + (if truncate-lines (toggle-truncate-lines -1))) :help "Wrap long lines at window edge" :button (:radio . (and (null truncate-lines) (not (truncated-partial-width-window-p)) @@ -1353,7 +1376,7 @@ mail status in mode line")) (define-key menu-bar-describe-menu [list-keybindings] '(menu-item "List Key Bindings" describe-bindings - :help "Display all current keybindings (keyboard shortcuts)")) + :help "Display all current key bindings (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")) @@ -1449,7 +1472,7 @@ key, a click, or a menu-item")) '(menu-item "Ordering Manuals" view-order-manuals :help "How to order manuals from the Free Software Foundation")) (define-key menu-bar-manuals-menu [lookup-subject-in-all-manuals] - '(menu-item "Lookup Subject in all manuals..." info-apropos + '(menu-item "Lookup Subject in all Manuals..." info-apropos :help "Find description of a subject in all installed manuals")) (define-key menu-bar-manuals-menu [other-manuals] '(menu-item "All Other Manuals (Info)" Info-directory @@ -1477,14 +1500,14 @@ key, a click, or a menu-item")) :help "Show the Emacs license (GPL)")) (define-key menu-bar-help-menu [getting-new-versions] '(menu-item "Getting New Versions" describe-distribution - :help "How to get latest versions of Emacs")) + :help "How to get the latest version of Emacs")) (defun menu-bar-help-extra-packages () "Display help about some additional packages available for Emacs." (interactive) (let (enable-local-variables) (view-file (expand-file-name "MORE.STUFF" data-directory)) - (goto-address))) + (goto-address-mode 1))) (define-key menu-bar-help-menu [sep2] '("--")) (define-key menu-bar-help-menu [external-packages] @@ -1581,7 +1604,7 @@ using `abort-recursive-edit'." (> count 1))) (defcustom yank-menu-length 20 - "*Maximum length to display in the yank-menu." + "Maximum length to display in the yank-menu." :type 'integer :group 'menu) @@ -1623,7 +1646,7 @@ The menu shows all the killed text sequences stored in `kill-ring'." ;;; Buffers Menu (defcustom buffers-menu-max-size 10 - "*Maximum number of entries which may appear on the Buffers menu. + "Maximum number of entries which may appear on the Buffers menu. If this is 10, then only the ten most-recently-selected buffers are shown. If this is nil, then all buffers are shown. A large number or nil slows down menu responsiveness." @@ -1632,7 +1655,7 @@ A large number or nil slows down menu responsiveness." :group 'menu) (defcustom buffers-menu-buffer-name-length 30 - "*Maximum length of the buffer name on the Buffers menu. + "Maximum length of the buffer name on the Buffers menu. If this is a number, then buffer names are truncated to this length. If this is nil, then buffer names are shown in full. A large number or nil makes the menu too wide."