(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>
 
 ;; 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:
 
 
 ;;; Commentary:
 
 ;;; Cscheme-specific; you must use cmuscheme.el.  Interested parties are
 ;;; invited to port xscheme functionality on top of comint mode...
 
 ;;; 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)
 ;;; Code:
 
 (require 'scheme)
 
 (cond ((not inferior-scheme-mode-map)
        (setq inferior-scheme-mode-map
 
 (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 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"
 
 (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.
 
 (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
   (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")
   (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))
   (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))
 
   (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.")
 
 (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
 (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")
 
 (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*.
 (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
 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
 \(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)))
        (set-buffer (apply 'make-comint "scheme" (car cmdlist)
                           nil (cdr cmdlist)))
        (inferior-scheme-mode)))
+  (setq scheme-program-name cmd)
   (setq scheme-buffer "*scheme*")
   (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."
 
 (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)
   "*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
 \(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)
         (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 ()
   (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 ()
   (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)
   (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))
   (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
 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.")
 
 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].
 
 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
 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