Mercurial > emacs
comparison lisp/emacs-lisp/re-builder.el @ 41225:74219f3013c6
(reb-mode): Use define-derived-mode.
(font-lock-defaults-alist): Don't change it any more.
(reb-subexp-mode-map): Cleanup.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 18 Nov 2001 01:44:08 +0000 |
parents | b174db545cfd |
children | 2186cf9476ba |
comparison
equal
deleted
inserted
replaced
41224:fc0e6d3f905d | 41225:74219f3013c6 |
---|---|
224 (define-key reb-mode-map "\C-c\C-r" 'reb-prev-match) | 224 (define-key reb-mode-map "\C-c\C-r" 'reb-prev-match) |
225 (define-key reb-mode-map "\C-c\C-i" 'reb-change-syntax) | 225 (define-key reb-mode-map "\C-c\C-i" 'reb-change-syntax) |
226 (define-key reb-mode-map "\C-c\C-e" 'reb-enter-subexp-mode) | 226 (define-key reb-mode-map "\C-c\C-e" 'reb-enter-subexp-mode) |
227 (define-key reb-mode-map "\C-c\C-u" 'reb-force-update))) | 227 (define-key reb-mode-map "\C-c\C-u" 'reb-force-update))) |
228 | 228 |
229 (defun reb-mode () | 229 (define-derived-mode reb-mode nil "RE Builder" |
230 "Major mode for interactively building Regular Expressions. | 230 "Major mode for interactively building Regular Expressions." |
231 \\{reb-mode-map}" | 231 (reb-mode-common)) |
232 (interactive) | |
233 | |
234 (setq major-mode 'reb-mode | |
235 mode-name "RE Builder") | |
236 (use-local-map reb-mode-map) | |
237 (reb-mode-common) | |
238 (run-hooks 'reb-mode-hook)) | |
239 | 232 |
240 (define-derived-mode reb-lisp-mode | 233 (define-derived-mode reb-lisp-mode |
241 emacs-lisp-mode "RE Builder Lisp" | 234 emacs-lisp-mode "RE Builder Lisp" |
242 "Major mode for interactively building symbolic Regular Expressions. | 235 "Major mode for interactively building symbolic Regular Expressions." |
243 \\{reb-lisp-mode-map}" | |
244 (cond ((eq reb-re-syntax 'lisp-re) ; Pull in packages | 236 (cond ((eq reb-re-syntax 'lisp-re) ; Pull in packages |
245 (require 'lisp-re)) ; as needed | 237 (require 'lisp-re)) ; as needed |
246 ((eq reb-re-syntax 'sregex) ; sregex is not autoloaded | 238 ((eq reb-re-syntax 'sregex) ; sregex is not autoloaded |
247 (require 'sregex))) ; right now.. | 239 (require 'sregex))) ; right now.. |
248 (reb-mode-common)) | 240 (reb-mode-common)) |
250 ;; Use the same "\C-c" keymap as `reb-mode' and use font-locking from | 242 ;; Use the same "\C-c" keymap as `reb-mode' and use font-locking from |
251 ;; `emacs-lisp-mode' | 243 ;; `emacs-lisp-mode' |
252 (define-key reb-lisp-mode-map "\C-c" | 244 (define-key reb-lisp-mode-map "\C-c" |
253 (lookup-key reb-mode-map "\C-c")) | 245 (lookup-key reb-mode-map "\C-c")) |
254 | 246 |
255 (if (boundp 'font-lock-defaults-alist) | 247 (defvar reb-subexp-mode-map |
256 (setq font-lock-defaults-alist | 248 (let ((m (make-keymap))) |
257 (cons (cons 'reb-lisp-mode | 249 (suppress-keymap m) |
258 (cdr (assoc 'emacs-lisp-mode | 250 ;; Again share the "\C-c" keymap for the commands |
259 font-lock-defaults-alist))) | 251 (define-key m "\C-c" (lookup-key reb-mode-map "\C-c")) |
260 font-lock-defaults-alist))) | 252 (define-key m "q" 'reb-quit-subexp-mode) |
261 | 253 (dotimes (digit 10) |
262 (defvar reb-subexp-mode-map nil | 254 (define-key m (int-to-string digit) 'reb-display-subexp)) |
255 m) | |
263 "Keymap used by the RE Builder for the subexpression mode.") | 256 "Keymap used by the RE Builder for the subexpression mode.") |
264 | |
265 (if (not reb-subexp-mode-map) | |
266 (progn | |
267 (setq reb-subexp-mode-map (make-sparse-keymap)) | |
268 (suppress-keymap reb-subexp-mode-map) | |
269 ;; Again share the "\C-c" keymap for the commands | |
270 (define-key reb-subexp-mode-map "\C-c" | |
271 (lookup-key reb-mode-map "\C-c")) | |
272 (define-key reb-subexp-mode-map "q" 'reb-quit-subexp-mode) | |
273 (mapcar (lambda (digit) | |
274 (define-key reb-subexp-mode-map (int-to-string digit) | |
275 'reb-display-subexp)) | |
276 '(0 1 2 3 4 5 6 7 8 9)))) | |
277 | 257 |
278 (defun reb-mode-common () | 258 (defun reb-mode-common () |
279 "Setup functions common to functions `reb-mode' and `reb-mode-lisp'." | 259 "Setup functions common to functions `reb-mode' and `reb-mode-lisp'." |
280 | 260 |
281 (setq reb-mode-string "" | 261 (setq reb-mode-string "" |
409 ;; The subexpression mode is not electric because the number of | 389 ;; The subexpression mode is not electric because the number of |
410 ;; matches should be seen rather than a prompt. | 390 ;; matches should be seen rather than a prompt. |
411 (defun reb-enter-subexp-mode () | 391 (defun reb-enter-subexp-mode () |
412 "Enter the subexpression mode in the RE Builder." | 392 "Enter the subexpression mode in the RE Builder." |
413 (interactive) | 393 (interactive) |
414 | |
415 (setq reb-subexp-mode t) | 394 (setq reb-subexp-mode t) |
416 (reb-update-modestring) | 395 (reb-update-modestring) |
417 (use-local-map reb-subexp-mode-map) | 396 (use-local-map reb-subexp-mode-map) |
418 (message "`0'-`9' to display subexpressions `q' to quit subexp mode.")) | 397 (message "`0'-`9' to display subexpressions `q' to quit subexp mode.")) |
419 | 398 |
432 (sit-for reb-blink-delay)))) | 411 (sit-for reb-blink-delay)))) |
433 | 412 |
434 (defun reb-quit-subexp-mode () | 413 (defun reb-quit-subexp-mode () |
435 "Quit the subexpression mode in the RE Builder." | 414 "Quit the subexpression mode in the RE Builder." |
436 (interactive) | 415 (interactive) |
437 | |
438 (setq reb-subexp-mode nil | 416 (setq reb-subexp-mode nil |
439 reb-subexp-displayed nil) | 417 reb-subexp-displayed nil) |
440 (reb-update-modestring) | 418 (reb-update-modestring) |
441 (use-local-map reb-mode-map) | 419 (use-local-map reb-mode-map) |
442 (reb-do-update)) | 420 (reb-do-update)) |