comparison lisp/x11/x-menubar.el @ 74:54cc21c15cbb r20-0b32

Import from CVS: tag r20-0b32
author cvs
date Mon, 13 Aug 2007 09:04:33 +0200
parents 131b0175ea99
children c0c698873ce1
comparison
equal deleted inserted replaced
73:e2d7a37b7c8d 74:54cc21c15cbb
542 ["XEmacs WWW Page" xemacs-www-page t] 542 ["XEmacs WWW Page" xemacs-www-page t]
543 ["Newest XEmacs FAQ via WWW" xemacs-www-faq t] 543 ["Newest XEmacs FAQ via WWW" xemacs-www-faq t]
544 ["XEmacs FAQ (local)" xemacs-local-faq t] 544 ["XEmacs FAQ (local)" xemacs-local-faq t]
545 ["XEmacs Tutorial" help-with-tutorial t] 545 ["XEmacs Tutorial" help-with-tutorial t]
546 ["XEmacs News" view-emacs-news t] 546 ["XEmacs News" view-emacs-news t]
547 ["Sample" 547 ["Sample" (find-file
548 (find-file (expand-file-name "sample.emacs" data-directory)) 548 (expand-file-name "sample.emacs"
549 data-directory))
549 t ".emacs"] 550 t ".emacs"]
550 ["Sample" 551 ["Sample" (find-file
551 (find-file (expand-file-name "sample.Xdefaults" data-directory)) 552 (expand-file-name "sample.Xdefaults"
553 data-directory))
552 t ".Xdefaults"] 554 t ".Xdefaults"]
553 "-----" 555 "-----"
554 ["Info (Detailed Docs)" info t] 556 ["Info (Detailed Docs)" info t]
555 ("Lookup in Info" 557 ("Lookup in Info"
556 ["Key/Mouse Binding..." Info-goto-emacs-key-command-node t] 558 ["Key/Mouse Binding..." Info-goto-emacs-key-command-node t]
726 of each buffer line. If this is false, then there will be only one command: 728 of each buffer line. If this is false, then there will be only one command:
727 select that buffer.") 729 select that buffer.")
728 730
729 (defvar buffers-menu-submenus-for-groups-p nil 731 (defvar buffers-menu-submenus-for-groups-p nil
730 "*If true, the buffers menu will contain one submenu per group of buffers, 732 "*If true, the buffers menu will contain one submenu per group of buffers,
731 if a grouping function is specified in `buffers-menu-grouping-function'.") 733 if a grouping function is specified in `buffers-menu-grouping-function'.
734 If this is an integer, do not build submenus if the number of buffers
735 is not larger than this value.")
732 736
733 (defvar buffers-menu-switch-to-buffer-function 'switch-to-buffer 737 (defvar buffers-menu-switch-to-buffer-function 'switch-to-buffer
734 "*The function to call to select a buffer from the buffers menu. 738 "*The function to call to select a buffer from the buffers menu.
735 `switch-to-buffer' is a good choice, as is `pop-to-buffer'.") 739 `switch-to-buffer' is a good choice, as is `pop-to-buffer'.")
736 740
846 (buffer-name (current-buffer))))))) 850 (buffer-name (current-buffer)))))))
847 851
848 (defsubst build-buffers-menu-internal (buffers) 852 (defsubst build-buffers-menu-internal (buffers)
849 (let (name line) 853 (let (name line)
850 (mapcar 854 (mapcar
851 (lambda (buffer) 855 #'(lambda (buffer)
852 (if (eq buffer t) 856 (if (eq buffer t)
853 "---" 857 "---"
854 (setq line (funcall buffers-menu-format-buffer-line-function 858 (setq line (funcall buffers-menu-format-buffer-line-function
855 buffer)) 859 buffer))
856 (if complex-buffers-menu-p 860 (if complex-buffers-menu-p
857 (delq nil 861 (delq nil
858 (list line 862 (list line
859 (vector "Switch to Buffer" 863 (vector "Switch to Buffer"
860 (list buffers-menu-switch-to-buffer-function 864 (list buffers-menu-switch-to-buffer-function
861 (setq name (buffer-name buffer))) 865 (setq name (buffer-name buffer)))
862 t) 866 t)
863 (if (eq buffers-menu-switch-to-buffer-function 867 (if (eq buffers-menu-switch-to-buffer-function
864 'switch-to-buffer) 868 'switch-to-buffer)
865 (vector "Switch to Buffer, Other Frame" 869 (vector "Switch to Buffer, Other Frame"
866 (list 'switch-to-buffer-other-frame 870 (list 'switch-to-buffer-other-frame
867 (setq name (buffer-name buffer))) 871 (setq name (buffer-name buffer)))
868 t) 872 t)
869 nil) 873 nil)
870 (if (and (buffer-modified-p buffer) 874 (if (and (buffer-modified-p buffer)
871 (buffer-file-name buffer)) 875 (buffer-file-name buffer))
872 (vector "Save Buffer" 876 (vector "Save Buffer"
873 (list 'buffer-menu-save-buffer name) t) 877 (list 'buffer-menu-save-buffer name) t)
874 ["Save Buffer" nil nil] 878 ["Save Buffer" nil nil]
875 ) 879 )
876 (vector "Save As..." 880 (vector "Save As..."
877 (list 'buffer-menu-write-file name) t) 881 (list 'buffer-menu-write-file name) t)
878 (vector "Delete Buffer" (list 'kill-buffer name) 882 (vector "Delete Buffer" (list 'kill-buffer name)
879 t))) 883 t)))
880 ;; ### We don't want buffer names to be translated, 884 ;; ### We don't want buffer names to be translated,
881 ;; ### so we put the buffer name in the suffix. 885 ;; ### so we put the buffer name in the suffix.
882 ;; ### Also, avoid losing with non-ASCII buffer names. 886 ;; ### Also, avoid losing with non-ASCII buffer names.
883 ;; ### We still lose, however, if complex-buffers-menu-p. --mrb 887 ;; ### We still lose, however, if complex-buffers-menu-p. --mrb
884 (vector "" 888 (vector ""
885 (list buffers-menu-switch-to-buffer-function 889 (list buffers-menu-switch-to-buffer-function
886 (buffer-name buffer)) 890 (buffer-name buffer))
887 t line)))) 891 t line))))
888 buffers))) 892 buffers)))
889 893
890 (defun buffers-menu-filter (menu) 894 (defun buffers-menu-filter (menu)
891 "This is the menu filter for the top-level buffers \"Buffers\" menu. 895 "This is the menu filter for the top-level buffers \"Buffers\" menu.
892 It dynamically creates a list of buffers to use as the contents of the menu. 896 It dynamically creates a list of buffers to use as the contents of the menu.
896 items by redefining the function `format-buffers-menu-line'." 900 items by redefining the function `format-buffers-menu-line'."
897 (let ((buffers (delete-if buffers-menu-omit-function (buffer-list)))) 901 (let ((buffers (delete-if buffers-menu-omit-function (buffer-list))))
898 (and (integerp buffers-menu-max-size) 902 (and (integerp buffers-menu-max-size)
899 (> buffers-menu-max-size 1) 903 (> buffers-menu-max-size 1)
900 (> (length buffers) buffers-menu-max-size) 904 (> (length buffers) buffers-menu-max-size)
901 ;; shorten list of buffers 905 ;; shorten list of buffers (not with submenus!)
906 (not (and buffers-menu-grouping-function
907 buffers-menu-submenus-for-groups-p))
902 (setcdr (nthcdr buffers-menu-max-size buffers) nil)) 908 (setcdr (nthcdr buffers-menu-max-size buffers) nil))
903 (if buffers-menu-sort-function 909 (if buffers-menu-sort-function
904 (setq buffers (sort buffers buffers-menu-sort-function))) 910 (setq buffers (sort buffers buffers-menu-sort-function)))
905 (if (and buffers-menu-grouping-function 911 (if (and buffers-menu-grouping-function
906 buffers-menu-submenus-for-groups-p) 912 buffers-menu-submenus-for-groups-p
913 (or (not (integerp buffers-menu-submenus-for-groups-p))
914 (> (length buffers) buffers-menu-submenus-for-groups-p)))
907 (let (groups groupnames current-group) 915 (let (groups groupnames current-group)
908 (mapl 916 (mapl
909 #'(lambda (sublist) 917 #'(lambda (sublist)
910 (let ((groupname (funcall buffers-menu-grouping-function 918 (let ((groupname (funcall buffers-menu-grouping-function
911 (car sublist) (cadr sublist)))) 919 (car sublist) (cadr sublist))))
1088 (face-property face property)) 1096 (face-property face property))
1089 `(add-spec-list-to-specifier 1097 `(add-spec-list-to-specifier
1090 (face-property ',face ',property) 1098 (face-property ',face ',property)
1091 ',(save-options-specifier-spec-list 1099 ',(save-options-specifier-spec-list
1092 face property)))) 1100 face property))))
1093 built-in-face-specifiers))) 1101 (delq 'display-table
1102 (copy-sequence
1103 built-in-face-specifiers)))))
1094 (face-list)))) 1104 (face-list))))
1095 1105
1096 ;; Mule-specific: 1106 ;; Mule-specific:
1097 (if (featurep 'mule) 1107 (if (featurep 'mule)
1098 `(if (featurep 'mule) 1108 `(if (featurep 'mule)