Mercurial > emacs
annotate lisp/emulation/crisp.el @ 17876:6e27f660a0be
(Fcall_interactively): Use num_input_events.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 19 May 1997 03:21:06 +0000 |
parents | dd277f4e6737 |
children | 08062aad7ef6 |
rev | line source |
---|---|
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
1 ;;; crisp.el --- Emulator for CRiSP and Brief key bindings |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
2 |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
3 ;; Copyright (C) 1997 Free Software Foundation, Inc. |
17361 | 4 |
5 ;; Author: Gary D. Foster <Gary.Foster@corp.sun.com> | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
6 ;; Keywords: emulations |
17361 | 7 |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
24 | |
25 ;;; Commentary: | |
26 | |
27 ;; This file provides keybindings and minor functions to duplicate the | |
28 ;; functionality and finger-feel of the CRiSP/Brief editor. This | |
29 ;; package is designed to facilitate transitioning from Brief to Emacs | |
30 ;; with a minimum amount of hassles. | |
31 | |
32 ;; Enable this package by putting the following in your .emacs | |
33 ;; (require 'crisp) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
34 ;; and use M-x crisp-mode to toggle it on or off. |
17361 | 35 |
17599
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
36 ;; This package will automatically default to loading the scroll-all.el |
17361 | 37 ;; package unless you put (setq crisp-load-scroll-lock nil) in your |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
38 ;; .emacs. If this feature is enabled, it will bind Meta-F1 to the |
17599
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
39 ;; scroll-all mode toggle. |
17361 | 40 |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
41 ;; Also, the default keybindings for this mode override the Meta-x key to |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
42 ;; make it exit the editor. If you don't like this change, you can |
17361 | 43 ;; prevent this key from being rebound with |
44 ;; (setq crisp-override-meta-x nil) in your .emacs. | |
45 | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
46 ;; Finally, if you want to change the string displayed in the modeline |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
47 ;; when this mode is in effect, override the definition of |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
48 ;; `crisp-mode-modeline-string' in your .emacs. The default value is |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
49 ;; " *Crisp*" which may be a bit lengthy if you have a lot of things |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
50 ;; being displayed there. |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
51 |
17361 | 52 ;; All these overrides should go *before* the (require 'crisp) statement. |
53 | |
54 ;; local variables | |
55 | |
56 (defvar crisp-mode-map (copy-keymap (current-global-map)) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
57 "Local keymap for CRiSP emulation mode. |
17361 | 58 All the emulation bindings are done here instead of globally.") |
59 | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
60 (defvar crisp-mode-modeline-string " *CRiSP*" |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
61 "String to display in the modeline when CRiSP emulation mode is enabled.") |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
62 |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
63 (defvar crisp-mode-original-keymap (copy-keymap (current-global-map)) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
64 "The original keymap before CRiSP emulation mode remaps anything. |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
65 This keymap is restored when CRiSP emulation mode is disabled.") |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
66 |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
67 (defvar crisp-mode-enabled nil |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
68 "Track status of CRiSP emulation mode. |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
69 A value of nil means CRiSP mode is not enabled. A value of t |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
70 indicates CRiSP mode is enabled.") |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
71 |
17361 | 72 (defvar crisp-override-meta-x t |
73 "Controls overriding the normal Emacs M-x key binding in the CRiSP emulator. | |
74 Normally the CRiSP emulator rebinds M-x to save-buffers-exit-emacs | |
75 and provides the usual M-x functionality on the F10 key. | |
76 | |
77 If this variable is nil when you start the CRiSP emulator, it | |
78 does not alter the binding of M-x.") | |
79 | |
17599
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
80 (defvar crisp-load-scroll-all t |
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
81 "Controls loading of the Scroll All mode in the CRiSP emulator. |
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
82 Its Default behavior is to load and enable the Scroll All minor mode |
17361 | 83 package when enabling the CRiSP emulator. |
84 | |
85 If this variable is nil when you start the CRiSP emulator, it | |
17599
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
86 does not load Scroll All.") |
17361 | 87 |
88 (defvar crisp-load-hook nil | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
89 "Hooks to run after loadint the CRiSP emulator package.") |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
90 |
17599
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
91 (defvar crisp-version "crisp.el release 1.1/$Revision: 1.3 $" |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
92 "The release number and RCS version for the CRiSP emulator.") |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
93 |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
94 (if (string-match "XEmacs\\Lucid" emacs-version) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
95 (add-minor-mode 'crisp-mode-enabled crisp-mode-modeline-string) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
96 (or (assq 'crisp-mode-enabled minor-mode-alist) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
97 (setq minor-mode-alist |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
98 (cons '(crisp-mode-enabled crisp-mode-modeline-string) minor-mode-alist)))) |
17361 | 99 |
100 ;; and now the keymap defines | |
101 | |
102 (define-key crisp-mode-map [(f1)] 'other-window) | |
103 | |
104 (define-key crisp-mode-map [(f2) (down)] 'enlarge-window) | |
105 (define-key crisp-mode-map [(f2) (left)] 'shrink-window-horizontally) | |
106 (define-key crisp-mode-map [(f2) (right)] 'enlarge-window-horizontally) | |
107 (define-key crisp-mode-map [(f2) (up)] 'shrink-window) | |
108 (define-key crisp-mode-map [(f3) (down)] 'split-window-vertically) | |
109 (define-key crisp-mode-map [(f3) (right)] 'split-window-horizontally) | |
110 | |
111 (define-key crisp-mode-map [(f4)] 'delete-window) | |
112 (define-key crisp-mode-map [(control f4)] 'delete-other-windows) | |
113 | |
114 (define-key crisp-mode-map [(f5)] 'search-forward-regexp) | |
115 (define-key crisp-mode-map [(f19)] 'search-forward-regexp) | |
116 (define-key crisp-mode-map [(meta f5)] 'search-backward-regexp) | |
117 | |
118 (define-key crisp-mode-map [(f6)] 'query-replace) | |
119 | |
120 (define-key crisp-mode-map [(f7)] 'start-kbd-macro) | |
121 (define-key crisp-mode-map [(meta f7)] 'end-kbd-macro) | |
122 | |
123 (define-key crisp-mode-map [(f8)] 'call-last-kbd-macro) | |
124 (define-key crisp-mode-map [(meta f8)] 'save-kbd-macro) | |
125 | |
126 (define-key crisp-mode-map [(f9)] 'find-file) | |
127 (define-key crisp-mode-map [(meta f9)] 'load-library) | |
128 | |
129 (define-key crisp-mode-map [(f10)] 'execute-extended-command) | |
130 (define-key crisp-mode-map [(meta f10)] 'compile) | |
131 | |
132 (define-key crisp-mode-map [(SunF37)] 'kill-buffer) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
133 (define-key crisp-mode-map [(kp-add)] 'x-copy-primary-selection) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
134 (define-key crisp-mode-map [(kp-subtract)] 'x-kill-primary-selection) |
17361 | 135 (define-key crisp-mode-map [(insert)] 'x-yank-clipboard-selection) |
136 (define-key crisp-mode-map [(f16)] 'x-copy-primary-selection) ; copy on Sun5 kbd | |
137 (define-key crisp-mode-map [(f20)] 'x-kill-primary-selection) ; cut on Sun5 kbd | |
138 (define-key crisp-mode-map [(f18)] 'x-yank-clipboard-selection) ; paste on Sun5 kbd | |
139 | |
140 (define-key crisp-mode-map [(meta d)] (lambda () (interactive) (beginning-of-line) (kill-line))) | |
141 (define-key crisp-mode-map [(meta e)] 'find-file) | |
142 (define-key crisp-mode-map [(meta g)] 'goto-line) | |
143 (define-key crisp-mode-map [(meta h)] 'help) | |
144 (define-key crisp-mode-map [(meta i)] 'overwrite-mode) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
145 (define-key crisp-mode-map [(meta j)] 'bookmark-jump) |
17361 | 146 (define-key crisp-mode-map [(meta u)] 'advertised-undo) |
147 (define-key crisp-mode-map [(f14)] 'advertised-undo) | |
148 (define-key crisp-mode-map [(meta w)] 'save-buffer) | |
149 (if | |
150 (eq crisp-override-meta-x 't) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
151 (define-key crisp-mode-map [(meta x)] 'save-buffers-kill-emacs)) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
152 (define-key crisp-mode-map [(meta ?0)] (lambda () (interactive) (bookmark-set "0"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
153 (define-key crisp-mode-map [(meta ?1)] (lambda () (interactive) (bookmark-set "1"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
154 (define-key crisp-mode-map [(meta ?2)] (lambda () (interactive) (bookmark-set "2"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
155 (define-key crisp-mode-map [(meta ?3)] (lambda () (interactive) (bookmark-set "3"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
156 (define-key crisp-mode-map [(meta ?4)] (lambda () (interactive) (bookmark-set "4"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
157 (define-key crisp-mode-map [(meta ?5)] (lambda () (interactive) (bookmark-set "5"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
158 (define-key crisp-mode-map [(meta ?6)] (lambda () (interactive) (bookmark-set "6"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
159 (define-key crisp-mode-map [(meta ?7)] (lambda () (interactive) (bookmark-set "7"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
160 (define-key crisp-mode-map [(meta ?8)] (lambda () (interactive) (bookmark-set "8"))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
161 (define-key crisp-mode-map [(meta ?9)] (lambda () (interactive) (bookmark-set "9"))) |
17361 | 162 |
163 (define-key crisp-mode-map [(shift right)] 'fkey-forward-word) | |
164 (define-key crisp-mode-map [(shift left)] 'fkey-backward-word) | |
165 (define-key crisp-mode-map [(shift delete)] 'kill-word) | |
166 (define-key crisp-mode-map [(shift backspace)] 'backward-kill-word) | |
167 (define-key crisp-mode-map [(control left)] 'backward-word) | |
168 (define-key crisp-mode-map [(control right)] 'forward-word) | |
169 | |
170 (define-key crisp-mode-map [(home)] 'crisp-home) | |
171 (define-key crisp-mode-map [(end)] 'crisp-end) | |
172 | |
173 (defun crisp-home () | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
174 "\"Home\" point, the way CRiSP would do it. |
17361 | 175 The first use moves point to beginning of the line. Second |
176 consecutive use moves point to beginning of the screen. Third | |
177 consecutive use moves point to the beginning of the buffer." | |
178 (interactive nil) | |
179 (cond | |
180 ((and (eq last-command 'crisp-home) (eq last-last-command 'crisp-home)) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
181 (goto-char (point-min))) |
17361 | 182 ((eq last-command 'crisp-home) |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
183 (move-to-window-line 0)) |
17361 | 184 (t |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
185 (beginning-of-line))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
186 (setq last-last-command last-command)) |
17361 | 187 |
188 (defun crisp-end () | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
189 "\"End\" point, the way CRiSP would do it. |
17361 | 190 The first use moves point to end of the line. Second |
191 consecutive use moves point to the end of the screen. Third | |
192 consecutive use moves point to the end of the buffer." | |
193 (interactive nil) | |
194 (cond | |
195 ((and (eq last-command 'crisp-end) (eq last-last-command 'crisp-end)) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
196 (goto-char (point-max))) |
17361 | 197 ((eq last-command 'crisp-end) |
198 (move-to-window-line -1) | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
199 (end-of-line)) |
17361 | 200 (t |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
201 (end-of-line))) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
202 (setq last-last-command last-command)) |
17361 | 203 |
204 ;; Now enable the mode | |
205 | |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
206 (defun crisp-mode () |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
207 "Toggle CRiSP emulation minor mode." |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
208 (interactive nil) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
209 (setq crisp-mode-enabled (not crisp-mode-enabled)) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
210 (cond |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
211 ((eq crisp-mode-enabled 't) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
212 (use-global-map crisp-mode-map) |
17599
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
213 (if crisp-load-scroll-all |
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
214 (require 'scroll-all)) |
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
215 (if (featurep 'scroll-all) |
dd277f4e6737
(crisp-load-scroll-all): Renamed from ...-lock.
Richard M. Stallman <rms@gnu.org>
parents:
17448
diff
changeset
|
216 (define-key crisp-mode-map [(meta f1)] 'scroll-all-mode)) |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
217 (run-hooks 'crisp-load-hook)) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
218 ((eq crisp-mode-enabled 'nil) |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
219 (use-global-map crisp-mode-original-keymap)))) |
17361 | 220 |
221 (provide 'crisp) | |
222 | |
17367 | 223 ;;; crisp.el ends here |
17448
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
224 |
b0fb37e0d14b
Install the proper version.
Richard M. Stallman <rms@gnu.org>
parents:
17367
diff
changeset
|
225 |