Mercurial > hg > xemacs-beta
diff lisp/hyperbole/wrolo-menu.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 85ec50267440 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/hyperbole/wrolo-menu.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,165 @@ +;;!emacs +;; +;; FILE: wrolo-menu.el +;; SUMMARY: Pulldown and popup menus of Hyperbole rolodex commands. +;; USAGE: GNU Emacs Lisp Library +;; KEYWORDS: hypermedia, matching, mouse +;; +;; AUTHOR: Bob Weiner +;; ORG: Motorola, Inc., PPG +;; +;; ORIG-DATE: 28-Oct-94 at 10:59:44 +;; LAST-MOD: 31-Oct-95 at 18:45:24 by Bob Weiner +;; +;; Copyright (C) 1994-1995 Free Software Foundation, Inc. +;; +;; This file is part of Hyperbole. +;; +;; DESCRIPTION: +;; DESCRIP-END. + +;;; ************************************************************************ +;;; Public variables +;;; ************************************************************************ + +;;; This definition is used by InfoDock and XEmacs. +(defconst infodock-wrolo-menu + '("Rolodex" + ["Manual" (id-tool-invoke id-man-rolodex) t] + "----" + ["Add-Entry" (id-tool-invoke 'rolo-add) t] + ["Delete-Entry" (id-tool-invoke 'rolo-kill) t] + ["Display-Prior-Matches" (id-tool-invoke 'rolo-display-matches) t] + ["Edit-Entry" (id-tool-invoke 'rolo-edit) t] + ["Edit-Rolodex" (id-tool-invoke + '(progn (require 'wrolo) + (find-file (car rolo-file-list)) + (setq buffer-read-only nil))) + t] + ["Insert-Entry-at-Point" (id-tool-invoke 'rolo-yank) t] + ["Mail-to-Address" (id-tool-invoke 'rolo-mail-to) t] + ["Search-for-Regexp" (id-tool-invoke 'rolo-grep) t] + ["Search-for-String" (id-tool-invoke 'rolo-fgrep) t] + ["Search-for-Word" (id-tool-invoke 'rolo-word) t] + ["Sort-Entries" (id-tool-invoke 'rolo-sort) t] + )) + +;;; This definition is used by InfoDock only. +(defconst id-menubar-wrolo + (list + '("Wrolo" + ["Help" describe-mode t] + ["Manual" (id-info "(hyperbole.info)Rolo Keys") t] + "----" + ["Toggle-Read-Only" toggle-read-only t] + ["Write (Save as)" write-file t] + "----" + ["Quit" (id-tool-quit '(kill-buffer nil)) t] + ) + '["Edit-Entry-at-Point" rolo-edit-entry t] + ["Mail-to-Address" (id-tool-invoke 'rolo-mail-to) t] + '("Move" + ["Scroll-Backward" scroll-down t] + ["Scroll-Forward" scroll-up t] + ["To-Beginning" beginning-of-buffer t] + ["To-End" end-of-buffer t] + "----" + ["To-Next-Entry" outline-next-visible-heading t] + ["To-Next-Same-Level" outline-forward-same-level t] + ["To-Previous-Entry" outline-previous-visible-heading t] + ["To-Previous-Same-Level" outline-backward-same-level t] + ["Up-a-Level" outline-up-heading t] + ) + '("Outline" + ["Hide (Collapse)" hide-subtree t] + ["Show (Expand)" show-subtree t] + ["Show-All" show-all t] + ["Show-Only-First-Line" hide-body t] + ) + '["Next-Match" rolo-next-match t] + '["Previous-Match" rolo-previous-match t] + infodock-wrolo-menu + )) + +;;; This definition is used by InfoDock and XEmacs. +(defconst id-popup-wrolo-menu + (list + "Wrolo" + '["Help" describe-mode t] + '["Manual" (id-info "(hyperbole.info)Rolo Keys") t] + "----" + '["Edit-Entry-at-Point" rolo-edit-entry t] + "----" + '["Next-Match" rolo-next-match t] + '["Previous-Match" rolo-previous-match t] + "----" + '("Move" + ["Scroll-Backward" scroll-down t] + ["Scroll-Forward" scroll-up t] + ["To-Beginning" beginning-of-buffer t] + ["To-End" end-of-buffer t] + "----" + ["To-Next-Entry" outline-next-visible-heading t] + ["To-Next-Same-Level" outline-forward-same-level t] + ["To-Previous-Entry" outline-previous-visible-heading t] + ["To-Previous-Same-Level" outline-backward-same-level t] + ["Up-a-Level" outline-up-heading t] + ) + '("Outline" + ["Hide (Collapse)" hide-subtree t] + ["Show (Expand)" show-subtree t] + ["Show-All" show-all t] + ["Show-Only-First-Line" hide-body t] + ) + infodock-wrolo-menu + "----" + '["Quit" (id-tool-quit 'rolo-quit) t] + )) + +;;; ************************************************************************ +;;; Public functions +;;; ************************************************************************ + +;;; This definition is used only by XEmacs and Emacs19. +(defun wrolo-menubar-menu () + "Add a Hyperbole Rolodex menu to the rolodex match buffer menubar." + (cond ((fboundp 'popup-mode-menu) + (setq mode-popup-menu id-popup-wrolo-menu)) + (hyperb:lemacs-p + (define-key wrolo-mode-map 'button3 'wrolo-popup-menu)) + (t ;; hyperb:emacs19-p + (define-key wrolo-mode-map [down-mouse-3] 'wrolo-popup-menu) + (define-key wrolo-mode-map [mouse-3] nil))) + (if (and (boundp 'current-menubar) + (or hyperb:emacs19-p current-menubar) + (not (car (find-menu-item current-menubar '("Wrolo"))))) + (progn + (set-buffer-menubar (copy-sequence current-menubar)) + (if (fboundp 'add-submenu) + (add-submenu nil id-popup-wrolo-menu) + (add-menu nil (car id-popup-wrolo-menu) + (cdr id-popup-wrolo-menu)))))) + +;;; This definition is used only by XEmacs and Emacs19. +(defun wrolo-popup-menu (event) + "Popup the Hyperbole Rolodex match buffer menu." + (interactive "@e") + (mouse-set-point event) + (if (fboundp 'popup-mode-menu) + (popup-mode-menu) + (popup-menu id-popup-wrolo-menu))) + +(cond ((null hyperb:window-system)) + ((fboundp 'id-menubar-set) + ;; InfoDock under a window system + (require 'id-menubars) + (id-menubar-set 'wrolo-mode 'id-menubar-wrolo)) + (hyperb:lemacs-p + ;; XEmacs under a window system + (add-hook 'wrolo-mode-hook 'wrolo-menubar-menu)) + (hyperb:emacs19-p + ;; Emacs 19 under a window system + (require 'lmenu) + (add-hook 'wrolo-mode-hook 'wrolo-menubar-menu))) + +(provide 'wrolo-menu)