(hs-hide-block): Fix message spelling.
[bpt/emacs.git] / lisp / cmuscheme.el
index 94d723c..3a3cd0b 100644 (file)
@@ -1,14 +1,26 @@
-;;; cmuscheme.el -- Scheme process in a buffer. Adapted from tea.el.
+;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el.
+
+;; Copyright (C) 1988, 1994 Free Software Foundation, Inc.
 
 ;; Author: Olin Shivers <olin.shivers@cs.cmu.edu>
-;; Last-Modified: 16 Mar 1992
-;; Keyword: processes, lisp
+;; Maintainer: FSF
+;; Keywords: processes, lisp
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
 
-;;; Copyright Olin Shivers (1988)
-;;; Please imagine a long, tedious, legalistic 5-page gnu-style copyright
-;;; notice appearing here to the effect that you may use this code any
-;;; way you like, as long as you don't charge money for it, remove this
-;;; notice, or hold me liable for its results.
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 
 ;;; Commentary:
 
 ;;; 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)
 (define-key scheme-mode-map "\C-c\C-l" 'scheme-load-file)
 (define-key scheme-mode-map "\C-c\C-k" 'scheme-compile-file) ;k for "kompile"
 
+(defvar scheme-buffer)
+
 (defun inferior-scheme-mode ()
   "Major mode for interacting with an inferior Scheme process.
 
@@ -166,25 +141,24 @@ to continue it."
   (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))
 
-(defun scheme-input-filter (str)
-  "Don't save anything matching inferior-scheme-filter-regexp"
-  (not (string-match inferior-scheme-filter-regexp str)))
-
 (defvar inferior-scheme-filter-regexp "\\`\\s *\\S ?\\S ?\\s *\\'"
   "*Input matching this regexp are not saved on the history list.
 Defaults to a regexp ignoring all inputs of 0, 1, or 2 letters.")
 
+(defun scheme-input-filter (str)
+  "Don't save anything matching inferior-scheme-filter-regexp"
+  (not (string-match inferior-scheme-filter-regexp str)))
+
 (defun scheme-get-old-input ()
   "Snarf the sexp ending at point"
   (save-excursion
@@ -208,19 +182,13 @@ Defaults to a regexp ignoring all inputs of 0, 1, or 2 letters.")
 (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
@@ -231,9 +199,10 @@ of scheme-program-name).  Runs the hooks from inferior-scheme-mode-hook
        (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."
@@ -259,7 +228,7 @@ of scheme-program-name).  Runs the hooks from inferior-scheme-mode-hook
   "*Template for issuing commands to compile arbitrary Scheme expressions.")
 
 (defun scheme-compile-region (start end)
-  "Compile the current region in the inferior Scheme process
+  "Compile the current region in the inferior Scheme process.
 \(A BEGIN is wrapped around the region: (BEGIN <region>))"
   (interactive "r")
   (comint-send-string (scheme-proc) (format scheme-compile-exp-command
@@ -288,29 +257,29 @@ With argument, positions cursor at end of buffer."
         (goto-char (point-max)))))
 
 (defun scheme-send-region-and-go (start end)
-  "Send the current region to the inferior Scheme process,
-and switch to the process buffer."
+  "Send the current region to the inferior Scheme process.
+Then switch to the process buffer."
   (interactive "r")
   (scheme-send-region start end)
   (switch-to-scheme t))
 
 (defun scheme-send-definition-and-go ()
-  "Send the current definition to the inferior Scheme, 
-and switch to the process buffer."
+  "Send the current definition to the inferior Scheme. 
+Then switch to the process buffer."
   (interactive)
   (scheme-send-definition)
   (switch-to-scheme t))
 
 (defun scheme-compile-definition-and-go ()
-  "Compile the current definition in the inferior Scheme, 
-and switch to the process buffer."
+  "Compile the current definition in the inferior Scheme. 
+Then switch to the process buffer."
   (interactive)
   (scheme-compile-definition)
   (switch-to-scheme t))
 
 (defun scheme-compile-region-and-go (start end)
-  "Compile the current region in the inferior Scheme, 
-and switch to the process buffer."
+  "Compile the current region in the inferior Scheme. 
+Then switch to the process buffer."
   (interactive "r")
   (scheme-compile-region start end)
   (switch-to-scheme t))
@@ -322,7 +291,8 @@ considered a scheme source file by scheme-load-file and scheme-compile-file.
 Used by these commands to determine defaults.")
 
 (defvar scheme-prev-l/c-dir/file nil
-  "Caches the (directory . file) pair used in the last scheme-load-file or
+  "Caches the last (directory . file) pair.
+Caches the last pair used in the last scheme-load-file or
 scheme-compile-file command. Used for determining the default in the 
 next one.")
 
@@ -387,7 +357,7 @@ to be the new process's buffer. If you only run one process, this will
 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