comparison lisp/menu-bar.el @ 47296:8d11b5360234

(menu-bar-make-mm-toggle): New macro. (showhide-menu-bar, showhide-toolbar, menu-bar-toggle-auto-compression) (toggle-highlight-paren-mode, toggle-global-lazy-font-lock-mode): Remove. Use the minor mode function directly instead. (menu-bar-mode): Add message and customize-mark-as-set and return the new value as do other minor modes.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 06 Sep 2002 20:27:59 +0000
parents 58ccd45ac06b
children 055681adf287
comparison
equal deleted inserted replaced
47295:5c0a2b139b90 47296:8d11b5360234
549 '(menu-item "Top-level Customization Group" customize 549 '(menu-item "Top-level Customization Group" customize
550 :help "The master group called `Emacs'")) 550 :help "The master group called `Emacs'"))
551 551
552 ;(defvar menu-bar-preferences-menu (make-sparse-keymap "Preferences")) 552 ;(defvar menu-bar-preferences-menu (make-sparse-keymap "Preferences"))
553 553
554 (defmacro menu-bar-make-mm-toggle (fname doc help &optional props)
555 "Make a menu-item for a global minor mode toggle.
556 FNAME is the minor mode's name (variable and function).
557 DOC is the text to use the menu entry.
558 HELP is the text to use for the tooltip.
559 PROPS are additional properties."
560 `'(menu-item ,doc ',fname
561 ,@(if props props)
562 :help ,help
563 :button (:toggle . (and (default-boundp ',fname)
564 (default-value ',fname)))))
565
554 (defmacro menu-bar-make-toggle (name variable doc message help &optional props &rest body) 566 (defmacro menu-bar-make-toggle (name variable doc message help &optional props &rest body)
555 `(progn 567 `(progn
556 (defun ,name () 568 (defun ,name ()
557 ,(concat "Toggle whether to " (downcase (substring help 0 1)) 569 ,(concat "Toggle whether to " (downcase (substring help 0 1))
558 (substring help 1) ".") 570 (substring help 1) ".")
773 (define-key menu-bar-showhide-menu [showhide-scroll-bar] 785 (define-key menu-bar-showhide-menu [showhide-scroll-bar]
774 (list 'menu-item "Scroll-bar" menu-bar-showhide-scroll-bar-menu 786 (list 'menu-item "Scroll-bar" menu-bar-showhide-scroll-bar-menu
775 :visible `(display-graphic-p) 787 :visible `(display-graphic-p)
776 :help "Select scroll-bar mode")) 788 :help "Select scroll-bar mode"))
777 789
778 (defun showhide-menu-bar () 790 (define-key menu-bar-showhide-menu [menu-bar-mode]
779 "Toggle whether to turn menu-bar on/off." 791 '(menu-item "Menu-bar" menu-bar-mode
780 (interactive)
781 (menu-bar-mode)
782 (if menu-bar-mode
783 (message "Menu-bar mode enabled.")
784 (message "Menu-bar mode disabled. Use M-x menu-bar-mode to make the menu bar appear."))
785 (customize-mark-as-set 'menu-bar-mode))
786
787 (define-key menu-bar-showhide-menu [showhide-menu-bar]
788 '(menu-item "Menu-bar" showhide-menu-bar
789 :help "Toggle menu-bar on/off" 792 :help "Toggle menu-bar on/off"
790 :button (:toggle . menu-bar-mode))) 793 :button (:toggle . menu-bar-mode)))
791 794
792 (defun showhide-toolbar ()
793 "Toggle whether to turn tool-bar on/off."
794 (interactive)
795 (if (tool-bar-mode)
796 (message "Tool-bar mode enabled.")
797 (message "Tool-bar mode disabled."))
798 (customize-mark-as-set 'tool-bar-mode))
799
800 (define-key menu-bar-showhide-menu [showhide-tool-bar] 795 (define-key menu-bar-showhide-menu [showhide-tool-bar]
801 (list 'menu-item "Tool-bar" 'showhide-toolbar 796 (list 'menu-item "Tool-bar" 'tool-bar-mode
802 :help "Turn tool-bar on/off" 797 :help "Turn tool-bar on/off"
803 :visible `(display-graphic-p) 798 :visible `(display-graphic-p)
804 :button `(:toggle . tool-bar-mode))) 799 :button `(:toggle . tool-bar-mode)))
805 800
806 (define-key menu-bar-options-menu [showhide] 801 (define-key menu-bar-options-menu [showhide]
837 "Enter Lisp debugger when an error is signaled")) 832 "Enter Lisp debugger when an error is signaled"))
838 (define-key menu-bar-options-menu [debugger-separator] 833 (define-key menu-bar-options-menu [debugger-separator]
839 '("--")) 834 '("--"))
840 (define-key menu-bar-options-menu [toggle-auto-compression] 835 (define-key menu-bar-options-menu [toggle-auto-compression]
841 '(menu-item "Automatic File De/compression" 836 '(menu-item "Automatic File De/compression"
842 menu-bar-toggle-auto-compression-mode 837 auto-compression-mode
843 :help "Transparently decompress compressed files" 838 :help "Transparently decompress compressed files"
844 :button (:toggle . (rassq 'jka-compr-handler 839 :button (:toggle . (rassq 'jka-compr-handler
845 file-name-handler-alist)))) 840 file-name-handler-alist))))
846
847 (defun menu-bar-toggle-auto-compression ()
848 "Toggle automatic file compression and uncompression.
849 With prefix argument ARG, turn auto compression on if positive, else off.
850 Returns the new status of auto compression (non-nil means on)."
851 (interactive)
852 (auto-compression-mode)
853 (customize-mark-as-set 'auto-compression-mode))
854 841
855 (define-key menu-bar-options-menu [save-place] 842 (define-key menu-bar-options-menu [save-place]
856 (menu-bar-make-toggle toggle-save-place-globally save-place 843 (menu-bar-make-toggle toggle-save-place-globally save-place
857 "Save Place in Files between Sessions" 844 "Save Place in Files between Sessions"
858 "Saving place in files %s" 845 "Saving place in files %s"
917 :button (:toggle . truncate-lines))) 904 :button (:toggle . truncate-lines)))
918 905
919 (define-key menu-bar-options-menu [highlight-separator] 906 (define-key menu-bar-options-menu [highlight-separator]
920 '("--")) 907 '("--"))
921 (define-key menu-bar-options-menu [highlight-paren-mode] 908 (define-key menu-bar-options-menu [highlight-paren-mode]
922 (menu-bar-make-toggle toggle-highlight-paren-mode show-paren-mode 909 (menu-bar-make-mm-toggle show-paren-mode
923 "Paren Match Highlighting" 910 "Paren Match Highlighting"
924 "Show Paren mode %s"
925 "Highlight matching/mismatched parentheses at cursor (Show Paren mode)")) 911 "Highlight matching/mismatched parentheses at cursor (Show Paren mode)"))
926 (define-key menu-bar-options-menu [transient-mark-mode] 912 (define-key menu-bar-options-menu [transient-mark-mode]
927 (menu-bar-make-toggle toggle-transient-mark-mode transient-mark-mode 913 (menu-bar-make-toggle toggle-transient-mark-mode transient-mark-mode
928 "Active Region Highlighting" 914 "Active Region Highlighting"
929 "Transient Mark mode %s" 915 "Transient Mark mode %s"
930 "Make text in active region stand out in color (Transient Mark mode)" 916 "Make text in active region stand out in color (Transient Mark mode)"
931 (:enable (not cua-mode)))) 917 (:enable (not cua-mode))))
932 (define-key menu-bar-options-menu [toggle-global-lazy-font-lock-mode] 918 (define-key menu-bar-options-menu [toggle-global-lazy-font-lock-mode]
933 (menu-bar-make-toggle toggle-global-lazy-font-lock-mode global-font-lock-mode 919 (menu-bar-make-mm-toggle global-font-lock-mode
934 "Syntax Highlighting" 920 "Syntax Highlighting"
935 "Global Font Lock mode %s" 921 "Colorize text based on language syntax (Global Font Lock mode)"))
936 "Colorize text based on language syntax (Global Font Lock mode)"))
937 922
938 923
939 ;; The "Tools" menu items 924 ;; The "Tools" menu items
940 925
941 (defun send-mail-item-name () 926 (defun send-mail-item-name ()
1613 "Toggle display of a menu bar on each frame. 1598 "Toggle display of a menu bar on each frame.
1614 This command applies to all frames that exist and frames to be 1599 This command applies to all frames that exist and frames to be
1615 created in the future. 1600 created in the future.
1616 With a numeric argument, if the argument is positive, 1601 With a numeric argument, if the argument is positive,
1617 turn on menu bars; otherwise, turn off menu bars." 1602 turn on menu bars; otherwise, turn off menu bars."
1618 (interactive "P") 1603 (interactive "P")
1619 1604
1620 ;; Make menu-bar-mode and default-frame-alist consistent. 1605 ;; Make menu-bar-mode and default-frame-alist consistent.
1621 (let ((default (assq 'menu-bar-lines default-frame-alist))) 1606 (let ((default (assq 'menu-bar-lines default-frame-alist)))
1622 (if default 1607 (if default
1623 (setq menu-bar-mode (not (eq (cdr default) 0))) 1608 (setq menu-bar-mode (not (eq (cdr default) 0)))
1624 (setq default-frame-alist 1609 (setq default-frame-alist
1625 (cons (cons 'menu-bar-lines (if menu-bar-mode 1 0)) 1610 (cons (cons 'menu-bar-lines (if menu-bar-mode 1 0))
1626 default-frame-alist)))) 1611 default-frame-alist))))
1627 1612
1628 ;; Toggle or set the mode, according to FLAG. 1613 ;; Toggle or set the mode, according to FLAG.
1629 (setq menu-bar-mode (if (null flag) (not menu-bar-mode) 1614 (setq menu-bar-mode (if (null flag) (not menu-bar-mode)
1630 (> (prefix-numeric-value flag) 0))) 1615 (> (prefix-numeric-value flag) 0)))
1631 1616
1632 ;; Apply it to default-frame-alist. 1617 ;; Apply it to default-frame-alist.
1633 (let ((parameter (assq 'menu-bar-lines default-frame-alist))) 1618 (let ((parameter (assq 'menu-bar-lines default-frame-alist)))
1634 (if (consp parameter) 1619 (if (consp parameter)
1635 (setcdr parameter (if menu-bar-mode 1 0)) 1620 (setcdr parameter (if menu-bar-mode 1 0))
1636 (setq default-frame-alist 1621 (setq default-frame-alist
1637 (cons (cons 'menu-bar-lines (if menu-bar-mode 1 0)) 1622 (cons (cons 'menu-bar-lines (if menu-bar-mode 1 0))
1638 default-frame-alist)))) 1623 default-frame-alist))))
1639 1624
1640 ;; Apply it to existing frames. 1625 ;; Apply it to existing frames.
1641 (let ((frames (frame-list))) 1626 (let ((frames (frame-list)))
1642 (while frames 1627 (while frames
1643 (let ((height (cdr (assq 'height (frame-parameters (car frames)))))) 1628 (let ((height (cdr (assq 'height (frame-parameters (car frames))))))
1644 (modify-frame-parameters (car frames) 1629 (modify-frame-parameters (car frames)
1645 (list (cons 'menu-bar-lines 1630 (list (cons 'menu-bar-lines
1646 (if menu-bar-mode 1 0)))) 1631 (if menu-bar-mode 1 0))))
1647 (modify-frame-parameters (car frames) 1632 (modify-frame-parameters (car frames)
1648 (list (cons 'height height)))) 1633 (list (cons 'height height))))
1649 (setq frames (cdr frames))))) 1634 (setq frames (cdr frames))))
1635
1636 (when (interactive-p)
1637 (if menu-bar-mode
1638 (message "Menu-bar mode enabled.")
1639 (message "Menu-bar mode disabled. Use M-x menu-bar-mode to make the menu bar appear."))
1640 (customize-mark-as-set 'menu-bar-mode))
1641
1642 menu-bar-mode)
1650 1643
1651 (provide 'menu-bar) 1644 (provide 'menu-bar)
1652 1645
1653 ;;; menu-bar.el ends here 1646 ;;; menu-bar.el ends here