]> git.eshelyaron.com Git - emacs.git/commitdiff
(inferior-scheme-mode-map): Define it independently
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 8 Mar 2000 23:55:36 +0000 (23:55 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 8 Mar 2000 23:55:36 +0000 (23:55 +0000)
from comint-mode-map, so we can just inherit from it.  Also, move the
initialization into the `defvar' since there's no docstring anyway
and it's fairly short.
(inferior-scheme-mode): Define it as derived-mode: the code is shorter
and this way we inherit from comint-mode-map rather than copying it.

lisp/cmuscheme.el

index a3e1ab5d9f72c7ab3ae53e80f88859950beaa166..71040bd4030902bfca6ef2e7c4add6cba8e8f59d 100644 (file)
   :type 'hook
   :group 'cmuscheme)
 
-(defvar inferior-scheme-mode-map nil)
-
-(cond ((not inferior-scheme-mode-map)
-       (setq inferior-scheme-mode-map
-            (copy-keymap comint-mode-map))
-       (define-key inferior-scheme-mode-map "\M-\C-x" ;gnu convention
-                  'scheme-send-definition)
-       (define-key inferior-scheme-mode-map "\C-x\C-e" 'scheme-send-last-sexp)
-       (define-key inferior-scheme-mode-map "\C-c\C-l" 'scheme-load-file)
-       (define-key inferior-scheme-mode-map "\C-c\C-k" 'scheme-compile-file)
-       (scheme-mode-commands inferior-scheme-mode-map))) 
+(defvar inferior-scheme-mode-map
+  (let ((m (make-sparse-keymap)))
+    (define-key m "\M-\C-x" 'scheme-send-definition) ;gnu convention
+    (define-key m "\C-x\C-e" 'scheme-send-last-sexp)
+    (define-key m "\C-c\C-l" 'scheme-load-file)
+    (define-key m "\C-c\C-k" 'scheme-compile-file)
+    (scheme-mode-commands m)
+    m))
 
 ;; Install the process communication commands in the scheme-mode keymap.
 (define-key scheme-mode-map "\M-\C-x" 'scheme-send-definition);gnu convention
 
 (defvar scheme-buffer)
 
-(defun inferior-scheme-mode ()
+(define-derived-mode inferior-scheme-mode comint-mode "Inferior Scheme"
   "Major mode for interacting with an inferior Scheme process.
 
 The following commands are available:
@@ -197,18 +194,12 @@ C-M-q does Tab on each line starting within following expression.
 Paragraphs are separated only by blank lines.  Semicolons start comments.
 If you accidentally suspend your process, use \\[comint-continue-subjob]
 to continue it."
-  (interactive)
-  (comint-mode)
   ;; Customise in inferior-scheme-mode-hook
   (setq comint-prompt-regexp "^[^>\n]*>+ *") ; OK for cscheme, oaklisp, T,...
   (scheme-mode-variables)
-  (setq major-mode 'inferior-scheme-mode)
-  (setq mode-name "Inferior Scheme")
   (setq mode-line-process '(":%s"))
-  (use-local-map inferior-scheme-mode-map)
   (setq comint-input-filter (function scheme-input-filter))
-  (setq comint-get-old-input (function scheme-get-old-input))
-  (run-hooks 'inferior-scheme-mode-hook))
+  (setq comint-get-old-input (function scheme-get-old-input)))
 
 (defcustom inferior-scheme-filter-regexp "\\`\\s *\\S ?\\S ?\\s *\\'"
   "*Input matching this regexp are not saved on the history list.