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))