comparison lisp/menu-bar.el @ 90224:2d92f5c9d6ae

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-78 Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 514-518) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 104-105) - Update from CVS
author Miles Bader <miles@gnu.org>
date Fri, 26 Aug 2005 09:51:52 +0000
parents f9a65d7ebd29 7adadc9e4a10
children a3716f7538f2
comparison
equal deleted inserted replaced
90223:edf295560b5a 90224:2d92f5c9d6ae
1 ;;; menu-bar.el --- define a default menu bar 1 ;;; menu-bar.el --- define a default menu bar
2 2
3 ;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2005 3 ;; Copyright (C) 1993, 1994, 1995, 2000, 2001, 2002, 2003, 2004,
4 ;; Free Software Foundation, Inc. 4 ;; 2005 Free Software Foundation, Inc.
5 5
6 ;; Author: RMS 6 ;; Author: RMS
7 ;; Maintainer: FSF 7 ;; Maintainer: FSF
8 ;; Keywords: internal, mouse 8 ;; Keywords: internal, mouse
9 9
97 '(menu-item "New Frame" make-frame-command 97 '(menu-item "New Frame" make-frame-command
98 :visible (fboundp 'make-frame-command) 98 :visible (fboundp 'make-frame-command)
99 :help "Open a new frame")) 99 :help "Open a new frame"))
100 100
101 (define-key menu-bar-file-menu [one-window] 101 (define-key menu-bar-file-menu [one-window]
102 '(menu-item "Unsplit Windows" delete-other-windows 102 '(menu-item "Remove Splits" delete-other-windows
103 :enable (not (one-window-p t nil)) 103 :enable (not (one-window-p t nil))
104 :help "Make selected window fill its frame")) 104 :help "Selected window grows to fill the whole frame"))
105 105
106 (define-key menu-bar-file-menu [split-window] 106 (define-key menu-bar-file-menu [split-window]
107 '(menu-item "Split Window" split-window-vertically 107 '(menu-item "Split Window" split-window-vertically
108 :help "Split selected window in two")) 108 :help "Split selected window in two windows"))
109 109
110 (define-key menu-bar-file-menu [separator-window] 110 (define-key menu-bar-file-menu [separator-window]
111 '(menu-item "--")) 111 '(menu-item "--"))
112 112
113 (define-key menu-bar-file-menu [ps-print-region] 113 (define-key menu-bar-file-menu [ps-print-region]
157 (or (buffer-modified-p) 157 (or (buffer-modified-p)
158 (not (verify-visited-file-modtime 158 (not (verify-visited-file-modtime
159 (current-buffer)))))) 159 (current-buffer))))))
160 :help "Re-read current buffer from its file")) 160 :help "Re-read current buffer from its file"))
161 (define-key menu-bar-file-menu [write-file] 161 (define-key menu-bar-file-menu [write-file]
162 '(menu-item "Save Buffer As..." write-file 162 '(menu-item "Save As..." write-file
163 :enable (not (window-minibuffer-p 163 :enable (not (window-minibuffer-p
164 (frame-selected-window menu-updating-frame))) 164 (frame-selected-window menu-updating-frame)))
165 :help "Write current buffer to another file")) 165 :help "Write current buffer to another file"))
166 (define-key menu-bar-file-menu [save-buffer] 166 (define-key menu-bar-file-menu [save-buffer]
167 '(menu-item "Save (current buffer)" save-buffer 167 '(menu-item "Save" save-buffer
168 :enable (and (buffer-modified-p) 168 :enable (and (buffer-modified-p)
169 (buffer-file-name) 169 (buffer-file-name)
170 (not (window-minibuffer-p 170 (not (window-minibuffer-p
171 (frame-selected-window menu-updating-frame)))) 171 (frame-selected-window menu-updating-frame))))
172 :help "Save current buffer to its file")) 172 :help "Save current buffer to its file"))
173 173
174 (define-key menu-bar-file-menu [separator-save] 174 (define-key menu-bar-file-menu [separator-save]
175 '(menu-item "--")) 175 '(menu-item "--"))
176 176
177 (define-key menu-bar-file-menu [kill-buffer] 177 (define-key menu-bar-file-menu [kill-buffer]
178 '(menu-item "Close (current buffer)" kill-this-buffer 178 '(menu-item "Close" kill-this-buffer
179 :enable (kill-this-buffer-enabled-p) 179 :enable (kill-this-buffer-enabled-p)
180 :help "Discard current buffer")) 180 :help "Discard (kill) current buffer"))
181 (define-key menu-bar-file-menu [insert-file] 181 (define-key menu-bar-file-menu [insert-file]
182 '(menu-item "Insert File..." insert-file 182 '(menu-item "Insert File..." insert-file
183 :enable (not (window-minibuffer-p 183 :enable (not (window-minibuffer-p
184 (frame-selected-window menu-updating-frame))) 184 (frame-selected-window menu-updating-frame)))
185 :help "Insert another file into current buffer")) 185 :help "Insert another file into current buffer"))
192 '(menu-item "Open File..." find-file-existing 192 '(menu-item "Open File..." find-file-existing
193 :enable (not (window-minibuffer-p 193 :enable (not (window-minibuffer-p
194 (frame-selected-window menu-updating-frame))) 194 (frame-selected-window menu-updating-frame)))
195 :help "Read an existing file into an Emacs buffer")) 195 :help "Read an existing file into an Emacs buffer"))
196 (define-key menu-bar-file-menu [new-file] 196 (define-key menu-bar-file-menu [new-file]
197 '(menu-item "New File..." find-file 197 '(menu-item "Visit New File..." find-file
198 :enable (not (window-minibuffer-p 198 :enable (not (window-minibuffer-p
199 (frame-selected-window menu-updating-frame))) 199 (frame-selected-window menu-updating-frame)))
200 :help "Read or create a file and edit it")) 200 :help "Read or create a file and edit it"))
201 201
202 202
639 (let ((need-save nil)) 639 (let ((need-save nil))
640 ;; These are set with menu-bar-make-mm-toggle, which does not 640 ;; These are set with menu-bar-make-mm-toggle, which does not
641 ;; put on a customized-value property. 641 ;; put on a customized-value property.
642 (dolist (elt '(line-number-mode column-number-mode size-indication-mode 642 (dolist (elt '(line-number-mode column-number-mode size-indication-mode
643 cua-mode show-paren-mode transient-mark-mode 643 cua-mode show-paren-mode transient-mark-mode
644 global-font-lock-mode blink-cursor-mode)) 644 global-font-lock-mode blink-cursor-mode
645 display-time-mode display-battery-mode))
645 (and (customize-mark-to-save elt) 646 (and (customize-mark-to-save elt)
646 (setq need-save t))) 647 (setq need-save t)))
647 ;; These are set with `customize-set-variable'. 648 ;; These are set with `customize-set-variable'.
648 (dolist (elt '(scroll-bar-mode 649 (dolist (elt '(scroll-bar-mode
649 debug-on-quit debug-on-error 650 debug-on-quit debug-on-error
650 tooltip-mode menu-bar-mode tool-bar-mode 651 tooltip-mode menu-bar-mode tool-bar-mode
651 save-place uniquify-buffer-name-style fringe-mode 652 save-place uniquify-buffer-name-style fringe-mode
652 fringe-indicators case-fold-search 653 indicate-empty-lines indicate-buffer-boundaries
653 display-time-mode auto-compression-mode 654 case-fold-search
654 current-language-environment default-input-method 655 current-language-environment default-input-method
655 ;; Saving `text-mode-hook' is somewhat questionable, 656 ;; Saving `text-mode-hook' is somewhat questionable,
656 ;; as we might get more than we bargain for, if 657 ;; as we might get more than we bargain for, if
657 ;; other code may has added hooks as well. 658 ;; other code may has added hooks as well.
658 ;; Nonetheless, not saving it would like be confuse 659 ;; Nonetheless, not saving it would like be confuse
698 "Show the size of the buffer in the mode line")) 699 "Show the size of the buffer in the mode line"))
699 700
700 (define-key menu-bar-showhide-menu [linecolumn-separator] 701 (define-key menu-bar-showhide-menu [linecolumn-separator]
701 '("--")) 702 '("--"))
702 703
704 (define-key menu-bar-showhide-menu [showhide-battery]
705 (menu-bar-make-mm-toggle display-battery-mode
706 "Battery Status"
707 "Display battery status information in mode line"))
708
703 (define-key menu-bar-showhide-menu [showhide-date-time] 709 (define-key menu-bar-showhide-menu [showhide-date-time]
704 (menu-bar-make-mm-toggle display-time-mode 710 (menu-bar-make-mm-toggle display-time-mode
705 "Date, Time and Mail" 711 "Time, Load and Mail"
706 "Display date, time, mail status in mode line")) 712 "Display time, system load averages and \
713 mail status in mode line"))
707 714
708 (define-key menu-bar-showhide-menu [datetime-separator] 715 (define-key menu-bar-showhide-menu [datetime-separator]
709 '("--")) 716 '("--"))
710 717
711 (define-key menu-bar-showhide-menu [showhide-speedbar] 718 (define-key menu-bar-showhide-menu [showhide-speedbar]
715 . (and (boundp 'speedbar-frame) 722 . (and (boundp 'speedbar-frame)
716 (frame-live-p (symbol-value 'speedbar-frame)) 723 (frame-live-p (symbol-value 'speedbar-frame))
717 (frame-visible-p 724 (frame-visible-p
718 (symbol-value 'speedbar-frame)))))) 725 (symbol-value 'speedbar-frame))))))
719 726
720 727 (defvar menu-bar-showhide-fringe-menu (make-sparse-keymap "Fringe"))
721 (defvar menu-bar-showhide-fringe-ind-menu (make-sparse-keymap "Indicators")) 728
722 729 (defvar menu-bar-showhide-fringe-ind-menu
723 ;; The real definition is in fringe.el. 730 (make-sparse-keymap "Buffer boundaries"))
724 ;; This is to prevent errors in the :radio conditions below. 731
725 (setq fringe-indicators nil) 732 (defun menu-bar-showhide-fringe-ind-customize ()
726 733 "Show customization buffer for `indicate-buffer-boundaries'."
727 (defun menu-bar-showhide-fringe-ind-empty () 734 (interactive)
728 "Display empty line indicators in the left or right fringe." 735 (customize-variable 'indicate-buffer-boundaries))
729 (interactive) 736
730 (require 'fringe) 737 (define-key menu-bar-showhide-fringe-ind-menu [customize]
731 (customize-set-variable 'fringe-indicators 'empty)) 738 '(menu-item "Other (Customize)"
732 739 menu-bar-showhide-fringe-ind-customize
733 (define-key menu-bar-showhide-fringe-ind-menu [empty] 740 :help "Additional choices available through Custom buffer"
734 '(menu-item "Empty lines only" menu-bar-showhide-fringe-ind-empty 741 :visible (display-graphic-p)))
735 :help "Show empty line indicators in fringe" 742
743 (defun menu-bar-showhide-fringe-ind-mixed ()
744 "Display top and bottom indicators in opposite fringes, arrows in right."
745 (interactive)
746 (customize-set-variable 'indicate-buffer-boundaries
747 '((t . right) (top . left))))
748
749 (define-key menu-bar-showhide-fringe-ind-menu [mixed]
750 '(menu-item "Opposite, Arrows Right" menu-bar-showhide-fringe-ind-mixed
751 :help
752 "Show top/bottom indicators in opposite fringes, arrows in right"
736 :visible (display-graphic-p) 753 :visible (display-graphic-p)
737 :button (:radio . (eq fringe-indicators 'empty)))) 754 :button (:radio . (eq indicate-buffer-boundaries
738 755 '((t . right) (top . left))))))
739 (defun menu-bar-showhide-fringe-ind-mixed ()
740 "Display top and bottom indicators in opposite fringes, arrow in right."
741 (interactive)
742 (require 'fringe)
743 (customize-set-variable 'fringe-indicators 'mixed))
744
745 (define-key menu-bar-showhide-fringe-ind-menu [mixed]
746 '(menu-item "Opposite, arrows right" menu-bar-showhide-fringe-ind-mixed
747 :help "Show top/bottom indicators in opposite fringes, arrows in right"
748 :visible (display-graphic-p)
749 :button (:radio . (eq fringe-indicators 'mixed))))
750 756
751 (defun menu-bar-showhide-fringe-ind-box () 757 (defun menu-bar-showhide-fringe-ind-box ()
752 "Display top and bottom indicators in opposite fringes." 758 "Display top and bottom indicators in opposite fringes."
753 (interactive) 759 (interactive)
754 (require 'fringe) 760 (customize-set-variable 'indicate-buffer-boundaries
755 (customize-set-variable 'fringe-indicators 'box)) 761 '((top . left) (bottom . right))))
756 762
757 (define-key menu-bar-showhide-fringe-ind-menu [box] 763 (define-key menu-bar-showhide-fringe-ind-menu [box]
758 '(menu-item "Opposite, no arrows" menu-bar-showhide-fringe-ind-box 764 '(menu-item "Opposite, No Arrows" menu-bar-showhide-fringe-ind-box
759 :help "Show top/bottom indicators in opposite fringes, no arrows" 765 :help "Show top/bottom indicators in opposite fringes, no arrows"
760 :visible (display-graphic-p) 766 :visible (display-graphic-p)
761 :button (:radio . (eq fringe-indicators 'box)))) 767 :button (:radio . (eq indicate-buffer-boundaries
768 '((top . left) (bottom . right))))))
762 769
763 (defun menu-bar-showhide-fringe-ind-right () 770 (defun menu-bar-showhide-fringe-ind-right ()
764 "Display fringe indicators in the right fringe." 771 "Display buffer boundaries and arrows in the right fringe."
765 (interactive) 772 (interactive)
766 (require 'fringe) 773 (customize-set-variable 'indicate-buffer-boundaries 'right))
767 (customize-set-variable 'fringe-indicators 'right))
768 774
769 (define-key menu-bar-showhide-fringe-ind-menu [right] 775 (define-key menu-bar-showhide-fringe-ind-menu [right]
770 '(menu-item "In right fringe" menu-bar-showhide-fringe-ind-right 776 '(menu-item "In Right Fringe" menu-bar-showhide-fringe-ind-right
771 :help "Show indicators in right fringe" 777 :help "Show buffer boundaries and arrows in right fringe"
772 :visible (display-graphic-p) 778 :visible (display-graphic-p)
773 :button (:radio . (eq fringe-indicators 'right)))) 779 :button (:radio . (eq indicate-buffer-boundaries 'right))))
774 780
775 (defun menu-bar-showhide-fringe-ind-left () 781 (defun menu-bar-showhide-fringe-ind-left ()
776 "Display fringe indicators in the left fringe." 782 "Display buffer boundaries and arrows in the left fringe."
777 (interactive) 783 (interactive)
778 (require 'fringe) 784 (customize-set-variable 'indicate-buffer-boundaries 'left))
779 (customize-set-variable 'fringe-indicators 'left))
780 785
781 (define-key menu-bar-showhide-fringe-ind-menu [left] 786 (define-key menu-bar-showhide-fringe-ind-menu [left]
782 '(menu-item "In left fringe" menu-bar-showhide-fringe-ind-left 787 '(menu-item "In Left Fringe" menu-bar-showhide-fringe-ind-left
783 :help "Show indicators in left fringe" 788 :help "Show buffer boundaries and arrows in left fringe"
784 :visible (display-graphic-p) 789 :visible (display-graphic-p)
785 :button (:radio . (eq fringe-indicators 'left)))) 790 :button (:radio . (eq indicate-buffer-boundaries 'left))))
786 791
787 (defun menu-bar-showhide-fringe-ind-none () 792 (defun menu-bar-showhide-fringe-ind-none ()
788 "Do not display any fringe indicators." 793 "Do not display any buffer boundary indicators."
789 (interactive) 794 (interactive)
790 (require 'fringe) 795 (customize-set-variable 'indicate-buffer-boundaries nil))
791 (customize-set-variable 'fringe-indicators nil))
792 796
793 (define-key menu-bar-showhide-fringe-ind-menu [none] 797 (define-key menu-bar-showhide-fringe-ind-menu [none]
794 '(menu-item "No indicators" menu-bar-showhide-fringe-ind-none 798 '(menu-item "No Indicators" menu-bar-showhide-fringe-ind-none
795 :help "Hide all fringe indicators" 799 :help "Hide all buffer boundary indicators and arrows"
796 :visible (display-graphic-p) 800 :visible (display-graphic-p)
797 :button (:radio . (eq fringe-indicators nil)))) 801 :button (:radio . (eq indicate-buffer-boundaries nil))))
798 802
799 803 (define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind]
800 804 (list 'menu-item "Buffer Boundaries" menu-bar-showhide-fringe-ind-menu
801 (defvar menu-bar-showhide-fringe-menu (make-sparse-keymap "Fringe")) 805 :visible `(display-graphic-p)
806 :help "Indicate buffer boundaries in fringe"))
807
808 (define-key menu-bar-showhide-fringe-menu [indicate-empty-lines]
809 (menu-bar-make-toggle toggle-indicate-empty-lines indicate-empty-lines
810 "Empty Line Indicators"
811 "Indicating of empty lines %s"
812 "Indicate trailing empty lines in fringe"))
802 813
803 (defun menu-bar-showhide-fringe-menu-customize () 814 (defun menu-bar-showhide-fringe-menu-customize ()
804 "Show customization buffer for `fringe-mode'." 815 "Show customization buffer for `fringe-mode'."
805 (interactive) 816 (interactive)
806 (customize-variable 'fringe-mode)) 817 (customize-variable 'fringe-mode))
807 818
808 (define-key menu-bar-showhide-fringe-menu [customize] 819 (define-key menu-bar-showhide-fringe-menu [customize]
809 '(menu-item "Customize" menu-bar-showhide-fringe-menu-customize 820 '(menu-item "Customize Fringe" menu-bar-showhide-fringe-menu-customize
810 :help "Detailed customization of fringe" 821 :help "Detailed customization of fringe"
811 :visible (display-graphic-p))) 822 :visible (display-graphic-p)))
812 823
813 (defun menu-bar-showhide-fringe-menu-customize-reset () 824 (defun menu-bar-showhide-fringe-menu-customize-reset ()
814 "Reset the fringe mode: display fringes on both sides of a window." 825 "Reset the fringe mode: display fringes on both sides of a window."
815 (interactive) 826 (interactive)
816 (customize-set-variable 'fringe-mode nil)) 827 (customize-set-variable 'fringe-mode nil))
817
818 (define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind]
819 (list 'menu-item "Indicators" menu-bar-showhide-fringe-ind-menu
820 :visible `(display-graphic-p)
821 :help "Select fringe mode"))
822
823 ;; The real definition is in fringe.el.
824 ;; This is to prevent errors in the :radio conditions below.
825 (setq fringe-mode nil)
826 828
827 (define-key menu-bar-showhide-fringe-menu [default] 829 (define-key menu-bar-showhide-fringe-menu [default]
828 '(menu-item "Default" menu-bar-showhide-fringe-menu-customize-reset 830 '(menu-item "Default" menu-bar-showhide-fringe-menu-customize-reset
829 :help "Default width fringe on both left and right side" 831 :help "Default width fringe on both left and right side"
830 :visible (display-graphic-p) 832 :visible (display-graphic-p)
973 "Blinking Cursor" 975 "Blinking Cursor"
974 "Whether the cursor blinks (Blink Cursor mode)")) 976 "Whether the cursor blinks (Blink Cursor mode)"))
975 (define-key menu-bar-options-menu [cursor-separator] 977 (define-key menu-bar-options-menu [cursor-separator]
976 '("--")) 978 '("--"))
977 979
978 (define-key menu-bar-options-menu [toggle-auto-compression]
979 '(menu-item "Automatic File De/compression"
980 auto-compression-mode
981 :help "Transparently decompress compressed files"
982 :button (:toggle . (rassq 'jka-compr-handler
983 file-name-handler-alist))))
984
985 (define-key menu-bar-options-menu [save-place] 980 (define-key menu-bar-options-menu [save-place]
986 (menu-bar-make-toggle toggle-save-place-globally save-place 981 (menu-bar-make-toggle toggle-save-place-globally save-place
987 "Save Place in Files between Sessions" 982 "Save Place in Files between Sessions"
988 "Saving place in files %s" 983 "Saving place in files %s"
989 "Visit files of previous session when restarting Emacs" 984 "Visit files of previous session when restarting Emacs"
1005 1000
1006 (define-key menu-bar-options-menu [edit-options-separator] 1001 (define-key menu-bar-options-menu [edit-options-separator]
1007 '("--")) 1002 '("--"))
1008 (define-key menu-bar-options-menu [cua-mode] 1003 (define-key menu-bar-options-menu [cua-mode]
1009 (menu-bar-make-mm-toggle cua-mode 1004 (menu-bar-make-mm-toggle cua-mode
1010 "C-x/C-c/C-v cut and paste (CUA)" 1005 "C-x/C-c/C-v Cut and Paste (CUA)"
1011 "Use C-z/C-x/C-c/C-v keys for undo/cut/copy/paste")) 1006 "Use C-z/C-x/C-c/C-v keys for undo/cut/copy/paste"))
1012 1007
1013 (define-key menu-bar-options-menu [case-fold-search] 1008 (define-key menu-bar-options-menu [case-fold-search]
1014 (menu-bar-make-toggle toggle-case-fold-search case-fold-search 1009 (menu-bar-make-toggle toggle-case-fold-search case-fold-search
1015 "Case-Insensitive Search" 1010 "Case-Insensitive Search"
1251 :help "Display documentation of variable/option")) 1246 :help "Display documentation of variable/option"))
1252 (define-key menu-bar-describe-menu [describe-function] 1247 (define-key menu-bar-describe-menu [describe-function]
1253 '(menu-item "Describe Function..." describe-function 1248 '(menu-item "Describe Function..." describe-function
1254 :help "Display documentation of function/command")) 1249 :help "Display documentation of function/command"))
1255 (define-key menu-bar-describe-menu [describe-key-1] 1250 (define-key menu-bar-describe-menu [describe-key-1]
1256 '(menu-item "Describe Key..." describe-key 1251 '(menu-item "Describe Key or Mouse Operation..." describe-key
1257 ;; Users typically don't identify keys and menu items... 1252 ;; Users typically don't identify keys and menu items...
1258 :help "Display documentation of command bound to a \ 1253 :help "Display documentation of command bound to a \
1259 key (or menu-item)")) 1254 key, a click, or a menu-item"))
1260 (define-key menu-bar-describe-menu [describe-key]
1261 '(menu-item "What's This? " describe-key
1262 ;; Users typically don't identify keys and menu items...
1263 :help "Display documentation of command bound to a \
1264 key (or menu-item)"))
1265 (define-key menu-bar-describe-menu [describe-mode] 1255 (define-key menu-bar-describe-menu [describe-mode]
1266 '(menu-item "Describe Buffer Modes" describe-mode 1256 '(menu-item "Describe Buffer Modes" describe-mode
1267 :help "Describe this buffer's major and minor mode")) 1257 :help "Describe this buffer's major and minor mode"))
1268 1258
1269 (defvar menu-bar-apropos-menu (make-sparse-keymap "Apropos")) 1259 (defvar menu-bar-apropos-menu (make-sparse-keymap "Apropos"))