Mercurial > hg > xemacs-beta
diff lisp/sunpro/sunpro-menubar.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 538048ae2ab8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/sunpro/sunpro-menubar.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,234 @@ +;;; sunpro-menubar.el --- Initialize the SunPro menubar + +;; Copyright (C) 1993, 1994 Sun Microsystems, Inc + +;; Author: Aaron Endelman <endelman@Eng.Sun.COM> +;; Maintainer: Vladimir Ivanovic <vladimir@Eng.Sun.COM> +;; Created: 93/09/13 15:16:24 + +;; Keywords: SunPro menubar initialization + +;;; Commentary: +;; Creates the default SunPro menubars. + +;;; To Do: + +;;; Code: + +(defconst sunpro-menubar + (purecopy-menubar ;the simple, new user menubar + (list + '("File" + ["New" sunpro-new-buffer t] + ["Open:" find-file t] + ["Include File:" insert-file t] + "-----" + ["Save" save-buffer t nil] + ["Save As:" write-file t] + ["Revert..." revert-buffer t nil] + "-----" + ["Print" lpr-buffer t nil] + "-----" + ["Close" delete-frame t] + ["Exit XEmacs" save-buffers-kill-emacs t] + ) + + '("Edit" + ["Undo" advertised-undo t] + "-----" + ["Cut" x-kill-primary-selection t] + ["Copy" x-copy-primary-selection t] + ["Paste" x-yank-clipboard-selection t] + ["Delete" x-delete-primary-selection t] + "-----" + ["Select Block" mark-paragraph t] + ["Select All" mark-whole-buffer t] + ) + + '("View" + ["New View" make-frame t] + "-----" + ["Split Window" (split-window) t] + ["Unsplit Window" delete-other-windows t] + ["Close Buffer" (kill-buffer nil) t nil] + "-----! before list all buffers" + ["List All Buffers" list-buffers t] + ) + + '("Find" + ["Forward:" sunpro-search-forward t] + ["Backward:" sunpro-search-backward t] + ["And Replace:" sunpro-query-replace t] + ) + + ;; Copy the options menu from the default menubar + (car (find-menu-item default-menubar '("Options"))) + + '("Utilities" + ["Cancel Command" (keyboard-quit) t] + "-----" + ["Execute Macro" call-last-kbd-macro last-kbd-macro] + ["Start Macro Recording" start-kbd-macro (not defining-kbd-macro)] + ["End Macro Recording" end-kbd-macro defining-kbd-macro] + "-----" + ["Spell" ispell-buffer t] + ["Sort" sort-lines t] + "-----" + ["Format Paragraph " fill-paragraph t] + "-----" + ["Goto Line:" goto-line t] + ) + + ;; the following is supposed to be here! It ensures that the + ;; Help item is always the rightmost item. + + nil ; the partition: menus after this are flushright + + '("Help" ["About XEmacs..." about-xemacs t] + "-----" + ["XEmacs WWW Page" xemacs-www-page t] + ["XEmacs FAQ via WWW" xemacs-www-faq t] + "-----" + ["Info" info t] + ["Describe Mode" describe-mode t] + ["Hyper Apropos..." hyper-apropos t] + ["Command Apropos..." command-apropos t] + ["Full Apropos..." apropos t] + ["List Keybindings" describe-bindings t] + ["Describe Key..." describe-key t] + ["Describe Function..." describe-function t] + ["Describe Variable..." describe-variable t] + "-----" + ["Unix Manual..." manual-entry t] + ["XEmacs Tutorial" help-with-tutorial t] + ["XEmacs News" view-emacs-news t] + )))) + +(set-menubar sunpro-menubar) + +(defconst programmer-menu '(["Programmer Menus" + (toggle-programmer-menus) + :style toggle + :selected programmer-menus-p] + ["-----! before save options" nil t])) +(setq save-options-menu-item + (car (find-menu-item default-menubar '("Options" "Save Options")))) +(delete-menu-item '("Options" "Save Options")) +(add-menu () "Options" (append + (cdr (car + (find-menu-item default-menubar '("Options")))) + programmer-menu + (list save-options-menu-item))) + +;;; +;;; helper commands +;;; + +(defun sunpro-new-buffer () + (interactive) + (switch-to-buffer (generate-new-buffer "Untitled"))) + +(defun sunpro-new-window () + (interactive) + (switch-to-buffer-other-frame (generate-new-buffer "Untitled"))) + +(defun sunpro-clone-buffer () + (interactive) + (let + ((old (current-buffer))) + (switch-to-buffer (generate-new-buffer (buffer-name old))) + (insert-buffer old))) + +(defun sunpro-search-forward () + (interactive) + (if isearch-mode (isearch-repeat-forward) + (x-isearch-maybe-with-region))) + +(defun sunpro-search-backward () + (interactive) + (if isearch-mode (isearch-repeat-backward) + (x-isearch-maybe-with-region t))) + +(put 'sunpro-search-forward 'isearch-command t) +(put 'sunpro-search-backward 'isearch-command t) + +(defun sunpro-query-replace () + (interactive) + (call-interactively 'query-replace)) + +(defun sunpro-menu-quit () + "Abort minibuffer input if any." + (while (not (zerop (minibuffer-depth))) + (abort-recursive-edit))) + +(defvar programmer-menus-p nil) +(defvar sccs-or-vc-menus 'sccs + "Choose to use the SCCS or the VC menu.") + +(defun toggle-programmer-menus () + (interactive) + (if programmer-menus-p + (progn + (if (equal sccs-or-vc-menus 'sccs) + (delete-menu-item '("SCCS")) + (delete-menu-item '("VC"))) + (delete-menu-item '("SPARCworks")) + (delete-menu-item '("Options" "SPARCworks")) + (delete-menu-item '("Options" "-----! before save options")) + (delete-menu-item '("Help" "SPARCworks")) + (setq programmer-menus-p nil)) + (progn + (require 'eos-load "sun-eos-load") + (eos::start) + (if (equal sccs-or-vc-menus 'sccs) + (progn + (delete-menu-item '("VC")) + (require 'sccs) + (add-menu '() "SCCS" (cdr sccs-menu))) + (progn + (require 'vc) + (delete-menu-item '("SCCS")) + (add-menu '() "VC" vc-default-menu))) + (setq programmer-menus-p t)))) + +(defun sunpro-build-buffers-menu-hook () + "For use as a value of activate-menubar-hook. +This function changes the contents of the \"View\" menu to add +at the end the current set of buffers. Only the most-recently-used few buffers +will be listed on the menu, for efficiency reasons. You can control how +many buffers will be shown by setting `buffers-menu-max-size'. +You can control the text of the menu items by redefining the function +`format-buffers-menu-line'." + (let ((buffer-menu (car (find-menu-item current-menubar '("View")))) + buffers) + (if (not buffer-menu) + nil + (setq buffer-menu (cdr buffer-menu)) + (setq buffers (buffer-list)) + + (if (and (integerp buffers-menu-max-size) + (> buffers-menu-max-size 1)) + (if (> (length buffers) buffers-menu-max-size) + (setcdr (nthcdr buffers-menu-max-size buffers) nil))) + + (setq buffers (build-buffers-menu-internal buffers)) + (setq buffers (append (delq nil buffers))) + ;; slightly (only slightly) more efficient to not install the menubar + ;; if it hasn't visibly changed. + (let ((tail (member "-----! before list all buffers" (cdr buffer-menu))) + ) + (if tail + (if (equal buffers (cdr tail)) + t ; return t meaning "no change" + (setcdr tail buffers) + nil) + ;; only the first time + (add-menu nil "View" (append buffer-menu + '("-----! before list all buffers") + buffers)) + nil + ))))) + +(add-hook 'activate-menubar-hook 'sunpro-build-buffers-menu-hook) + +;;; sunpro-menubar.el ends here