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-hookThis hook is run when cmuscheme is loaded in.
inferior-scheme-filter-regexpInput matching this regexp are not saved on the history list.
inferior-scheme-mode-abbrev-tableAbbrev table for ‘inferior-scheme-mode’.
inferior-scheme-mode-hookHook for customizing inferior-scheme mode.
inferior-scheme-mode-mapKeymap for ‘inferior-scheme-mode’.
inferior-scheme-mode-syntax-tableSyntax table for ‘inferior-scheme-mode’.
scheme-bufferThe current scheme process buffer.
scheme-compile-exp-commandTemplate for issuing commands to compile arbitrary Scheme expressions.
scheme-macro-expand-commandTemplate for macro-expanding a Scheme form.
scheme-prev-l/c-dir/fileCaches the last (directory . file) pair.
scheme-source-modesUsed to determine if a buffer contains Scheme source code.
scheme-trace-commandTemplate for issuing commands to trace a Scheme procedure.
scheme-untrace-commandTemplate 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)

Defined faces (0)