Mercurial > emacs
comparison lisp/emulation/crisp.el @ 104923:360dda0c7586
* emulation/crisp.el (crisp-mode-map): Move initialization
into declaration.
(crisp-mode): Use define-minor-mode.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 11 Sep 2009 01:00:37 +0000 |
parents | c603ee2aac17 |
children | 1d1d5d9bd884 |
comparison
equal
deleted
inserted
replaced
104922:c603ee2aac17 | 104923:360dda0c7586 |
---|---|
62 (defgroup crisp nil | 62 (defgroup crisp nil |
63 "Emulator for CRiSP and Brief key bindings." | 63 "Emulator for CRiSP and Brief key bindings." |
64 :prefix "crisp-" | 64 :prefix "crisp-" |
65 :group 'emulations) | 65 :group 'emulations) |
66 | 66 |
67 (defvar crisp-mode-map (let ((map (make-sparse-keymap))) | 67 (defvar crisp-mode-map |
68 map) | 68 (let ((map (make-sparse-keymap))) |
69 (define-key map [(f1)] 'other-window) | |
70 | |
71 (define-key map [(f2) (down)] 'enlarge-window) | |
72 (define-key map [(f2) (left)] 'shrink-window-horizontally) | |
73 (define-key map [(f2) (right)] 'enlarge-window-horizontally) | |
74 (define-key map [(f2) (up)] 'shrink-window) | |
75 (define-key map [(f3) (down)] 'split-window-vertically) | |
76 (define-key map [(f3) (right)] 'split-window-horizontally) | |
77 | |
78 (define-key map [(f4)] 'delete-window) | |
79 (define-key map [(control f4)] 'delete-other-windows) | |
80 | |
81 (define-key map [(f5)] 'search-forward-regexp) | |
82 (define-key map [(f19)] 'search-forward-regexp) | |
83 (define-key map [(meta f5)] 'search-backward-regexp) | |
84 | |
85 (define-key map [(f6)] 'query-replace) | |
86 | |
87 (define-key map [(f7)] 'start-kbd-macro) | |
88 (define-key map [(meta f7)] 'end-kbd-macro) | |
89 | |
90 (define-key map [(f8)] 'call-last-kbd-macro) | |
91 (define-key map [(meta f8)] 'save-kbd-macro) | |
92 | |
93 (define-key map [(f9)] 'find-file) | |
94 (define-key map [(meta f9)] 'load-library) | |
95 | |
96 (define-key map [(f10)] 'execute-extended-command) | |
97 (define-key map [(meta f10)] 'compile) | |
98 | |
99 (define-key map [(SunF37)] 'kill-buffer) | |
100 (define-key map [(kp-add)] 'crisp-copy-line) | |
101 (define-key map [(kp-subtract)] 'crisp-kill-line) | |
102 ;; just to cover all the bases (GNU Emacs, for instance) | |
103 (define-key map [(f24)] 'crisp-kill-line) | |
104 (define-key map [(insert)] 'crisp-yank-clipboard) | |
105 (define-key map [(f16)] 'crisp-set-clipboard) ; copy on Sun5 kbd | |
106 (define-key map [(f20)] 'crisp-kill-region) ; cut on Sun5 kbd | |
107 (define-key map [(f18)] 'crisp-yank-clipboard) ; paste on Sun5 kbd | |
108 | |
109 (define-key map [(control f)] 'fill-paragraph-or-region) | |
110 (define-key map [(meta d)] (lambda () | |
111 (interactive) | |
112 (beginning-of-line) (kill-line))) | |
113 (define-key map [(meta e)] 'find-file) | |
114 (define-key map [(meta g)] 'goto-line) | |
115 (define-key map [(meta h)] 'help) | |
116 (define-key map [(meta i)] 'overwrite-mode) | |
117 (define-key map [(meta j)] 'bookmark-jump) | |
118 (define-key map [(meta l)] 'crisp-mark-line) | |
119 (define-key map [(meta m)] 'set-mark-command) | |
120 (define-key map [(meta n)] 'bury-buffer) | |
121 (define-key map [(meta p)] 'crisp-unbury-buffer) | |
122 (define-key map [(meta u)] 'undo) | |
123 (define-key map [(f14)] 'undo) | |
124 (define-key map [(meta w)] 'save-buffer) | |
125 (define-key map [(meta x)] 'crisp-meta-x-wrapper) | |
126 (define-key map [(meta ?0)] (lambda () | |
127 (interactive) | |
128 (bookmark-set "0"))) | |
129 (define-key map [(meta ?1)] (lambda () | |
130 (interactive) | |
131 (bookmark-set "1"))) | |
132 (define-key map [(meta ?2)] (lambda () | |
133 (interactive) | |
134 (bookmark-set "2"))) | |
135 (define-key map [(meta ?3)] (lambda () | |
136 (interactive) | |
137 (bookmark-set "3"))) | |
138 (define-key map [(meta ?4)] (lambda () | |
139 (interactive) | |
140 (bookmark-set "4"))) | |
141 (define-key map [(meta ?5)] (lambda () | |
142 (interactive) | |
143 (bookmark-set "5"))) | |
144 (define-key map [(meta ?6)] (lambda () | |
145 (interactive) | |
146 (bookmark-set "6"))) | |
147 (define-key map [(meta ?7)] (lambda () | |
148 (interactive) | |
149 (bookmark-set "7"))) | |
150 (define-key map [(meta ?8)] (lambda () | |
151 (interactive) | |
152 (bookmark-set "8"))) | |
153 (define-key map [(meta ?9)] (lambda () | |
154 (interactive) | |
155 (bookmark-set "9"))) | |
156 | |
157 (define-key map [(shift delete)] 'kill-word) | |
158 (define-key map [(shift backspace)] 'backward-kill-word) | |
159 (define-key map [(control left)] 'backward-word) | |
160 (define-key map [(control right)] 'forward-word) | |
161 | |
162 (define-key map [(home)] 'crisp-home) | |
163 (define-key map [(control home)] (lambda () | |
164 (interactive) | |
165 (move-to-window-line 0))) | |
166 (define-key map [(meta home)] 'beginning-of-line) | |
167 (define-key map [(end)] 'crisp-end) | |
168 (define-key map [(control end)] (lambda () | |
169 (interactive) | |
170 (move-to-window-line -1))) | |
171 (define-key map [(meta end)] 'end-of-line) | |
172 map) | |
69 "Local keymap for CRiSP emulation mode. | 173 "Local keymap for CRiSP emulation mode. |
70 All the bindings are done here instead of globally to try and be | 174 All the bindings are done here instead of globally to try and be |
71 nice to the world.") | 175 nice to the world.") |
72 | 176 |
73 (defcustom crisp-mode-modeline-string " *CRiSP*" | 177 (defcustom crisp-mode-modeline-string " *CRiSP*" |
149 (defun crisp-region-active () | 253 (defun crisp-region-active () |
150 "Compatibility function to test for an active region." | 254 "Compatibility function to test for an active region." |
151 (if (featurep 'xemacs) | 255 (if (featurep 'xemacs) |
152 zmacs-region-active-p | 256 zmacs-region-active-p |
153 mark-active)) | 257 mark-active)) |
154 | |
155 ;; and now the keymap defines | |
156 | |
157 (define-key crisp-mode-map [(f1)] 'other-window) | |
158 | |
159 (define-key crisp-mode-map [(f2) (down)] 'enlarge-window) | |
160 (define-key crisp-mode-map [(f2) (left)] 'shrink-window-horizontally) | |
161 (define-key crisp-mode-map [(f2) (right)] 'enlarge-window-horizontally) | |
162 (define-key crisp-mode-map [(f2) (up)] 'shrink-window) | |
163 (define-key crisp-mode-map [(f3) (down)] 'split-window-vertically) | |
164 (define-key crisp-mode-map [(f3) (right)] 'split-window-horizontally) | |
165 | |
166 (define-key crisp-mode-map [(f4)] 'delete-window) | |
167 (define-key crisp-mode-map [(control f4)] 'delete-other-windows) | |
168 | |
169 (define-key crisp-mode-map [(f5)] 'search-forward-regexp) | |
170 (define-key crisp-mode-map [(f19)] 'search-forward-regexp) | |
171 (define-key crisp-mode-map [(meta f5)] 'search-backward-regexp) | |
172 | |
173 (define-key crisp-mode-map [(f6)] 'query-replace) | |
174 | |
175 (define-key crisp-mode-map [(f7)] 'start-kbd-macro) | |
176 (define-key crisp-mode-map [(meta f7)] 'end-kbd-macro) | |
177 | |
178 (define-key crisp-mode-map [(f8)] 'call-last-kbd-macro) | |
179 (define-key crisp-mode-map [(meta f8)] 'save-kbd-macro) | |
180 | |
181 (define-key crisp-mode-map [(f9)] 'find-file) | |
182 (define-key crisp-mode-map [(meta f9)] 'load-library) | |
183 | |
184 (define-key crisp-mode-map [(f10)] 'execute-extended-command) | |
185 (define-key crisp-mode-map [(meta f10)] 'compile) | |
186 | |
187 (define-key crisp-mode-map [(SunF37)] 'kill-buffer) | |
188 (define-key crisp-mode-map [(kp-add)] 'crisp-copy-line) | |
189 (define-key crisp-mode-map [(kp-subtract)] 'crisp-kill-line) | |
190 ;; just to cover all the bases (GNU Emacs, for instance) | |
191 (define-key crisp-mode-map [(f24)] 'crisp-kill-line) | |
192 (define-key crisp-mode-map [(insert)] 'crisp-yank-clipboard) | |
193 (define-key crisp-mode-map [(f16)] 'crisp-set-clipboard) ; copy on Sun5 kbd | |
194 (define-key crisp-mode-map [(f20)] 'crisp-kill-region) ; cut on Sun5 kbd | |
195 (define-key crisp-mode-map [(f18)] 'crisp-yank-clipboard) ; paste on Sun5 kbd | |
196 | |
197 (define-key crisp-mode-map [(control f)] 'fill-paragraph-or-region) | |
198 (define-key crisp-mode-map [(meta d)] (lambda () | |
199 (interactive) | |
200 (beginning-of-line) (kill-line))) | |
201 (define-key crisp-mode-map [(meta e)] 'find-file) | |
202 (define-key crisp-mode-map [(meta g)] 'goto-line) | |
203 (define-key crisp-mode-map [(meta h)] 'help) | |
204 (define-key crisp-mode-map [(meta i)] 'overwrite-mode) | |
205 (define-key crisp-mode-map [(meta j)] 'bookmark-jump) | |
206 (define-key crisp-mode-map [(meta l)] 'crisp-mark-line) | |
207 (define-key crisp-mode-map [(meta m)] 'set-mark-command) | |
208 (define-key crisp-mode-map [(meta n)] 'bury-buffer) | |
209 (define-key crisp-mode-map [(meta p)] 'crisp-unbury-buffer) | |
210 (define-key crisp-mode-map [(meta u)] 'undo) | |
211 (define-key crisp-mode-map [(f14)] 'undo) | |
212 (define-key crisp-mode-map [(meta w)] 'save-buffer) | |
213 (define-key crisp-mode-map [(meta x)] 'crisp-meta-x-wrapper) | |
214 (define-key crisp-mode-map [(meta ?0)] (lambda () | |
215 (interactive) | |
216 (bookmark-set "0"))) | |
217 (define-key crisp-mode-map [(meta ?1)] (lambda () | |
218 (interactive) | |
219 (bookmark-set "1"))) | |
220 (define-key crisp-mode-map [(meta ?2)] (lambda () | |
221 (interactive) | |
222 (bookmark-set "2"))) | |
223 (define-key crisp-mode-map [(meta ?3)] (lambda () | |
224 (interactive) | |
225 (bookmark-set "3"))) | |
226 (define-key crisp-mode-map [(meta ?4)] (lambda () | |
227 (interactive) | |
228 (bookmark-set "4"))) | |
229 (define-key crisp-mode-map [(meta ?5)] (lambda () | |
230 (interactive) | |
231 (bookmark-set "5"))) | |
232 (define-key crisp-mode-map [(meta ?6)] (lambda () | |
233 (interactive) | |
234 (bookmark-set "6"))) | |
235 (define-key crisp-mode-map [(meta ?7)] (lambda () | |
236 (interactive) | |
237 (bookmark-set "7"))) | |
238 (define-key crisp-mode-map [(meta ?8)] (lambda () | |
239 (interactive) | |
240 (bookmark-set "8"))) | |
241 (define-key crisp-mode-map [(meta ?9)] (lambda () | |
242 (interactive) | |
243 (bookmark-set "9"))) | |
244 | |
245 (define-key crisp-mode-map [(shift delete)] 'kill-word) | |
246 (define-key crisp-mode-map [(shift backspace)] 'backward-kill-word) | |
247 (define-key crisp-mode-map [(control left)] 'backward-word) | |
248 (define-key crisp-mode-map [(control right)] 'forward-word) | |
249 | |
250 (define-key crisp-mode-map [(home)] 'crisp-home) | |
251 (define-key crisp-mode-map [(control home)] (lambda () | |
252 (interactive) | |
253 (move-to-window-line 0))) | |
254 (define-key crisp-mode-map [(meta home)] 'beginning-of-line) | |
255 (define-key crisp-mode-map [(end)] 'crisp-end) | |
256 (define-key crisp-mode-map [(control end)] (lambda () | |
257 (interactive) | |
258 (move-to-window-line -1))) | |
259 (define-key crisp-mode-map [(meta end)] 'end-of-line) | |
260 | 258 |
261 (defun crisp-version (&optional arg) | 259 (defun crisp-version (&optional arg) |
262 "Version number of the CRiSP emulator package. | 260 "Version number of the CRiSP emulator package. |
263 If ARG, insert results at point." | 261 If ARG, insert results at point." |
264 (interactive "P") | 262 (interactive "P") |
349 (if crisp-override-meta-x | 347 (if crisp-override-meta-x |
350 (save-buffers-kill-emacs) | 348 (save-buffers-kill-emacs) |
351 (call-interactively 'execute-extended-command))) | 349 (call-interactively 'execute-extended-command))) |
352 | 350 |
353 ;;;###autoload | 351 ;;;###autoload |
354 (defun crisp-mode (&optional arg) | 352 (define-minor-mode crisp-mode |
355 "Toggle CRiSP/Brief emulation minor mode. | 353 "Toggle CRiSP/Brief emulation minor mode. |
356 With ARG, turn CRiSP mode on if ARG is positive, off otherwise." | 354 With ARG, turn CRiSP mode on if ARG is positive, off otherwise." |
357 (interactive "P") | 355 :keymap crisp-mode-map |
358 (setq crisp-mode (if (null arg) | 356 :lighter crisp-mode-modeline-string |
359 (not crisp-mode) | |
360 (> (prefix-numeric-value arg) 0))) | |
361 (when crisp-mode | 357 (when crisp-mode |
362 ;; Make menu entries show M-u or f14 in preference to C-x u. | 358 ;; Make menu entries show M-u or f14 in preference to C-x u. |
363 (put 'undo :advertised-binding | 359 (put 'undo :advertised-binding |
364 (list* [?\M-u] [f14] (get 'undo :advertised-binding))) | 360 (list* [?\M-u] [f14] (get 'undo :advertised-binding))) |
365 ;; Force transient-mark-mode, so that the marking routines work as | 361 ;; Force transient-mark-mode, so that the marking routines work as |
370 (if (fboundp 'transient-mark-mode) | 366 (if (fboundp 'transient-mark-mode) |
371 (transient-mark-mode t)) | 367 (transient-mark-mode t)) |
372 (if crisp-load-scroll-all | 368 (if crisp-load-scroll-all |
373 (require 'scroll-all)) | 369 (require 'scroll-all)) |
374 (if (featurep 'scroll-all) | 370 (if (featurep 'scroll-all) |
375 (define-key crisp-mode-map [(meta f1)] 'scroll-all-mode)) | 371 (define-key crisp-mode-map [(meta f1)] 'scroll-all-mode)))) |
376 (run-hooks 'crisp-mode-hook))) | |
377 | 372 |
378 ;; People might use Apropos on `brief'. | 373 ;; People might use Apropos on `brief'. |
379 ;;;###autoload | 374 ;;;###autoload |
380 (defalias 'brief-mode 'crisp-mode) | 375 (defalias 'brief-mode 'crisp-mode) |
381 | 376 |
382 (if (fboundp 'add-minor-mode) | |
383 (add-minor-mode 'crisp-mode 'crisp-mode-modeline-string | |
384 crisp-mode-map nil 'crisp-mode) | |
385 (or (assq 'crisp-mode minor-mode-alist) | |
386 (setq minor-mode-alist | |
387 (cons '(crisp-mode crisp-mode-modeline-string) minor-mode-alist))) | |
388 (or (assq 'crisp-mode minor-mode-map-alist) | |
389 (setq minor-mode-map-alist (cons (cons 'crisp-mode crisp-mode-map) | |
390 minor-mode-map-alist)))) | |
391 | |
392 ;; Interaction with other packages. | 377 ;; Interaction with other packages. |
393 (put 'crisp-home 'CUA 'move) | 378 (put 'crisp-home 'CUA 'move) |
394 (put 'crisp-end 'CUA 'move) | 379 (put 'crisp-end 'CUA 'move) |
395 | 380 |
396 (run-hooks 'crisp-load-hook) | 381 (run-hooks 'crisp-load-hook) |