File: cmuscheme.el.html
This is a customization of comint-mode (see comint.el)
Written by Olin Shivers (olin.shivers@cs.cmu.edu). With bits and pieces
lifted from scheme.el, shell.el, clisp.el, newclisp.el, cobol.el, et al..
8/88
Please send me bug reports, bug fixes, and extensions, so that I can merge them into the master source.
NOTE: MIT Cscheme, when invoked with the -emacs flag, has a special user interface that communicates process state back to the superior Emacs by outputting special control sequences. The Emacs package, xscheme.el, has lots and lots of special purpose code to read these control sequences, and so is very tightly integrated with the cscheme process. The cscheme interrupt handler and debugger read single character commands in cbreak mode; when this happens, xscheme.el switches to special keymaps that bind the single letter command keys to Emacs functions that directly send the character to the scheme process. Cmuscheme mode does *not* provide this functionality. If you are a cscheme user, you may prefer to use the xscheme.el/cscheme -emacs interaction.
Here's a summary of the pros and cons, as I see them.
xscheme: Tightly integrated with inferior cscheme process! A few commands
not in cmuscheme. But. Integration is a bit of a hack. Input
history only keeps the immediately prior input. Bizarre
keybindings.
cmuscheme: Not tightly integrated with inferior cscheme process. But.
Carefully integrated functionality with the entire suite of
comint-derived CMU process modes. Keybindings reminiscent of
Zwei and Hemlock. Good input history. A few commands not in
xscheme.
It's a tradeoff. Pay your money; take your choice. If you use a Scheme that isn't Cscheme, of course, there isn't a choice. Xscheme.el is *very* Cscheme-specific; you must use cmuscheme.el. Interested parties are invited to port xscheme functionality on top of comint mode...
; CHANGE LOG
===========================================================================
8/88 Olin
Created.
2/15/89 Olin
Removed -emacs flag from process invocation. It's only useful for
cscheme, and makes cscheme assume it's running under xscheme.el,
which messes things up royally. A bug.
5/22/90 Olin
- Upgraded to use comint-send-string and comint-send-region.
- run-scheme now offers to let you edit the command line if
you invoke it with a prefix-arg. M-x scheme is redundant, and
has been removed.
- Explicit references to process "scheme" have been replaced with
(scheme-proc). This allows better handling of multiple process bufs.
- Added scheme-send-last-sexp, bound to C-x C-e. A gnu convention.
- Have not added process query facility a la cmulisp.el's lisp-show-arglist
and friends, but interested hackers might find a useful application
of this facility.
3/12/90 Olin
- scheme-load-file and scheme-compile-file no longer switch-to-scheme.
Tale suggested this.
Defined variables (13)
cmuscheme-load-hook | This hook is run when cmuscheme is loaded in. |
inferior-scheme-filter-regexp | Input matching this regexp are not saved on the history list. |
inferior-scheme-mode-abbrev-table | Abbrev table for ‘inferior-scheme-mode’. |
inferior-scheme-mode-hook | Hook for customizing inferior-scheme mode. |
inferior-scheme-mode-map | Keymap for ‘inferior-scheme-mode’. |
inferior-scheme-mode-syntax-table | Syntax table for ‘inferior-scheme-mode’. |
scheme-buffer | The current scheme process buffer. |
scheme-compile-exp-command | Template for issuing commands to compile arbitrary Scheme expressions. |
scheme-macro-expand-command | Template for macro-expanding a Scheme form. |
scheme-prev-l/c-dir/file | Caches the last (directory . file) pair. |
scheme-source-modes | Used to determine if a buffer contains Scheme source code. |
scheme-trace-command | Template for issuing commands to trace a Scheme procedure. |
scheme-untrace-command | Template for switching off tracing of a Scheme procedure. |
Defined functions (22)
inferior-scheme-mode | () |
run-scheme | (CMD) |
scheme-compile-definition | () |
scheme-compile-definition-and-go | () |
scheme-compile-file | (FILE-NAME) |
scheme-compile-region | (START END) |
scheme-compile-region-and-go | (START END) |
scheme-expand-current-form | () |
scheme-get-old-input | () |
scheme-get-process | () |
scheme-input-filter | (STR) |
scheme-interactively-start-process | (&optional CMD) |
scheme-load-file | (FILE-NAME) |
scheme-proc | () |
scheme-send-definition | () |
scheme-send-definition-and-go | () |
scheme-send-last-sexp | () |
scheme-send-region | (START END) |
scheme-send-region-and-go | (START END) |
scheme-start-file | (PROG) |
scheme-trace-procedure | (PROC &optional UNTRACE) |
switch-to-scheme | (EOB-P) |