;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el.
-;;; Copyright (C) 1988 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994 Free Software Foundation, Inc.
;; Author: Olin Shivers <olin.shivers@cs.cmu.edu>
-;; Keyword: processes, lisp
+;; Maintainer: FSF
+;; Keywords: processes, lisp
;; This file is part of GNU Emacs.
;;; Cscheme-specific; you must use cmuscheme.el. Interested parties are
;;; invited to port xscheme functionality on top of comint mode...
-;; YOUR .EMACS FILE
-;;=============================================================================
-;; Some suggestions for your .emacs file.
-;;
-;; ; If cmuscheme lives in some non-standard directory, you must tell emacs
-;; ; where to get it. This may or may not be necessary.
-;; (setq load-path (cons (expand-file-name "~jones/lib/emacs") load-path))
-;;
-;; ; Autoload run-scheme from file cmuscheme.el
-;; (autoload 'run-scheme "cmuscheme"
-;; "Run an inferior Scheme process."
-;; t)
-;;
-;; ; Files ending in ".scm" are Scheme source,
-;; ; so put their buffers in scheme-mode.
-;; (setq auto-mode-alist
-;; (cons '("\\.scm$" . scheme-mode)
-;; auto-mode-alist))
-;;
-;; ; Define C-c t to run my favorite command in inferior scheme mode:
-;; (setq cmuscheme-load-hook
-;; '((lambda () (define-key inferior-scheme-mode-map "\C-ct"
-;; 'favorite-cmd))))
-;;;
-;;; Unfortunately, scheme.el defines run-scheme to autoload from xscheme.el.
-;;; This will womp your declaration to autoload run-scheme from cmuscheme.el
-;;; if you haven't loaded cmuscheme in before scheme. Three fixes:
-;;; - Put the autoload on your scheme mode hook and in your .emacs toplevel:
-;;; (setq scheme-mode-hook
-;;; '((lambda () (autoload 'run-scheme "cmuscheme"
-;;; "Run an inferior Scheme" t))))
-;;; (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme" t)
-;;; Now when scheme.el autoloads, it will restore the run-scheme autoload.
-;;; - Load cmuscheme.el in your .emacs: (load-library 'cmuscheme)
-;;; - Change autoload declaration in scheme.el to point to cmuscheme.el:
-;;; (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme" t)
-;;; *or* just delete the autoload declaration from scheme.el altogether,
-;;; which will allow the autoload in your .emacs to have its say.
-
;;; Code:
(require 'scheme)
(cond ((not inferior-scheme-mode-map)
(setq inferior-scheme-mode-map
- (full-copy-sparse-keymap comint-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)
(interactive)
(comint-mode)
;; Customise in inferior-scheme-mode-hook
- (setq comint-prompt-regexp "^[^>]*>+ *") ; OK for cscheme, oaklisp, T,...
+ (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"))
+ (setq mode-line-process '(":%s"))
(use-local-map inferior-scheme-mode-map)
(setq comint-input-filter (function scheme-input-filter))
- (setq comint-input-sentinel (function ignore))
(setq comint-get-old-input (function scheme-get-old-input))
(run-hooks 'inferior-scheme-mode-hook))
(defvar scheme-program-name "scheme"
"*Program invoked by the run-scheme command")
-;;; Obsolete
-(defun scheme (&rest foo)
- "Use run-scheme"
- (interactive)
- (message "Use run-scheme")
- (ding))
-
+;;;###autoload
(defun run-scheme (cmd)
"Run an inferior Scheme process, input and output via buffer *scheme*.
-If there is a process already running in *scheme*, just switch to that buffer.
+If there is a process already running in `*scheme*', switch to that buffer.
With argument, allows you to edit the command line (default is value
-of scheme-program-name). Runs the hooks from inferior-scheme-mode-hook
-\(after the comint-mode-hook is run).
+of `scheme-program-name'). Runs the hooks `inferior-scheme-mode-hook'
+\(after the `comint-mode-hook' is run).
\(Type \\[describe-mode] in the process buffer for a list of commands.)"
(interactive (list (if current-prefix-arg
(set-buffer (apply 'make-comint "scheme" (car cmdlist)
nil (cdr cmdlist)))
(inferior-scheme-mode)))
+ (setq scheme-program-name cmd)
(setq scheme-buffer "*scheme*")
- (switch-to-buffer "*scheme*"))
-
+ (pop-to-buffer "*scheme*"))
+;;;###autoload (add-hook 'same-window-buffer-names "*scheme*")
(defun scheme-send-region (start end)
"Send the current region to the inferior Scheme process."
do the right thing. If you run multiple processes, you can change
scheme-buffer to another process buffer with \\[set-variable].
-More sophisticated approaches are, of course, possible. If you find youself
+More sophisticated approaches are, of course, possible. If you find yourself
needing to switch back and forth between multiple processes frequently,
you may wish to consider ilisp.el, a larger, more sophisticated package
for running inferior Lisp and Scheme processes. The approach taken here is