annotate lisp/cmuscheme.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 1d1d5d9bd884
children 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 33482
diff changeset
1 ;;; cmuscheme.el --- Scheme process in a buffer. Adapted from tea.el
2229
bd3c525fa6fc Added standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1367
diff changeset
2
74439
ddcbd2c1b70d Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68651
diff changeset
3 ;; Copyright (C) 1988, 1994, 1997, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105798
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
5
798
b7932f859d4e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 795
diff changeset
6 ;; Author: Olin Shivers <olin.shivers@cs.cmu.edu>
6188
599aa761e6be (inferior-scheme-mode): Removed unnecessary
Richard M. Stallman <rms@gnu.org>
parents: 6149
diff changeset
7 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2229
diff changeset
8 ;; Keywords: processes, lisp
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
9
924
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
10 ;; This file is part of GNU Emacs.
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
924
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
15 ;; (at your option) any later version.
924
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
16
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
20 ;; GNU General Public License for more details.
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
21
93730fc2e7c3 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
24
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
25 ;;; Commentary:
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
26
64787
d3ba08ae337e (inferior-scheme-mode-hook, inferior-scheme-mode, scheme-prev-l/c-dir/file):
Juanma Barranquero <lekktu@gmail.com>
parents: 64786
diff changeset
27 ;; This is a customization of comint-mode (see comint.el)
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
28 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
29 ;; Written by Olin Shivers (olin.shivers@cs.cmu.edu). With bits and pieces
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
30 ;; lifted from scheme.el, shell.el, clisp.el, newclisp.el, cobol.el, et al..
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
31 ;; 8/88
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
32 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
33 ;; Please send me bug reports, bug fixes, and extensions, so that I can
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
34 ;; merge them into the master source.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
35 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
36 ;; The changelog is at the end of this file.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
37 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
38 ;; NOTE: MIT Cscheme, when invoked with the -emacs flag, has a special user
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
39 ;; interface that communicates process state back to the superior emacs by
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
40 ;; outputting special control sequences. The gnumacs package, xscheme.el, has
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
41 ;; lots and lots of special purpose code to read these control sequences, and
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
42 ;; so is very tightly integrated with the cscheme process. The cscheme
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
43 ;; interrupt handler and debugger read single character commands in cbreak
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
44 ;; mode; when this happens, xscheme.el switches to special keymaps that bind
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
45 ;; the single letter command keys to emacs functions that directly send the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
46 ;; character to the scheme process. Cmuscheme mode does *not* provide this
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
47 ;; functionality. If you are a cscheme user, you may prefer to use the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
48 ;; xscheme.el/cscheme -emacs interaction.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42205
diff changeset
49 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
50 ;; Here's a summary of the pros and cons, as I see them.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
51 ;; xscheme: Tightly integrated with inferior cscheme process! A few commands
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
52 ;; not in cmuscheme. But. Integration is a bit of a hack. Input
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
53 ;; history only keeps the immediately prior input. Bizarre
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
54 ;; keybindings.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42205
diff changeset
55 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
56 ;; cmuscheme: Not tightly integrated with inferior cscheme process. But.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
57 ;; Carefully integrated functionality with the entire suite of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
58 ;; comint-derived CMU process modes. Keybindings reminiscent of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
59 ;; Zwei and Hemlock. Good input history. A few commands not in
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
60 ;; xscheme.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42205
diff changeset
61 ;;
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
62 ;; It's a tradeoff. Pay your money; take your choice. If you use a Scheme
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
63 ;; that isn't Cscheme, of course, there isn't a choice. Xscheme.el is *very*
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
64 ;; Cscheme-specific; you must use cmuscheme.el. Interested parties are
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12867
diff changeset
65 ;; invited to port xscheme functionality on top of comint mode...
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66
20601
97249de6bbfa Move change log comment block so lm-commentary doesn't lose.
Dave Love <fx@gnu.org>
parents: 19997
diff changeset
67 ;;; CHANGE LOG
101745
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
68 ;; ===========================================================================
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
69 ;; 8/88 Olin
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
70 ;; Created.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
71 ;;
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
72 ;; 2/15/89 Olin
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
73 ;; Removed -emacs flag from process invocation. It's only useful for
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
74 ;; cscheme, and makes cscheme assume it's running under xscheme.el,
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
75 ;; which messes things up royally. A bug.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
76 ;;
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
77 ;; 5/22/90 Olin
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
78 ;; - Upgraded to use comint-send-string and comint-send-region.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
79 ;; - run-scheme now offers to let you edit the command line if
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
80 ;; you invoke it with a prefix-arg. M-x scheme is redundant, and
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
81 ;; has been removed.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
82 ;; - Explicit references to process "scheme" have been replaced with
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
83 ;; (scheme-proc). This allows better handling of multiple process bufs.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
84 ;; - Added scheme-send-last-sexp, bound to C-x C-e. A gnu convention.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
85 ;; - Have not added process query facility a la cmulisp.el's lisp-show-arglist
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
86 ;; and friends, but interested hackers might find a useful application
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
87 ;; of this facility.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
88 ;;
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
89 ;; 3/12/90 Olin
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
90 ;; - scheme-load-file and scheme-compile-file no longer switch-to-scheme.
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
91 ;; Tale suggested this.
20601
97249de6bbfa Move change log comment block so lm-commentary doesn't lose.
Dave Love <fx@gnu.org>
parents: 19997
diff changeset
92
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
93 ;;; Code:
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
94
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 (require 'scheme)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 (require 'comint)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
98
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
99 (defgroup cmuscheme nil
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
100 "Run a scheme process in a buffer."
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
101 :group 'scheme)
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
102
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 ;;; INFERIOR SCHEME MODE STUFF
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 ;;;============================================================================
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
106 (defcustom inferior-scheme-mode-hook nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
107 "Hook for customizing inferior-scheme mode."
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
108 :type 'hook
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
109 :group 'cmuscheme)
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
110
28066
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
111 (defvar inferior-scheme-mode-map
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
112 (let ((m (make-sparse-keymap)))
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
113 (define-key m "\M-\C-x" 'scheme-send-definition) ;gnu convention
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
114 (define-key m "\C-x\C-e" 'scheme-send-last-sexp)
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
115 (define-key m "\C-c\C-l" 'scheme-load-file)
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
116 (define-key m "\C-c\C-k" 'scheme-compile-file)
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
117 (scheme-mode-commands m)
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
118 m))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 ;; Install the process communication commands in the scheme-mode keymap.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 (define-key scheme-mode-map "\M-\C-x" 'scheme-send-definition);gnu convention
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 (define-key scheme-mode-map "\C-x\C-e" 'scheme-send-last-sexp);gnu convention
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 (define-key scheme-mode-map "\C-c\C-e" 'scheme-send-definition)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 (define-key scheme-mode-map "\C-c\M-e" 'scheme-send-definition-and-go)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 (define-key scheme-mode-map "\C-c\C-r" 'scheme-send-region)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 (define-key scheme-mode-map "\C-c\M-r" 'scheme-send-region-and-go)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 (define-key scheme-mode-map "\C-c\M-c" 'scheme-compile-definition)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 (define-key scheme-mode-map "\C-c\C-c" 'scheme-compile-definition-and-go)
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
129 (define-key scheme-mode-map "\C-c\C-t" 'scheme-trace-procedure)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
130 (define-key scheme-mode-map "\C-c\C-x" 'scheme-expand-current-form)
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 (define-key scheme-mode-map "\C-c\C-z" 'switch-to-scheme)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 (define-key scheme-mode-map "\C-c\C-l" 'scheme-load-file)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 (define-key scheme-mode-map "\C-c\C-k" 'scheme-compile-file) ;k for "kompile"
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
17354
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
135 (let ((map (lookup-key scheme-mode-map [menu-bar scheme])))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
136 (define-key map [separator-eval] '("--"))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
137 (define-key map [compile-file]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
138 '("Compile Scheme File" . scheme-compile-file))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
139 (define-key map [load-file]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
140 '("Load Scheme File" . scheme-load-file))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
141 (define-key map [switch]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
142 '("Switch to Scheme" . switch-to-scheme))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
143 (define-key map [com-def-go]
57150
e8b02be78ea7 Typo in the menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
144 '("Compile Definition & Go" . scheme-compile-definition-and-go))
17354
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
145 (define-key map [com-def]
57150
e8b02be78ea7 Typo in the menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
146 '("Compile Definition" . scheme-compile-definition))
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
147 (define-key map [exp-form]
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
148 '("Expand current form" . scheme-expand-current-form))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
149 (define-key map [trace-proc]
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
150 '("Trace procedure" . scheme-trace-procedure))
17354
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
151 (define-key map [send-def-go]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
152 '("Evaluate Last Definition & Go" . scheme-send-definition-and-go))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
153 (define-key map [send-def]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
154 '("Evaluate Last Definition" . scheme-send-definition))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
155 (define-key map [send-region-go]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
156 '("Evaluate Region & Go" . scheme-send-region-and-go))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
157 (define-key map [send-region]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
158 '("Evaluate Region" . scheme-send-region))
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
159 (define-key map [send-sexp]
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
160 '("Evaluate Last S-expression" . scheme-send-last-sexp))
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
161 )
17354
7c7aaf0aeedb (scheme-mode-map): Add some menu items.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
162
1367
475a8122e0a5 (inferior-scheme-filter-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1355
diff changeset
163 (defvar scheme-buffer)
475a8122e0a5 (inferior-scheme-filter-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1355
diff changeset
164
28066
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
165 (define-derived-mode inferior-scheme-mode comint-mode "Inferior Scheme"
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 "Major mode for interacting with an inferior Scheme process.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 The following commands are available:
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 \\{inferior-scheme-mode-map}
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 A Scheme process can be fired up with M-x run-scheme.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
64787
d3ba08ae337e (inferior-scheme-mode-hook, inferior-scheme-mode, scheme-prev-l/c-dir/file):
Juanma Barranquero <lekktu@gmail.com>
parents: 64786
diff changeset
173 Customization: Entry to this mode runs the hooks on comint-mode-hook and
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 inferior-scheme-mode-hook (in that order).
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 You can send text to the inferior Scheme process from other buffers containing
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
177 Scheme source.
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 switch-to-scheme switches the current buffer to the Scheme process buffer.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 scheme-send-definition sends the current definition to the Scheme process.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 scheme-compile-definition compiles the current definition.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 scheme-send-region sends the current region to the Scheme process.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 scheme-compile-region compiles the current region.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 scheme-send-definition-and-go, scheme-compile-definition-and-go,
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 scheme-send-region-and-go, and scheme-compile-region-and-go
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 switch to the Scheme process buffer after sending their text.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 For information on running multiple processes in multiple buffers, see
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 documentation for variable scheme-buffer.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 Commands:
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
191 Return after the end of the process' output sends the text from the
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 end of process to point.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 Return before the end of the process' output copies the sexp ending at point
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 to the end of the process' output, and sends it.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 Delete converts tabs to spaces as it moves back.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 Tab indents for Scheme; with argument, shifts rest
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 of expression rigidly with the current line.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 C-M-q does Tab on each line starting within following expression.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 Paragraphs are separated only by blank lines. Semicolons start comments.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 If you accidentally suspend your process, use \\[comint-continue-subjob]
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 to continue it."
64787
d3ba08ae337e (inferior-scheme-mode-hook, inferior-scheme-mode, scheme-prev-l/c-dir/file):
Juanma Barranquero <lekktu@gmail.com>
parents: 64786
diff changeset
202 ;; Customize in inferior-scheme-mode-hook
5304
092d5d60f803 (inferior-scheme-mode):
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
203 (setq comint-prompt-regexp "^[^>\n]*>+ *") ; OK for cscheme, oaklisp, T,...
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 (scheme-mode-variables)
7070
d3334311fc58 (inferior-scheme-mode):
Richard M. Stallman <rms@gnu.org>
parents: 6188
diff changeset
205 (setq mode-line-process '(":%s"))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 (setq comint-input-filter (function scheme-input-filter))
28066
95a07dc453f4 (inferior-scheme-mode-map): Define it independently
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 21088
diff changeset
207 (setq comint-get-old-input (function scheme-get-old-input)))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
209 (defcustom inferior-scheme-filter-regexp "\\`\\s *\\S ?\\S ?\\s *\\'"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
210 "Input matching this regexp are not saved on the history list.
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
211 Defaults to a regexp ignoring all inputs of 0, 1, or 2 letters."
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
212 :type 'regexp
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
213 :group 'cmuscheme)
1367
475a8122e0a5 (inferior-scheme-filter-regexp):
Richard M. Stallman <rms@gnu.org>
parents: 1355
diff changeset
214
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (defun scheme-input-filter (str)
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
216 "Don't save anything matching `inferior-scheme-filter-regexp'."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (not (string-match inferior-scheme-filter-regexp str)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (defun scheme-get-old-input ()
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
220 "Snarf the sexp ending at point."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (save-excursion
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (let ((end (point)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (backward-sexp)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (buffer-substring (point) end))))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
9589
2bee58e79145 (run-scheme): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 9538
diff changeset
226 ;;;###autoload
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 (defun run-scheme (cmd)
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
228 "Run an inferior Scheme process, input and output via buffer `*scheme*'.
12867
26e4b5392530 (run-scheme): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9589
diff changeset
229 If there is a process already running in `*scheme*', switch to that buffer.
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 With argument, allows you to edit the command line (default is value
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
231 of `scheme-program-name').
74445
d26696d58462 (run-scheme, scheme-start-file): Search the start file in ~/.emacs.d
Juanma Barranquero <lekktu@gmail.com>
parents: 74439
diff changeset
232 If the file `~/.emacs_SCHEMENAME' or `~/.emacs.d/init_SCHEMENAME.scm' exists,
d26696d58462 (run-scheme, scheme-start-file): Search the start file in ~/.emacs.d
Juanma Barranquero <lekktu@gmail.com>
parents: 74439
diff changeset
233 it is given as initial input.
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
234 Note that this may lose due to a timing error if the Scheme processor
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
235 discards input when it starts up.
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
236 Runs the hook `inferior-scheme-mode-hook' \(after the `comint-mode-hook'
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
237 is run).
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 \(Type \\[describe-mode] in the process buffer for a list of commands.)"
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 (interactive (list (if current-prefix-arg
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
241 (read-string "Run Scheme: " scheme-program-name)
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
242 scheme-program-name)))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (if (not (comint-check-proc "*scheme*"))
101745
c9c39ffbecf1 (scheme-args-to-list): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
244 (let ((cmdlist (split-string-and-unquote cmd)))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 (set-buffer (apply 'make-comint "scheme" (car cmdlist)
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
246 (scheme-start-file (car cmdlist)) (cdr cmdlist)))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 (inferior-scheme-mode)))
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
248 (setq scheme-program-name cmd)
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 (setq scheme-buffer "*scheme*")
12867
26e4b5392530 (run-scheme): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9589
diff changeset
250 (pop-to-buffer "*scheme*"))
105798
0ad1fc06bfc8 * puresize.h (BASE_PURESIZE): Increase to 1470000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 101745
diff changeset
251 ;;;###autoload (add-hook 'same-window-buffer-names (purecopy "*scheme*"))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
253 (defun scheme-start-file (prog)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
254 "Return the name of the start file corresponding to PROG.
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
255 Search in the directories \"~\" and \"~/.emacs.d\", in this
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
256 order. Return nil if no start file found."
74521
3fccc1870d62 (scheme-start-file): Use `let*', not `let'.
Eli Zaretskii <eliz@gnu.org>
parents: 74445
diff changeset
257 (let* ((progname (file-name-nondirectory prog))
3fccc1870d62 (scheme-start-file): Use `let*', not `let'.
Eli Zaretskii <eliz@gnu.org>
parents: 74445
diff changeset
258 (start-file (concat "~/.emacs_" progname))
81339
d8ee6aceb564 (scheme-start-file): Use user-emacs-directory.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
259 (alt-start-file (concat user-emacs-directory "init_" progname ".scm")))
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
260 (if (file-exists-p start-file)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
261 start-file
74445
d26696d58462 (run-scheme, scheme-start-file): Search the start file in ~/.emacs.d
Juanma Barranquero <lekktu@gmail.com>
parents: 74439
diff changeset
262 (and (file-exists-p alt-start-file) alt-start-file))))
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
263
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 (defun scheme-send-region (start end)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 "Send the current region to the inferior Scheme process."
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 (interactive "r")
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 (comint-send-region (scheme-proc) start end)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 (comint-send-string (scheme-proc) "\n"))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 (defun scheme-send-definition ()
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 "Send the current definition to the inferior Scheme process."
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 (interactive)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 (save-excursion
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 (end-of-defun)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 (let ((end (point)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (beginning-of-defun)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 (scheme-send-region (point) end))))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 (defun scheme-send-last-sexp ()
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 "Send the previous sexp to the inferior Scheme process."
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 (interactive)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 (scheme-send-region (save-excursion (backward-sexp) (point)) (point)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
284 (defcustom scheme-compile-exp-command "(compile '%s)"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
285 "Template for issuing commands to compile arbitrary Scheme expressions."
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
286 :type 'string
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
287 :group 'cmuscheme)
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 (defun scheme-compile-region (start end)
1355
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
290 "Compile the current region in the inferior Scheme process.
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 \(A BEGIN is wrapped around the region: (BEGIN <region>))"
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 (interactive "r")
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 (comint-send-string (scheme-proc) (format scheme-compile-exp-command
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 (format "(begin %s)"
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (buffer-substring start end))))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 (comint-send-string (scheme-proc) "\n"))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 (defun scheme-compile-definition ()
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 "Compile the current definition in the inferior Scheme process."
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (interactive)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 (save-excursion
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 (end-of-defun)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 (let ((end (point)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 (beginning-of-defun)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 (scheme-compile-region (point) end))))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
307 (defcustom scheme-trace-command "(trace %s)"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
308 "Template for issuing commands to trace a Scheme procedure.
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
309 Some Scheme implementations might require more elaborate commands here.
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
310 For PLT-Scheme, e.g., one should use
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
311
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
312 (setq scheme-trace-command \"(begin (require (lib \\\"trace.ss\\\")) (trace %s))\")
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
313
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
314 For Scheme 48 and Scsh use \",trace %s\"."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
315 :type 'string
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
316 :group 'cmuscheme)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
317
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
318 (defcustom scheme-untrace-command "(untrace %s)"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
319 "Template for switching off tracing of a Scheme procedure.
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
320 Scheme 48 and Scsh users should set this variable to \",untrace %s\"."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
321
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
322 :type 'string
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
323 :group 'cmuscheme)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
324
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
325 (defun scheme-trace-procedure (proc &optional untrace)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
326 "Trace procedure PROC in the inferior Scheme process.
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
327 With a prefix argument switch off tracing of procedure PROC."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
328 (interactive
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
329 (list (let ((current (symbol-at-point))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
330 (action (if current-prefix-arg "Untrace" "Trace")))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
331 (if current
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
332 (read-string (format "%s procedure [%s]: " action current) nil nil (symbol-name current))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
333 (read-string (format "%s procedure: " action))))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
334 current-prefix-arg))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
335 (when (= (length proc) 0)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
336 (error "Invalid procedure name"))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
337 (comint-send-string (scheme-proc)
64786
871d0952aeb3 (scheme-start-file): Replace reference to `user-emacs-directory' by
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
338 (format
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
339 (if untrace scheme-untrace-command scheme-trace-command)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
340 proc))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
341 (comint-send-string (scheme-proc) "\n"))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
342
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
343 (defcustom scheme-macro-expand-command "(expand %s)"
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
344 "Template for macro-expanding a Scheme form.
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
345 For Scheme 48 and Scsh use \",expand %s\"."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
346 :type 'string
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
347 :group 'cmuscheme)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
348
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
349 (defun scheme-expand-current-form ()
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
350 "Macro-expand the form at point in the inferior Scheme process."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
351 (interactive)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
352 (let ((current-form (scheme-form-at-point)))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
353 (if current-form
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
354 (progn
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
355 (comint-send-string (scheme-proc)
64786
871d0952aeb3 (scheme-start-file): Replace reference to `user-emacs-directory' by
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
356 (format
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
357 scheme-macro-expand-command
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
358 current-form))
64786
871d0952aeb3 (scheme-start-file): Replace reference to `user-emacs-directory' by
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
359 (comint-send-string (scheme-proc) "\n"))
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
360 (error "Not at a form"))))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
361
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
362 (defun scheme-form-at-point ()
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
363 (let ((next-sexp (thing-at-point 'sexp)))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
364 (if (and next-sexp (string-equal (substring next-sexp 0 1) "("))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
365 next-sexp
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
366 (save-excursion
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
367 (backward-up-list)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
368 (scheme-form-at-point)))))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
369
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 (defun switch-to-scheme (eob-p)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 "Switch to the scheme process buffer.
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
372 With argument, position cursor at end of buffer."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 (interactive "P")
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
374 (if (or (and scheme-buffer (get-buffer scheme-buffer))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
375 (scheme-interactively-start-process))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 (pop-to-buffer scheme-buffer)
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
377 (error "No current process buffer. See variable `scheme-buffer'"))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
378 (when eob-p
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
379 (push-mark)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
380 (goto-char (point-max))))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 (defun scheme-send-region-and-go (start end)
1355
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
383 "Send the current region to the inferior Scheme process.
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
384 Then switch to the process buffer."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 (interactive "r")
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 (scheme-send-region start end)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 (switch-to-scheme t))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 (defun scheme-send-definition-and-go ()
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
390 "Send the current definition to the inferior Scheme.
1355
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
391 Then switch to the process buffer."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 (interactive)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 (scheme-send-definition)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 (switch-to-scheme t))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 (defun scheme-compile-definition-and-go ()
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
397 "Compile the current definition in the inferior Scheme.
1355
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
398 Then switch to the process buffer."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 (interactive)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 (scheme-compile-definition)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 (switch-to-scheme t))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 (defun scheme-compile-region-and-go (start end)
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
404 "Compile the current region in the inferior Scheme.
1355
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
405 Then switch to the process buffer."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 (interactive "r")
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 (scheme-compile-region start end)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 (switch-to-scheme t))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
410 (defcustom scheme-source-modes '(scheme-mode)
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 94678
diff changeset
411 "Used to determine if a buffer contains Scheme source code.
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 If it's loaded into a buffer that is in one of these major modes, it's
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
413 considered a scheme source file by `scheme-load-file' and `scheme-compile-file'.
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
414 Used by these commands to determine defaults."
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
415 :type '(repeat function)
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
416 :group 'cmuscheme)
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 (defvar scheme-prev-l/c-dir/file nil
1355
1777d125c0a7 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 924
diff changeset
419 "Caches the last (directory . file) pair.
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
420 Caches the last pair used in the last `scheme-load-file' or
64787
d3ba08ae337e (inferior-scheme-mode-hook, inferior-scheme-mode, scheme-prev-l/c-dir/file):
Juanma Barranquero <lekktu@gmail.com>
parents: 64786
diff changeset
421 `scheme-compile-file' command. Used for determining the default
d3ba08ae337e (inferior-scheme-mode-hook, inferior-scheme-mode, scheme-prev-l/c-dir/file):
Juanma Barranquero <lekktu@gmail.com>
parents: 64786
diff changeset
422 in the next one.")
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 (defun scheme-load-file (file-name)
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
425 "Load a Scheme file FILE-NAME into the inferior Scheme process."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 (interactive (comint-get-source "Load Scheme file: " scheme-prev-l/c-dir/file
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 38412
diff changeset
427 scheme-source-modes t)) ; t because `load'
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 ; needs an exact name
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 (comint-check-source file-name) ; Check to see if buffer needs saved.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 (setq scheme-prev-l/c-dir/file (cons (file-name-directory file-name)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 (file-name-nondirectory file-name)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 (comint-send-string (scheme-proc) (concat "(load \""
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 file-name
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 "\"\)\n")))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 (defun scheme-compile-file (file-name)
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
437 "Compile a Scheme file FILE-NAME in the inferior Scheme process."
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 (interactive (comint-get-source "Compile Scheme file: "
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 scheme-prev-l/c-dir/file
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 scheme-source-modes
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 38412
diff changeset
441 nil)) ; nil because COMPILE doesn't
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 ; need an exact name.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 (comint-check-source file-name) ; Check to see if buffer needs saved.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 (setq scheme-prev-l/c-dir/file (cons (file-name-directory file-name)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 (file-name-nondirectory file-name)))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 (comint-send-string (scheme-proc) (concat "(compile-file \""
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 file-name
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 "\"\)\n")))
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 (defvar scheme-buffer nil "*The current scheme process buffer.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 MULTIPLE PROCESS SUPPORT
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 ===========================================================================
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 Cmuscheme.el supports, in a fairly simple fashion, running multiple Scheme
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
456 processes. To run multiple Scheme processes, you start the first up with
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
457 \\[run-scheme]. It will be in a buffer named *scheme*. Rename this buffer
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
458 with \\[rename-buffer]. You may now start up a new process with another
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
459 \\[run-scheme]. It will be in a new buffer, named *scheme*. You can
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 switch between the different process buffers with \\[switch-to-buffer].
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 Commands that send text from source buffers to Scheme processes --
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
463 like `scheme-send-definition' or `scheme-compile-region' -- have to choose a
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
464 process to send to, when you have more than one Scheme process around. This
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
465 is determined by the global variable `scheme-buffer'. Suppose you
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 have three inferior Schemes running:
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 Buffer Process
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 foo scheme
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 bar scheme<2>
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 *scheme* scheme<3>
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 If you do a \\[scheme-send-definition-and-go] command on some Scheme source
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 code, what process do you send it to?
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
474 - If you're in a process buffer (foo, bar, or *scheme*),
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 you send it to that process.
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 - If you're in some other buffer (e.g., a source file), you
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
477 send it to the process attached to buffer `scheme-buffer'.
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
478 This process selection is performed by function `scheme-proc'.
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
480 Whenever \\[run-scheme] fires up a new process, it resets `scheme-buffer'
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
481 to be the new process's buffer. If you only run one process, this will
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
482 do the right thing. If you run multiple processes, you can change
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
483 `scheme-buffer' to another process buffer with \\[set-variable].
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
485 More sophisticated approaches are, of course, possible. If you find yourself
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 needing to switch back and forth between multiple processes frequently,
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 you may wish to consider ilisp.el, a larger, more sophisticated package
33482
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
488 for running inferior Lisp and Scheme processes. The approach taken here is
ae573ea17383 Doc fixes.
Dave Love <fx@gnu.org>
parents: 32662
diff changeset
489 for a minimal, simple implementation. Feel free to extend it.")
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 (defun scheme-proc ()
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
492 "Return the current Scheme process, starting one if necessary.
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
493 See variable `scheme-buffer'."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
494 (unless (and scheme-buffer
64786
871d0952aeb3 (scheme-start-file): Replace reference to `user-emacs-directory' by
Juanma Barranquero <lekktu@gmail.com>
parents: 64762
diff changeset
495 (get-buffer scheme-buffer)
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
496 (comint-check-proc scheme-buffer))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
497 (scheme-interactively-start-process))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
498 (or (scheme-get-process)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
499 (error "No current process. See variable `scheme-buffer'")))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500
64745
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
501 (defun scheme-get-process ()
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
502 "Return the current Scheme process or nil if none is running."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
503 (get-buffer-process (if (eq major-mode 'inferior-scheme-mode)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
504 (current-buffer)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
505 scheme-buffer)))
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
506
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
507 (defun scheme-interactively-start-process (&optional cmd)
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
508 "Start an inferior Scheme process. Return the process started.
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
509 Since this command is run implicitly, always ask the user for the
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
510 command to run."
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
511 (save-window-excursion
cd4c4b49a4c2 (scheme-trace-command, scheme-untrace-command)
Eli Zaretskii <eliz@gnu.org>
parents: 64091
diff changeset
512 (run-scheme (read-string "Run Scheme: " scheme-program-name))))
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513
64787
d3ba08ae337e (inferior-scheme-mode-hook, inferior-scheme-mode, scheme-prev-l/c-dir/file):
Juanma Barranquero <lekktu@gmail.com>
parents: 64786
diff changeset
514 ;;; Do the user's customization...
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
516 (defcustom cmuscheme-load-hook nil
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 "This hook is run when cmuscheme is loaded in.
21088
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
518 This is a good place to put keybindings."
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
519 :type 'hook
ac1673121774 Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20601
diff changeset
520 :group 'cmuscheme)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 42205
diff changeset
521
267
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 (run-hooks 'cmuscheme-load-hook)
d83efd759350 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 267
diff changeset
524 (provide 'cmuscheme)
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
525
57150
e8b02be78ea7 Typo in the menu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
526 ;; arch-tag: e8795f4a-c496-45a2-97b4-8e0f2a2c57d2
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
527 ;;; cmuscheme.el ends here