1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
|
;;; Ilisp-easy-menu.el --- (easy)menu's on Emacs for Ilisp
;;; Copyright (C) 1996 Holger Schauer
;;;
;;; This file is part of ILISP.
;;; Please refer to the file COPYING for copyrights and licensing
;;; information.
;;; Please refer to the file ACKNOWLEGDEMENTS for an (incomplete) list
;;; of present and past contributors.
;;;
;;; $Id: ilisp-cl-easy-menu.el,v 1.3 2002-06-03 23:36:59 wbd Exp $
;; Author: Holger Schauer <Holger.Schauer@gmd.de>
;; Maintainer: Holger.Schauer@gmd.de
;; Keywords: lisp ilisp extensions menu easymenu
;; Version 0.2
;; Status: Should work with any Emacs and easymenu.el (as by Per Abrahamsen)
;; Created: 1996-10-08
;; Last modified: 1996-10-15 (that's 15th October 1996, folks)
;; Where to get it: http://www.uni-koblenz.de/~schauer/uniemacs.html
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, you can either send email to this
;; program's maintainer or write to: The Free Software Foundation,
;; Inc.; 59 Temple Place, Suite 330; Boston, MA 02111-1307, USA.
;;; Commentary:
;; This file and it's extensions have been named ilisp-xemacs-menu before.
;; As it is ensured now to work with any Emacs with easymenu the file
;; itself and all relevant names (of commands and variables) are renamed.
;; Use this file as an extension to Ilisp 5.7/5.8
;; (seee http://www.cs.cmu.edu/~campbell/ilisp/index.html)
;; Put it in a place where (X)Emacs can find it and augment your
;; .emacs like the following to use it.
;; (load-library "ilisp-easy-menu")
;; This needs to be loaded prior to Ilisp !
;; This should give you the menu in any source code buffer and any inferior
;; ilisp buffer. Be careful: the menu is initialized with add-hook
;; on ilisp-mode-hook and lisp-mode-hook, so if you setq these two
;; hooks afterwards you won't get the menu.
;;
;; If you want to use it with Emacs (not XEmacs) you will want to get rid
;; of the old menu. You can do so by applying the following patches (to
;; Ilisp 5.8 - for 5.7 check for ilisp-update-menu and the loading of the
;; menu, i.e. ilisp-menu and ilisp-mnb)
;; For ilisp.el:
;; 185c185,187
;< (if (not (member +ilisp-emacs-version-id+ '(xemacs lucid-19 lucid-19-new)))
;---
;> (if (and
;> (not (member +ilisp-emacs-version-id+ '(xemacs lucid-19 lucid-19-new)))
;> (not (featurep 'ilisp-easy-menu)))
;; For ilisp-utl.el:
;127c127,129
;< (if (not (member +ilisp-emacs-version-id+ '(xemacs lucid-19 lucid-19-new)))
;---
;> (if (and (not
;> (member +ilisp-emacs-version-id+ '(xemacs lucid-19 lucid-19-new)))
;> (not (featurep 'ilisp-easy-menu)))
(require 'easymenu)
(eval-when (load compile eval)
(when (and ilisp-*use-hyperspec-interface-p*
(not (featurep 'hyperspec)))
(load-library "extra/hyperspec")))
(defvar ilisp-cl-easy-menu
`("Ilisp"
[ "Load File" load-file-lisp t ]
[ "Run Ilisp" run-ilisp t ]
"--"
("Evaluate"
[ "Eval region" eval-region-lisp t ]
[ "Eval defun" eval-defun-lisp t ]
[ "Eval next sexp" eval-next-sexp-lisp t ]
;; [ "Eval last sexp" eval-last-sexp-lisp t ]
[ "Eval changes" eval-changes-lisp t ]
)
("Evaluate and Go"
[ "Eval region" eval-region-and-go-lisp t ]
[ "Eval defun" eval-defun-and-go-lisp t ]
[ "Eval next sexp" eval-next-sexp-and-go-lisp t ]
;; [ "Eval last sexp" eval-last-sexp-and-go-lisp t ]
)
("Compile"
[ "File" compile-file-lisp t ]
[ "Defun" compile-defun-lisp t ]
[ "Defun and go" compile-defun-and-go-lisp t ]
[ "Region" compile-region-lisp t ]
[ "Region and go" compile-region-and-go-lisp t ]
[ "Compile changes" compile-changes-lisp t ]
)
"--"
("Editing"
[ "Edit definitions" edit-definitions-lisp t ]
[ "Edit next def." next-definition-lisp t ]
[ "Edit callers" edit-callers-lisp t ]
[ "Edit next caller" next-caller-lisp t ]
[ "Insert arguments" arglist-lisp t ]
"--"
[ "Find unbalanced paren" find-unbalanced-lisp t ]
[ "Close all parens" close-all-lisp t ]
[ "Close and send lisp" close-and-send-lisp t ]
"--"
[ "Reindent" reindent-lisp t ]
[ "Indent sexp" indent-sexp-ilisp t ]
[ "Indent for comment" lisp-indent-for-comment t ]
[ "Comment region" comment-region-lisp t ]
"--"
[ "Search in Files" search-lisp t ]
"--"
[ "Kill sexp" kill-sexp t ]
[ "Kill last sexp" backward-kill-sexp t ]
"--"
[ "Macroexpand" macroexpand-lisp t ]
[ "Macroexpand-1" macroexpand-1-lisp t ]
"--"
[ "Begin of def" beginning-of-defun-lisp t ]
[ "End of defun" end-of-defun-lisp t ]
)
("Documentation"
[ "Documentation" documentation-lisp t ]
[ "Describe" describe-lisp t ]
[ "Inspect" inspect-lisp t ]
[ "Argument List" arglist-lisp t ] ; Just a test.
"--"
;; With which var can I test if 'fi' is really loaded? Can I just
;; use FEATUREP?
[ "Clman-apropos" fi:clman-apropos nil ]
[ "Hyperspec - apropos"
hyperspec-lookup
,ilisp-*use-hyperspec-interface-p* ]
)
"--"
("Package"
"--"
[ "Package" package-lisp t ]
[ "Set Lisp Package" set-package-lisp t ]
[ "Set Buffer Package" set-buffer-package-lisp t ]
)
"--"
("Misc"
;; [ "Reset Ilisp" reset-ilisp t ]
[ "Select Ilisp" select-ilisp t ]
[ "Switch to lisp" switch-to-lisp t ]
[ "Abort commands" abort-commands-lisp t ]
[ "Status of Lisp" status-lisp t ]
"--"
[ "Mark change" mark-change-lisp t ]
[ "List changes" list-changes-lisp t ]
[ "Clear changes" clear-changes-lisp t ]
"--"
[ "Trace defun" trace-defun-lisp t ]
)
"--"
[ "Reset Ilisp Connection" reset-ilisp t ]
[ "Repair Ilisp Connection" repair-ilisp t ]
)
)
;;; insert "Debug" Menu if ilisp-*enable-ild-support-p*
;;; enable the commands only if inside the debugging loop
;;;
;;; 2000-10-10 17:34:05 rurban
(defconst ilisp-ild-easy-menu
`("Debug"
[ "Abort" ild-abort (ilisp-ild-p) ]
[ "Continue" ild-continue (ilisp-ild-p) ]
[ "Next" ild-next (ilisp-ild-p) ]
[ "Previous" ild-previous (ilisp-ild-p) ]
[ "Top" ild-top (ilisp-ild-p) ]
[ "Bottom" ild-bottom (ilisp-ild-p) ]
[ "Backtrace" ild-backtrace (ilisp-ild-p) ]
[ "Locals" ild-locals (ilisp-ild-p) ]
[ "Local" ild-local (ilisp-ild-p) ]
[ "Return" ild-return (ilisp-ild-p) ]
[ "Retry" ild-retry (ilisp-ild-p) ]
[ "Trap on exit" ild-trap-on-exit (ilisp-ild-p) ]
"--"
[ "Fast lisp" fast-lisp t ]
[ "Slow lisp" slow-lisp t ]
)
)
(defun ilisp-ild-p ()
t)
(defun ilisp-insert-menu (menu where what)
"Insert WHAT into MENU after WHERE"
(if (position what menu)
menu
(let ((i (position (assoc where menu) menu)))
(setq i (1+ i)
menu (append (butlast menu (- (length menu) i))
(list what)
(nthcdr i menu))))))
(if ilisp-*enable-ild-support-p*
(setq ilisp-cl-easy-menu
(ilisp-insert-menu ilisp-cl-easy-menu "Misc" ilisp-ild-easy-menu)))
;;; ilisp-update-menu
;;;
;;; 19990818 Marco Antoniotti
(defun ilisp-update-menu (status)
;; Backward compatibility with old keymap based menus.
;; A no-op for the time being.
)
(defun ilisp-redefine-menu ()
(easy-menu-remove ilisp-cl-easy-menu)
(easy-menu-define menubar-ilisp ilisp-mode-map
"Ilisp commands"
ilisp-cl-easy-menu)
(easy-menu-add ilisp-cl-easy-menu 'ilisp-mode-map)
)
(provide 'ilisp-cl-easy-menu)
;;; Hooks to add the menu.
;;;
;;; Notes:
;;; 19990818 Marco Antoniotti
;;; Since I could have installed a Scheme menu before a CL one, I
;;; could be forced to remove the previous menu. Now the code does not do
;;; this, but it should.
(add-hook 'ilisp-mode-hook
(lambda ()
(when (featurep 'easymenu)
(easy-menu-define menubar-ilisp
ilisp-mode-map
"Ilisp commands"
ilisp-cl-easy-menu)
(easy-menu-add ilisp-cl-easy-menu 'ilisp-mode-map)
)))
(add-hook 'lisp-mode-hook
(lambda ()
(when (featurep 'easymenu)
(easy-menu-define menubar-lisp-ilisp
lisp-mode-map
"lisp commands"
ilisp-cl-easy-menu)
(when (boundp 'lisp-menu)
(easy-menu-remove lisp-menu))
(easy-menu-add ilisp-cl-easy-menu 'lisp-mode-map)
)))
;;; end of file-- ilisp-cl-easy-menu.el --
|