comparison man/ilisp.texi @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 4b173ad71786
comparison
equal deleted inserted replaced
-1:000000000000 0:376386a54a3c
1 \input texinfo @c -*-texinfo-*- Last modified: April 10, 1993
2 @setfilename ../info/ilisp.info
3 @settitle The ILISP Inferior LISP Interface
4
5 @c NOTE: KEYBINDING DESCRIPTIONS IN THIS FILE
6 @c
7 @c Texinfo doesn't support the functionality of substitute-command-keys,
8 @c which kind of makes things tough when the bindings change.
9 @c
10 @c Note that all the keys here which use the ILISP prefix have
11 @c @key{C-z} before them, so a global replace can be used to put in a
12 @c specific value for this (if wanted). The whole string should be
13 @c rpelaced, as in (replace-string "@key{C-z}" "@key{C-c}"). Any occurrances
14 @c of this should be in the proper @kbd{} construct, or in a table.
15 @c
16 @c Key command descriptions in tables have the function listed after
17 @c them, as in "@item RET (return-ilisp)" so it should be poosible
18 @c to update these descriptions with a little elisp code.
19 @c
20 @c Todd Kaufmann 17-Mar-91
21 @c toad@cs.cmu.edu
22
23
24 @c ================================================================
25 @c THIS file has the new style title page commands.
26
27 @c Run using special version of `texinfo.tex'.
28 @c Version 2.13 or higher is recommended.
29
30 @c Also, run `makeinfo' rather than `texinfo-format-buffer'.
31 @c (Get the texinfo2 package.)
32 @c ================================================================
33
34 @c Use this if you want small book size like the GNU Emacs bound book.
35 @c smallbook
36
37 @c tex
38 @c \overfullrule=0pt
39 @c end tex
40
41 @comment INDEX USAGE:
42 @c
43 @c @cindex concept
44 @c @findex function
45 @c @vindex variable
46 @c @kindex key
47 @c @pindex command (normally program)
48 @c
49 @c not used:
50 @c @tindex (data)type
51
52
53 @c
54 @c Combine indices.
55 @c @synindex cp fn
56 @c @syncodeindex vr fn
57 @c @syncodeindex ky fn
58 @c @syncodeindex pg fn
59 @c @syncodeindex tp fn
60 @c oops: texinfo-format-buffer ignores synindex
61 @c So, use makeinfo.c. Get texinfo2.tar.Z off of prep.ai.mit.edu
62 @c
63
64 @c TODO:
65 @c - Add doc for rlogin lisps.
66 @c - Add doc for trace-defun-break
67
68
69 @ifinfo
70 This file documents ILISP.
71
72 This is edition 0.11 of the ILISP manual
73 for ILISP Version 5.5.
74
75 Copyright (C) 1991,1992,1993 Todd Kaufmann
76
77 Permission is granted to make and distribute verbatim copies of
78 this manual provided the copyright notice and this permission notice
79 are preserved on all copies.
80
81 Permission is granted to copy and distribute modified versions of this
82 manual under the conditions for verbatim copying, provided that the entire
83 resulting derived work is distributed under the terms of a permission
84 notice identical to this one.
85
86 Permission is granted to copy and distribute translations of this manual
87 into another language, under the above conditions for modified versions,
88 except that this permission notice may be stated in a translation approved
89 by the Foundation.
90 @end ifinfo
91 @c
92
93 @c
94 @setchapternewpage odd
95
96 @titlepage
97 @title ILISP User Manual
98 @subtitle A GNU Emacs Interface for Interacting with Lisp
99 @subtitle Edition 0.11, June 1993
100 @subtitle For ILISP Version 5.5
101 @c
102 @c the following comment string is removed by the ctrl-c-doc.sh script,
103 @c which can be used to change all ilisp-prefix bindings to C-c (or
104 @c other).
105 @c
106 @comment ctrl-C version: @subtitle This is the ``@key{C-z}'' version of the manual.
107
108 @author by Todd Kaufmann, Chris McConnell and Ivan Vazquez
109
110 @page
111 @vskip 0pt plus 1filll
112 Copyright @copyright{} 1991, 1992, 1993 Todd Kaufmann
113
114 @sp 2
115 This is edition 0.11 of the @cite{ILISP User Manual}
116 for ILISP Version 5.5,
117 June 1993.
118
119 @sp 2
120
121 Permission is granted to make and distribute verbatim copies of
122 this manual provided the copyright notice and this permission notice
123 are preserved on all copies.
124
125 Permission is granted to copy and distribute modified versions of this
126 manual under the conditions for verbatim copying, provided that the entire
127 resulting derived work is distributed under the terms of a permission
128 notice identical to this one.
129
130 Permission is granted to copy and distribute translations of this manual
131 into another language, under the above conditions for modified versions,
132 except that this permission notice may be stated in a translation approved
133 by this author.
134 @end titlepage
135 @page
136
137
138 @node Top, Distribution, (dir), (dir)
139 @comment node-name, next, previous, up
140
141
142 @ifinfo
143 This Info file documents ILISP, a GNU Emacs interface for a lisp
144 running in a buffer.
145 @comment ctrl-C version: @sp
146 @comment ctrl-C version: This is the ``@key{C-z}'' version of the manual.
147 @end ifinfo
148
149 @menu
150 * Distribution:: How to get the latest ILISP distribution.
151
152 * Acknowledgements:: Acknowledgements
153 * Introduction:: An introduction to ILISP and its features.
154 * Installation:: How to install ILISP.
155 * Starting up:: How to run a Lisp process using ILISP.
156
157 * Buffers of ILISP:: Buffers used by ILISP, and their commands.
158 * ILISP Commands::
159 * Customization:: Description of ILISP variables and hooks.
160 * Dialects:: How ILISP knows how to communicate with Lisp,
161 and how to define new dialects.
162
163 Indices:
164 * Concept index:: General concepts.
165 * Key index:: ILISP key sequences.
166 * Command index:: Commands by name.
167 * Variable index:: Variables and hooks that influence ILISP's
168 behavior.
169
170 * Function index:: Internal Emacs Lisp functions.
171 @end menu
172
173 @node Distribution, Acknowledgements, Top, Top
174 @unnumbered How to get the latest ILISP distribution.
175
176 ILISP is "free"; this means that everyone is free to use it and free
177 to redistribute it on a free basis. ILISP is not in the public domain;
178 it is copyrighted and there are restrictions on its distribution, but
179 these restrictions are designed to permit everything that a good
180 cooperating citizen would want to do. What is not allowed is to try to
181 prevent others from further sharing any version of ILISP that they might
182 get from you. The precise conditions appears following this section.
183
184 The easiest way to get a copy of ILISP is from someone else who has it.
185 You need not ask for permission to do so, or tell any one else; just
186 copy it.
187
188 If you do start using the package, please send mail to
189 @samp{ilisp-request@@lehman.com} so that I can keep a mailing list of
190 users.
191
192 Please send bugs, questions or suggestions for discussion to @samp{ilisp@@lehman.com}
193
194 @menu
195 * FTP directions:: FTP directions
196 @end menu
197
198 @node FTP directions, , , Distribution
199 @unnumberedsec FTP directions
200 @cindex FTP site
201 @cindex Anonymous FTP
202 @cindex How to get
203 @cindex Getting ILISP
204 @noindent
205 You can anonymously ftp the source files from FTP.CS.CMU.EDU:
206
207 @itemize @bullet
208 @item
209 Ftp to ftp.cs.cmu.edu (128.2.206.173)
210 @item
211 login as anonymous, with user@@host as password
212 @item
213 @code{cd /user/ai/lang/lisp/util/emacs/ilisp/57}
214 @item
215 @code{binary}
216 @item
217 @code{get ilisp.tgz}
218 @end itemize
219
220 @noindent
221 Or get whatever single files you need.
222
223 @noindent
224 Unpack and install:
225
226 @code{uncompress ilisp.tar.Z; tar xf ilisp.tar}
227
228 @xref{Installation}.
229
230 If you want to use Thinking Machines' completion code, then Ftp it from
231 THINK.COM
232
233 It no longer comes as part of the distribution.
234
235 @node Acknowledgements, Introduction, Distribution, Top
236 @unnumbered Acknowledgements
237
238 ILISP replaces the standard inferior LISP mode. ILISP is based on
239 comint mode and derived from a number of different interfaces including
240 Symbolics, cmulisp, and Thinking Machines.
241
242 There are many people that have taken the time to report bugs, make
243 suggestions and even better send code to fix bugs or implement new
244 features.
245
246 Thanks to Neil Smithline, David Braunegg, Fred White, Jim Healy, Larry
247 Stead, Hans Chalupsky, Michael Ernst, Frank Ritter, Tom Emerson, David
248 Duff, Dan Pierson, Michael Kashket, Jamie Zawinski, Bjorn Victor, Brian
249 Dennis, Guido Bosch, Chuck Irvine, Thomas M. Breuel, Ben Hyde, Paul
250 Fuqua (for the CMU-CL GC display code) and Marco Antoniotti for bug
251 reports, suggestions and code. My apologies to those whom I may have
252 forgotten.
253
254 Special thanks to Todd Kaufmann for the texinfo file, work on bridge,
255 epoch-pop and for really exercising everything.
256
257 Please send bug reports, fixes and extensions to
258 @samp{ilisp@@lehman.com} so I can merge them into the master
259 source.
260 @noindent
261 @example
262 --Chris McConnell 18-Mar-91
263 --Ivan Vazquez 27-Jun-93
264 @end example
265
266
267 @node Introduction, Installation, Acknowledgements, Top
268 @unnumbered Introduction
269 @cindex features
270
271 ILISP is an interface from GNU Emacs to an inferior LISP. It has the
272 following features:
273
274 @itemize @bullet
275 @item
276 Runs under emacs-18, fsf emacs-19, and Lucid emacs-19.
277
278 @item
279 Support for multiple LISP dialects including Lucid, Allegro and CMU
280 on multiple machines even at the same time.
281
282 @item
283 Dynamically sized pop-up windows that can be buried and scrolled from
284 any window.
285
286 @item
287 Packages are properly handled including the distinction between
288 exported and internal symbols.
289
290 @item
291 Synchronous, asynchronous or batch eval and compile of files, regions,
292 definitions and sexps with optional switching and automatic calling.
293
294 @item
295 Arglist, documentation, describe, inspect and macroexpand.
296
297 @item
298 Completion of filename components and LISP symbols including partial matches.
299
300 @item
301 Find source both with and without help from the inferior LISP,
302 including CLOS methods, multiple definitions and multiple files.
303
304
305 @item
306 Edit the callers of a function with and without help from the
307 inferior LISP.
308
309 @item
310 Trace/untrace a function.
311
312 @item
313 @kbd{M-q} (``Fill-paragraph'') works properly on paragraphs in comments,
314 strings and code.
315
316 @item
317 Find unbalanced parentheses.
318
319 @item
320 Super brackets.
321
322 @item
323 Handles editing, entering and indenting full LISP expressions.
324
325 @item
326 Next, previous, and similar history mechanism compatible with comint.
327
328 @item
329 Handles LISP errors.
330
331 @item
332 Result histories are maintained in the inferior LISP.
333
334 @item
335 Does not create spurious symbols and handles case issues.
336
337 @item
338 Online manuals for ILISP and Common LISP.
339
340 @end itemize
341
342 @node Installation, Starting up, Introduction, Top
343 @chapter How to install ILISP
344 @cindex Installation
345 Installation of ILISP and some initialization of your computing
346 environment are described in this chapter. Please read the following
347 sections carefully before getting started with ILISP.
348
349 If ILISP has already been installed at your location, you can probably
350 skip ahead to ``Autoloading.''
351
352 Note that jwz's byte-compiler is required when compiling ILISP. If you
353 don't have it, get it from
354 @code{archive.cis.ohio-state.edu:/pub/gnu/emacs/elisp-archive/bytecomp2.tar.Z}
355
356 You don't need it if you are running emacs version 19 as both the Fsf
357 and Lucid releases include this in their distributions.
358
359 @menu
360 * Makefile configuration::
361 * Files of ILISP::
362 * Autoloading:: How to define autoload entries.
363 @end menu
364
365 @node Makefile configuration, Files of ILISP, , Installation
366 @comment node-name, next, previous, up
367 @section Makefile configuration
368
369 Some configuration needs to be done before compiling the emacs-lisp
370 files that comprise ILISP. This should be done in the
371 @code{Makefile-ilisp} file in the section of the file marked
372 CONFIGURATION SECTION.
373
374 First, set the @code{YOUR_EMACS} variable to be the pathname of the
375 emacs you will be using ILISP with. This is the emacs that will be used
376 to compile ILISP with.
377
378 If you don't have jwz's byte compiler in your standard load path then
379 you will have to uncomment the @code{BYTECOMP} line and set it to point
380 to the correct location of the bytecomp files.
381
382 If you do not have comint already in your emacs ( both Fsf 19 and Lucid
383 19 do ) then uncomment the @code{USE_BUNDLED_COMINT} line. This will
384 cause the copy of @code{comint.el} to be moved from the @code{Extras}
385 directory into the main ILISP directory.
386
387 The advice section is left uncommented out in the distributed
388 @code{Makefile-ilisp} because most people will not have
389 @code{advice.elc} in their load path. Only Lucid emacs 19.8 will have
390 this in the standard distribution. If you do have it in your load path,
391 then to avoid having two copies in your load-path and avoiding future
392 confusion then comment out both the @code{ADVICE} and
393 @code{USE_BUNDLED_ADVICE} lines.
394
395 @cindex Compiling ILISP files
396 @cindex Byte-compiling ILISP files
397 @findex ilisp-compile-inits
398 @vindex ilisp-load-inits
399 @vindex ilisp-site-hook
400 @vindex ilisp-program
401 @vindex ilisp-init-binary-command
402 @vindex ilisp-init-binary-extension
403
404 You can then compile everything with the shell command
405
406 @code{make -f Makefile-ilisp <your target here>'}
407
408 Where the possible targets are @code{emacs_18}, @code{emacs_18_epoch},
409 @code{emacs_18_menu}, and @code{emacs_19}.
410
411 Ignore any compilation warnings unless they result in ILISP not
412 compiling completely.
413
414 You should then copy relevant sections of @code{ilisp.emacs} to your
415 @code{.emacs} or to the system-wide @code{default.el} file, depending on
416 who will be using ILISP.
417
418 You should add the directory where all of the ILISP emacs-lisp files
419 reside to your @code{load-path}. There is an example of this in
420 @code{ilisp.emacs}
421
422 The first time a dialect is started, the interface files will complain
423 about not being compiled, just hit @kbd{i} to ignore the message. Once
424 a lisp dialect is started up, you should execute the command
425 @code{ilisp-compile-inits} which will compile the @samp{*.lisp} files
426 and write them to the same directory as the ilisp files.@refill
427
428 The binary files should have a unique
429 extension for each different combination of architecture and
430 LISP dialect. You will need to change
431 @code{ilisp-init-binary-extension} and
432 @code{ilisp-init-binary-command} to get additional
433 extensions. The binary for each different architecture
434 should be different. If you want to build the interface
435 files into a LISP world, you will also need to set
436 @code{ilisp-load-inits} to @code{nil} in the same place that
437 you change @code{ilisp-program} to load the LISP
438 world.@refill
439
440
441 There is an @code{ilisp-site-hook} for initializing site specific stuff
442 like program locations when ILISP is first loaded. You may want to
443 define appropriate autoloads in your system Emacs start up file.
444
445 Example site init:
446 @example
447 ;;; CMU site
448 (setq ilisp-site-hook
449 '(lambda ()
450 (setq ilisp-motd "CMU ILISP V%s")
451 (setq expand-symlinks-rfs-exists t)
452 (setq allegro-program "/usr/misc/.allegro/bin/cl")
453 (setq lucid-program "/usr/misc/.lucid/bin/lisp")))
454 @end example
455
456
457
458 @node Files of ILISP, Autoloading, Makefile configuration, Installation
459 @section Files of ILISP
460 @cindex Files of ILISP
461 The files you need to use ilisp are:
462
463 @table @file
464
465 @item ilisp.emacs
466 File with sample @file{.emacs} code for ILISP.
467 @cindex @file{ilisp.emacs}
468
469 @item symlink-fix.el
470 Expand pathnames resolving links.
471 @cindex @file{symlink-fix.el}
472
473 @item completer.el
474 Partial completion code.
475 @cindex @file{completer.el}
476
477 @item bridge.el
478 Process to process communication.
479 @cindex @file{bridge.el}
480
481 @item comint.el
482 The basic comint abstraction. You only need this if running emacs-18.
483 @cindex @file{comint.el}
484
485 @item comint-ipc.el
486 Extensions for sending commands and getting results.
487 @cindex @file{comint-ipc.el}
488
489 @item ilisp-ext.el
490 Standalone lisp-mode extensions.
491 @cindex @file{ilisp-ext.el}
492
493 @item ilisp-bug.el
494 ILISP bug submittal code.
495 @cindex @file{ilisp-bug.el}
496
497 @item compat.el
498 Compatibility code between fsf-18, fsf-19 and lemacs-19.
499 @cindex @file{compat.el}
500
501 @item ilisp-inp.el
502 Buffer input module.
503 @cindex @file{ilisp-inp.el}
504
505 @item ilisp-def.el
506 Variable definitions.
507 @cindex @file{ilisp-def.el}
508
509 @item ilisp-ind.el
510 Indentation code.
511 @cindex @file{ilisp-ind.el}
512
513 @item ilisp-mov.el
514 Buffer-point movement code.
515 @cindex @file{ilisp-mov.el}
516
517 @item ilisp-key.el
518 Keymap setups, including @code{ilisp-lispm-bindings}.
519 @cindex @file{ilisp-key.el}
520
521 @item ilisp-doc.el
522 ILISP mode documenation.
523 @cindex @file{ilisp-doc.el}
524
525 @item ilisp-mod.el
526 ILISP mode definition.
527 @cindex @file{ilisp-mod.el}
528
529 @item ilisp-prn.el
530 Parenthesis handling.
531 @cindex @file{ilisp-prn.el}
532
533 @item ilisp-el.el
534 Emacs-lisp additions.
535 @cindex @file{ilisp-el.el}
536
537 @item ilisp-sym.el
538 ILISP symbol handling.
539 @cindex @file{ilisp-sym.el}
540
541 @item ilisp-low.el
542 Low level interface code.
543 @cindex @file{ilisp-low.el}
544
545 @item ilisp-hi.el
546 High level interface code.
547 @cindex @file{ilisp-hi.el}
548
549 @item ilisp-out.el
550 Output handling, include typeout window (a popper replacement).
551 @cindex @file{ilisp-out.el}
552
553 @item ilisp-prc.el
554 Process handling code.
555 @cindex @file{ilisp-prc.el}
556
557 @item ilisp-val.el
558 Buffer value interface.
559 @cindex @file{ilisp-val.el}
560
561 @item ilisp-rng.el
562 Match ring code.
563 @cindex @file{ilisp-rng.el}
564
565 @item ilisp-utl.el
566 Misc. utilities.
567 @cindex @file{ilisp-utl.el}
568
569 @item ilisp-hnd.el
570 Error handling.
571 @cindex @file{ilisp-hnd.el}
572
573 @item ilisp-kil.el
574 Interface to reset/kill/abort inferior lisp.
575 @cindex @file{ilisp-kil.el}
576
577 @item ilisp-snd.el
578 ilisp-send definitions and associated code.
579 @cindex @file{ilisp-snd.el}
580
581 @item ilisp-cmt.el
582 Comint related code/setup.
583 @cindex @file{ilisp-cmt.el}
584
585 @item ilisp-cmp.el
586 ILISP completer related code.
587 @cindex @file{ilisp-cmp.el}
588
589 @item ilisp-xfr.el
590 Transfer between lisp <-> emacs code.
591 @cindex @file{ilisp-xfr.el }
592
593 @item ilisp-cl.el
594 Commo-Lisp dialect definition.
595 @cindex @file{ilisp-cl.el}
596
597 @item ilisp-src.el
598 ILISP source code module.
599 @cindex @file{ilisp-src.el}
600
601 @item ilisp-bat.el
602 ILISP batch code module.
603 @cindex @file{ilisp-bat.el}
604
605 @item ilisp.el
606 File to be loaded, loads in all necessary parts of ILISP.
607 @cindex @file{ilisp.el}
608
609 @item *.lisp
610 ILISP support code. Each dialect will have one of these files.
611
612 @item *.lcd
613 Package descriptors for the Lisp Code Directory.
614
615 @item ilisp.texi
616 Texinfo file for ILISP.
617 @cindex @file{ilisp.texi}
618
619 @end table
620
621 @cindex @file{.el} files
622
623 @node Autoloading, , Files of ILISP, Installation
624 @section How to define autoload entries
625 @cindex autoload definitions
626 @cindex defining autoloads
627 @cindex @file{.emacs} forms
628 A complete example of things you may want to add to your @code{.emacs}
629 can be found in the in the file @file{ilisp.emacs} in the
630 @code{ilisp-directory} what follows is that file.
631
632
633 @example
634 @c start of ilisp.emacs
635 ;;;
636 ;;; This file shows examples of some of the things you might want to
637 ;;; do to install or customize ILISP. You may not want to include all
638 ;;; of them in your .emacs. For example, the default key binding
639 ;;; prefix for ILISP is C-z and this file changes the default prefix to
640 ;;; C-c. For more information on things that can be changed, see the
641 ;;; file ilisp.el.
642 ;;;
643
644 ;;; If ilisp lives in some non-standard directory, you must tell emacs
645 ;;; where to get it. This may or may not be necessary.
646 (setq load-path (cons (expand-file-name "~jones/emacs/ilisp/") load-path))
647
648 ;;; If you always want partial minibuffer completion
649 (require 'completer)
650
651 ;;; If want TMC completion then you will have to Ftp it yourself from think.com
652 ;;; It's become to flaky for me to deal with. -- Ivan
653 ;;;(load "completion")
654 ;;;(initialize-completions)
655
656 ;;; If you want to redefine typeout-window keys:
657 (add-hook 'ilisp-load-hook
658 '(lambda ()
659 (define-key global-map "\C-c1" 'ilisp-bury-output)
660 (define-key global-map "\C-cv" 'ilisp-scroll-output)
661 (define-key global-map "\C-cg" 'ilisp-grow-output)))
662
663
664 (autoload 'run-ilisp "ilisp" "Select a new inferior LISP." t)
665 ;;; Autoload based on your LISP. You only really need the one you use.
666 ;;; If called with a prefix, you will be prompted for a buffer and
667 ;;; program.
668 ;;;
669 ;;; [Back to the old way now -- Ivan Mon Jun 28 23:30:51 1993]
670 ;;;
671 (autoload 'clisp "ilisp" "Inferior generic Common LISP." t)
672 (autoload 'allegro "ilisp" "Inferior Allegro Common LISP." t)
673 (autoload 'lucid "ilisp" "Inferior Lucid Common LISP." t)
674 (autoload 'cmulisp "ilisp" "Inferior CMU Common LISP." t)
675 (autoload 'kcl "ilisp" "Inferior Kyoto Common LISP." t)
676 (autoload 'akcl "ilisp" "Inferior Austin Kyoto Common LISP." t)
677 (autoload 'ibcl "ilisp" "Ibuki Common LISP." t)
678 (autoload 'scheme "ilisp" "Inferior generic Scheme." t)
679 (autoload 'oaklisp "ilisp" "Inferior Oaklisp Scheme." t)
680
681 ;;; Define where LISP programs are found. (This may already be done
682 ;;; at your site.)
683 (setq allegro-program "/usr/misc/.allegro/bin/cl")
684 (setq lucid-program "/usr/misc/.lucid/bin/lisp")
685 (setq cmulisp-program "/usr/misc/.cmucl/bin/lisp")
686
687 ;;; If you run cmu-cl then set this to where your source files are.
688 (setq cmulisp-local-source-directory
689 "/usr/local/utils/CMU-CL/")
690
691
692 ;;; This makes reading a lisp file load in ilisp.
693 (set-default 'auto-mode-alist
694 (append '(("\\.lisp$" . lisp-mode)) auto-mode-alist))
695 (setq lisp-mode-hook '(lambda () (require 'ilisp)))
696
697 ;;; Sample load hook
698 (add-hook 'ilisp-load-hook
699 '(lambda ()
700 ;; Change default key prefix to C-c
701 (setq ilisp-prefix "\C-c")
702
703 ;; Define LispMachine-like key bindings, too.
704 (ilisp-lispm-bindings)
705
706 ;; Sample initialization hook. Set the inferior LISP directory to
707 ;; the directory of the buffer that spawned it on the first prompt.
708 (setq ilisp-init-hook
709 '(lambda ()
710 (default-directory-lisp ilisp-last-buffer)))))
711 @c end of ilisp.emacs
712 @end example
713
714 @c ==================================================================
715 @node Starting up, Buffers of ILISP, Installation, Top
716 @chapter How to run a Lisp process using ILISP
717 @cindex Running lisp
718 @cindex Starting up lisp
719 @cindex Supported dialects
720 @cindex Dialects supported
721 @pindex run-ilisp
722 @pindex clisp
723 @pindex allegro
724 @pindex lucid
725 @pindex cmulisp
726 @pindex kcl
727 @pindex akcl
728 @pindex ibcl
729 @pindex scheme
730 @pindex oaklisp
731
732 To start a Lisp use @kbd{M-x run-ilisp}, or a specific dialect like
733 @kbd{M-x allegro}. If called with a prefix you will be prompted for a
734 buffer name and a program to run. The default buffer name is the name
735 of the dialect. The default program for a dialect will be the value of
736 DIALECT-program or the value of ilisp-program inherited from a less
737 specific dialect. If there are multiple LISP's, use the dialect name or
738 @kbd{M-x select-ilisp} (@kbd{@key{C-z} S}) to select the current ILISP
739 buffer.
740
741 Entry into ILISP mode runs the hooks on @code{comint-mode-hook} and
742 @code{ilisp-mode-hook} and then DIALECT-hooks specific to LISP
743 dialects in the nesting order above. Many dialects call
744 @code{ilisp-load-init} in their dialect setup.
745
746 These are the currently supported dialects. The dialects
747 are listed so that the indentation correponds to the hierarchical
748 relationship between dialects.
749 @example
750 clisp
751 allegro
752 lucid
753 kcl
754 akcl
755 ibcl
756 cmulisp
757 scheme
758 oaklisp
759 @end example
760
761 If anyone figures out support for other dialects I would be happy
762 to include it in future releases. @xref{Dialects}.
763
764 To define a new dialect, @xref{Defining new dialects} and @xref{Customization}.
765
766
767 @node Buffers of ILISP, ILISP Commands, Starting up, Top
768 @chapter Buffers used by ILISP, and their commands
769 @cindex buffers of ILISP
770 @cindex ILISP buffers
771 @table @code
772
773 @item *@var{dialect}*
774 The Lisp listener buffer. Forms can be entered in this buffer in, and
775 they will be sent to lisp when you hit return if the form is complete.
776 This buffer is in ilisp-mode, which is built on top of comint-mode, and
777 all comint commands such as history mechanism and job control are
778 available.
779 @c xref..
780
781 @item @var{lisp-mode-buffers}
782 A buffer is assumed to contain Lisp source code if its major mode is in
783 the list @code{lisp-source-modes}. If it's loaded into a buffer that is
784 in one of these major modes, it's considered a lisp source file by
785 @code{find-file-lisp}, @code{load-file-lisp} and
786 @code{compile-file-lisp}.
787 Used by these commands to determine defaults.@refill
788
789 @item @code{*Completions*}
790 @cindex @code{*Completions*} buffer
791 Used for listing completions of symbols or files by the completion commands.
792 @xref{Completion}.
793
794 @item *Aborted Commands*
795 @cindex @code{*Aborted Commands*} buffer
796 @xref{Interrupts}.
797
798 @item *Errors*
799 @itemx *Output*
800 @itemx *Error Output*
801 @cindex @code{*Error Output*} buffer
802 @cindex @code{*Errors*} buffer
803 @cindex @code{*Output*} buffer
804 used to pop-up results and errors from the inferior LISP.
805
806 @item *ilisp-send*
807 @cindex @code{*ilisp-send*} buffer
808 Buffer containing the last form sent to the inferior LISP.
809
810 @item *Edit-Definitions*
811 @itemx *All-Callers*
812 @cindex @code{*Edit-Definitions*} buffer
813 @cindex @code{*All-Callers*} buffer
814 @xref{Source code commands}.
815
816 @item *Last-Changes*
817 @itemx *Changed-Definitions*
818 @cindex @code{*Last-Changes*} buffer
819 @cindex @code{*Changed-Definitions*} buffer
820 @xref{Batch commands}.
821 @end table
822
823 @menu
824 * Typeout windows:: temporary windows used for display.
825 * Switching buffers:: Switching buffers
826 @end menu
827
828 @node Typeout windows, Switching buffers, , Buffers of ILISP
829 @section Typeout windows
830 @cindex Typeout windows
831
832 All ILISP output is funneled through the function which is bound to
833 the hook @code{ilisp-display-output-function}. The function gets
834 a single argument, a string, and should make that output visible to
835 the user somehow.
836
837 One possible choice for output display is
838 @code{ilisp-display-output-in-typeout-window},
839 which pops up a window at the top of the current screen which is
840 just large enough to display the output. This window can be
841 "remote controlled" by the commands @code{ilisp-scroll-output},
842 @code{ilisp-bury-output}, and @code{ilisp-grow-output}.
843
844 Unlike the old popper facility, the ilisp typeout window facility
845 does not trounce on any existing Emacs functions or on any common
846 key bindings, like @kbd{C-x o}.
847
848 Other built-in functions which might be useful as values for
849 @code{ilisp-display-output-function} include
850 @code{ilisp-display-output-default},
851 @code{ilisp-display-output-adaptively},
852 @code{ilisp-display-output-in-lisp-listener},
853 @code{ilisp-display-output-in-temp-buffer}, and
854 @code{ilisp-display-output-in-typeout-window}.
855
856 The default display function is @code{ilisp-display-output-default},
857 which obeys the @code{lisp-no-popper} variable.
858
859 Users are encouraged to write their own output display functions
860 to get the exact desired behavior, displaying on a private emacs
861 screen, in a pop-up dialog box, or whetever.
862
863
864 @table @kbd
865
866 @item @key{C-z} 1 (ilisp-bury-output)
867 deletes and buries the typeout output window.
868 @kindex C-z 1
869 @pindex ilisp-bury-output
870 @cindex bury output window
871
872
873 @item @key{C-z} v (ilisp-scroll-output)
874 scrolls the output window if it is showing, otherwise does nothing.
875 If it is called with a negative prefix, it will scroll backwards.
876 @cindex scrolling output
877 @pindex ilisp-scroll-output
878 @kindex C-z v
879
880 @item @key{C-z} G (ilisp-grow-output)
881 will grow the output window if showing by the prefix number of lines.
882 @cindex grow output window
883 @pindex ilisp-grow-output
884 @kindex C-z G
885
886 @end table
887
888 An alternative to typeout windows is to always have the inferior LISP
889 buffer visible and have all output go there. Setting
890 @code{lisp-no-popper} to @code{t} will cause all output to go to the
891 inferior LISP buffer. Setting @code{lisp-no-popper} to @code{'message}
892 will make output of one line go to the message window. Setting
893 @code{comint-always-scroll} to @code{t} will cause process output to
894 always be visible. If a command gets an error, you will be left in the
895 break loop.@refill
896
897 @cindex Turning off typeout windows
898 @vindex comint-always-scroll
899 @vindex lisp-no-popper
900
901
902
903 @node Switching buffers, ,Typeout windows, Buffers of ILISP
904 @section Switching buffers
905
906 Commands to make switching between buffers easier.
907 @cindex Switching buffers
908
909 @table @kbd
910 @item @key{C-z} b (switch-to-lisp)
911 @kindex @key{C-z} b
912 @pindex switch-to-lisp
913 will pop to the current ILISP buffer or if already in an ILISP buffer,
914 it will return to the buffer that last switched to an ILISP buffer.
915 With a prefix, it will also go to the end of the buffer. If you do not
916 want it to pop, set @code{pop-up-windows} to nil.
917 @vindex pop-up-windows
918
919
920 @item M-C-l (previous-buffer-lisp)
921 will switch to the last visited buffer in the current window or the Nth
922 previous buffer with a prefix.
923 @cindex Previous lisp buffer
924 @pindex previous-buffer-lisp
925 @kindex M-C-l
926
927 @end table
928
929
930 @node ILISP Commands, Customization, Buffers of ILISP, Top
931 @chapter ILISP Commands
932
933
934 Most of these key bindings work in both Lisp Mode and ILISP mode.
935 There are a few additional and-go bindings found in Lisp Mode.
936
937
938 @menu
939 * Eval and compile functions::
940 * Documentation functions::
941 * Macroexpansion::
942 * Tracing functions::
943 * Package Commands::
944 * Source code commands:: Working on several files
945 * Batch commands:: Grouping changes for eval/compile
946 * Files and directories::
947 * Keyboard modes:: Interactive and raw keyboard modes
948 * Interrupts:: Interrupts, aborts, and errors
949 * Command history::
950 * Completion::
951 * Miscellany:: Indentation, parenthesis balancing,
952 and comment commands.
953 @end menu
954
955 @node Eval and compile functions, Documentation functions, , ILISP Commands
956 @section Eval and compile functions
957 @cindex Eval/compile commands
958 @cindex Compile/eval commands
959
960 In LISP, the major unit of interest is a form, which is anything between
961 two matching parentheses. Some of the commands here also refer to
962 ``defun,'' which is a list that starts at the left margin in a LISP
963 buffer, or after a prompt in the ILISP buffer. These commands refer to
964 the ``defun'' that contains the point.
965 @cindex Defun
966
967 ``A call'' refers to a reference to a function call for a function or
968 macro, or a reference to a variable. Commands which ``insert a call''
969 in the ILISP buffer will bring up the last command which matches it or
970 else will insert a template for a call.
971 @cindex Call
972
973 When an eval is done of a single form matching @code{ilisp-defvar-regexp}
974 the corresponding symbol will be unbound and the value assigned again.
975 @vindex ilisp-defvar-regexp
976
977 When you send a form to LISP, the status light will reflect the
978 progress of the command. In a lisp mode buffer the light will reflect
979 the status of the currently selected inferior LISP unless
980 @code{lisp-show-status} is nil. If you want to find out what command is
981 currently running, use the command @kbd{@key{C-z} s} (status-lisp).
982 If you call it with a prefix, the pending commands will be displayed as
983 well.@refill
984 @cindex Currently running command
985 @cindex Displaying commands
986 @pindex status-lisp
987 @kindex @key{C-z} s
988 @vindex lisp-show-status
989 @cindex Status light
990 @cindex Modeline status
991
992 Note that in this table as elsewhere, the key @key{C-z} (ilisp-prefix)
993 is used as a prefix character for ILISP commands, though this may be
994 changed.
995 @kindex @key{C-z} prefix
996 @vindex ilisp-prefix
997 @c xref .. custom? or autoload?
998 For a full list of key-bindings, use @kbd{M-x describe-mode} or
999 @kbd{M-x describe-bindings} while in an ILISP-mode buffer.@refill
1000 @cindex Listing bindings
1001 @cindex Describing bindings
1002
1003
1004 The eval/compile commands verify that their expressions are balanced and
1005 then send the form to the inferior LISP. If called with a positive
1006 prefix, the result of the operation will be inserted into the buffer
1007 after the form that was just sent.
1008 @cindex Inserting results
1009
1010 For commands which operate on a region, the result of the compile or eval
1011 is the last form in the region.
1012 @cindex Region commands
1013
1014 The @samp{and-go} versions will perform the operation and then
1015 immediately switch to the ILISP buffer where you will see the results of
1016 executing your form. If @code{eval-defun-and-go-lisp} or
1017 @code{compile-defun-and-go-lisp} is called with a prefix, a call for the
1018 form will be inserted as well.@refill
1019 @cindex Inserting calls
1020 @pindex compile-defun-and-go-lisp
1021 @pindex eval-defun-and-go-lisp
1022 @cindex @samp{and-go} functions
1023
1024 @table @kbd
1025
1026 @item @key{C-z}
1027 The prefix-key for most ILISP commands. This can be changed by setting
1028 the variable @code{ilisp-prefix}.
1029 @c xref custom?
1030
1031 @item RET (return-ilisp)
1032 In ILISP-mode buffer, sends the current form to lisp if complete,
1033 otherwise creates a new line and indents. If you edit old input, the
1034 input will be copied to the end of the buffer first and then sent.
1035 @cindex Sending input to lisp
1036 @pindex return-ilisp
1037 @kindex RET
1038
1039 @item C-] (close-and-send-lisp)
1040 Closes the current sexp, indents it, and then sends it to the current
1041 inferior LISP.
1042 @pindex close-and-send-lisp
1043 @kindex C-]
1044
1045 @item LFD (newline-and-indent-lisp)
1046 Insert a new line and then indent to the appropriate level. If called
1047 at the end of the inferior LISP buffer and an sexp, the sexp will be
1048 sent to the inferior LISP without a trailing newline.
1049 @pindex newline-and-indent-lisp
1050 @kindex LFD
1051
1052 @item @key{C-z} e (eval-defun-lisp)
1053 @itemx M-C-x (eval-defun-lisp)
1054 @itemx @key{C-z} C-e (eval-defun-and-go-lisp)
1055 @kindex M-C-x
1056 @kindex @key{C-z} e
1057 @kindex @key{C-z} C-e
1058 Send the defun to lisp.
1059 @pindex eval-defun-and-go-lisp
1060 @pindex eval-defun-lisp
1061
1062 @item @key{C-z} r (eval-region-lisp)
1063 @itemx @key{C-z} C-r (eval-region-and-go-lisp)
1064 @kindex @key{C-z} r
1065 @pindex eval-region-lisp
1066 @kindex @key{C-z} C-r
1067 @pindex eval-region-and-go-lisp
1068 @cindex Eval region
1069
1070 @item @key{C-z} n (eval-next-sexp-lisp)
1071 @itemx @key{C-z} C-n (eval-next-sexp-and-go-lisp)
1072 @kindex @key{C-z} n
1073 @pindex eval-next-sexp-lisp
1074 @kindex @key{C-z} C-n
1075 @pindex eval-next-sexp-and-go-lisp
1076
1077 @item @key{C-z} c (compile-defun-lisp)
1078 @kindex @key{C-z} c
1079 @pindex compile-defun-lisp
1080 @item @key{C-z} C-c (compile-defun-lisp-and-go)
1081 @kindex @key{C-z} C-c
1082 When @code{compile-defun-lisp} is called in an inferior LISP buffer with
1083 no current form, the last form typed to the top-level will be compiled.
1084 @cindex Compile last form
1085 @pindex compile-defun-lisp-and-go
1086
1087 @item @key{C-z} w (compile-region-lisp)
1088 @itemx @key{C-z} C-w (compile-region-and-go-lisp)
1089 @kindex @key{C-z} w
1090 @pindex compile-region-lisp
1091 @kindex @key{C-z} C-w
1092 @pindex compile-region-and-go-lisp
1093 @cindex Compile region
1094
1095 @end table
1096
1097
1098 If any of the forms contain an interactive command, then the command
1099 will never return. To get out of this state, you need to use
1100 @code{abort-commands-lisp} (@kbd{@key{C-z} g}). If @code{lisp-wait-p}
1101 is t, then EMACS will display the result of the command in the
1102 minibuffer or a pop-up window. If @code{lisp-wait-p} is @code{nil},
1103 (the default) the send is done asynchronously and the results will be
1104 brought up only if there is more than one line or there is an error. In
1105 this case, you will be given the option of ignoring the error, keeping
1106 it in another buffer or keeping it and aborting all pending sends. If
1107 there is not a command already running in the inferior LISP, you can
1108 preserve the break loop. If called with a negative prefix, the sense of
1109 @code{lisp-wait-p} will be inverted for the next command.
1110 @c @cindex Aborting commands
1111 @vindex lisp-wait-p
1112 @kindex @key{C-z} g
1113 @pindex abort-commands-lisp
1114
1115
1116
1117 @node Documentation functions, Macroexpansion, Eval and compile functions, ILISP Commands
1118 @section Documentation functions
1119
1120 @code{describe-lisp}, @code{inspect-lisp}, @code{arglist-lisp}, and
1121 @code{documentation-lisp} switch whether they prompt for a response or
1122 use a default when called with a negative prefix. If they are
1123 prompting, there is completion through the inferior LISP by using
1124 @kbd{TAB} or @kbd{M-TAB}. When entering an expression in the
1125 minibuffer, all of the normal ilisp commands like @code{arglist-lisp}
1126 also work.@refill
1127 @cindex Arglist lisp
1128 @cindex Describing lisp objects
1129 @kindex @key{M-TAB}
1130 @kindex @key{TAB}
1131 @cindex Negative prefix
1132 @cindex Minibuffer completion
1133 @pindex documentation-lisp
1134 @pindex arglist-lisp
1135 @pindex describe-lisp
1136 @pindex inspect-lisp
1137 @cindex Documentation Functions
1138
1139 Commands that work on a function will use the nearest previous function
1140 symbol. This is either a symbol after a @samp{#'} or the symbol at the
1141 start of the current list.
1142
1143 @table @code
1144
1145 @item @key{C-z} a (arglist-lisp)
1146 @kindex @key{C-z} a
1147 Return the arglist of the current function. With a numeric prefix, the
1148 leading paren will be removed and the arglist will be inserted into the
1149 buffer.
1150
1151 @item @key{C-z} d (documentation-lisp)
1152 @kindex @key{C-z} d
1153 Infers whether function or variable documentation is desired. With a
1154 negative prefix, you can specify the type of documentation as well.
1155 With a positive prefix the documentation of the current function call is
1156 inserted into the buffer.
1157
1158 @item @key{C-z} i (describe-lisp)
1159 @kindex @key{C-z} i
1160 Describe the previous sexp (it is evaluated). If there is no previous
1161 sexp and if called from inside an ILISP buffer, the previous result will
1162 be described.
1163
1164 @item @key{C-z} i (describe-lisp)
1165 @kindex @key{C-z} i
1166 Describe the previous sexp (it is evaluated). If there is no previous
1167 sexp and if called from inside an ILISP buffer, the previous result will
1168 be described.
1169
1170 @item @key{C-z} I (inspect-lisp)
1171 @kindex @key{C-z} I
1172 Switch to the current inferor LISP and inspect the previous sexp (it is
1173 evaluated). If there is no previous sexp and if called from inside an
1174 ILISP buffer, the previous result will be inspected.
1175
1176 @item @key{C-z} D (fi:clman)
1177 @itemx @key{C-z} A (fi:clman-apropos)
1178 @kindex @key{C-z} D
1179 @pindex fi:clman
1180 @kindex @key{C-z} A
1181 @pindex fi:clman-apropos
1182 If the Franz online Common LISP manual is available, get information on
1183 a specific symbol. @code{fi:clman-apropos} will get information apropos
1184 a specific string. Some of the documentation is specific to the allegro
1185 dialect, but most of it is for standard Common LISP.
1186 @cindex Apropos help
1187 @cindex Common Lisp manual
1188 @cindex Franz manual
1189
1190 @end table
1191
1192
1193 @node Macroexpansion, Tracing functions, Documentation functions, ILISP Commands
1194 @section Macroexpansion
1195
1196 @table @kbd
1197 @item @key{C-z} M (macroexpand-lisp)
1198 @itemx @key{C-z} m (macroexpand-1-lisp)
1199 @kindex @key{C-z} M
1200 @pindex macroexpand-lisp
1201 @kindex @key{C-z} m
1202 @pindex macroexpand-1-lisp
1203 These commands apply to the next sexp. If called with a positive
1204 numeric prefix, the result of the macroexpansion will be inserted into
1205 the buffer. With a negative prefix, prompts for expression to expand.
1206 @cindex Expanding macro forms
1207 @cindex Macroexpansion
1208
1209
1210 @end table
1211
1212 @node Tracing functions, Package Commands, Macroexpansion, ILISP Commands
1213 @section Tracing functions
1214
1215 @table @kbd
1216 @item @key{C-z} t (trace-defun-lisp)
1217 @kindex @key{C-z} t
1218 @pindex trace-defun-lisp
1219 @cindex Tracing defuns
1220 @cindex Untracing defuns
1221 traces the current defun. When called with a numeric prefix the
1222 function will be untraced. When called with negative prefix, prompts
1223 for function to be traced.
1224 @end table
1225
1226 @node Package Commands, Source code commands, Tracing functions, ILISP Commands
1227 @section Package Commands
1228 @cindex Package commands
1229
1230 The first time an inferior LISP mode command is executed in a Lisp Mode
1231 buffer, the package will be determined by using the regular expression
1232 @code{ilisp-package-regexp} to find a package sexp and then passing that
1233 sexp to the inferior LISP through @code{ilisp-package-command}.
1234 For the @samp{clisp} dialect, this will find the first @code{(in-package
1235 PACKAGE)} form in the file.
1236 A buffer's package will be displayed in the mode line.
1237 If a buffer has no
1238 specification, forms will be evaluated in the current inferior LISP
1239 package.@refill
1240
1241 Buffer package caching can be turned off by setting the variable
1242 @code{lisp-dont-cache-package} to @code{T}. This will force ILISP to
1243 search for the closest previous @code{ilisp-package-regexp} in the
1244 buffer each time an inferior LISP mode command is executed.
1245 @cindex Buffer package
1246 @cindex Buffer package caching
1247 @vindex lisp-dont-cache-package
1248 @vindex ilisp-package-regexp
1249 @findex ilisp-package-command
1250 @cindex In-package form
1251
1252 @table @code
1253
1254 @item @key{C-z} p (package-lisp)
1255 @kindex @key{C-z} p
1256 @pindex package-lisp
1257 @cindex Show current package
1258 Show the current package of the inferior LISP.
1259
1260 @item @key{C-z} P (set-package-lisp)
1261 @kindex @key{C-z} P
1262 @pindex set-package-lisp
1263 Set the inferior LISP package to the current buffer's package or with a
1264 prefix to a manually entered package.
1265
1266 @item M-x set-buffer-package-lisp
1267 @kindex M-x set-buffer-package-lisp
1268 @cindex Set buffer package
1269 @pindex set-buffer-package-lisp
1270 Set the buffer's package from the buffer. If it is called with a
1271 prefix, the package can be set manually.
1272
1273 @end table
1274
1275 @node Source code commands, Batch commands, Package Commands, ILISP Commands
1276 @section Source Code Commands
1277 @cindex Source Code Commands
1278 @cindex Finding source
1279
1280 The following commands all deal with finding things in source code.
1281 The first time that one of these commands is used, there may be some
1282 delay while the source module is loaded. When searching files, the
1283 first applicable rule is used:
1284 @itemize @bullet
1285 @item
1286 try the inferior LISP,
1287 @item
1288 try a tags file if defined,
1289 @item
1290 try all buffers in one of @code{lisp-source-modes} or all files
1291 defined using @code{lisp-directory}.@refill
1292 @pindex lisp-directory
1293 @vindex lisp-source-modes
1294 @end itemize
1295
1296 @code{M-x lisp-directory} defines a set of files to be
1297 searched by the source code commands. It prompts for a directory and
1298 sets the source files to be those in the directory that match entries
1299 in @code{auto-mode-alist} for modes in @code{lisp-source-modes}.
1300 With a positive
1301 prefix, the files are appended. With a negative prefix, all current
1302 buffers that are in one of @code{lisp-source-modes} will be searched. This
1303 is also what happens by default. Using this command stops using a
1304 tags file.@refill
1305 @cindex Source modes
1306 @vindex auto-mode-alist
1307 @kindex M-x lisp-directory
1308
1309 @code{edit-definitions-lisp}, @code{who-calls-lisp}, and
1310 @code{edit-callers-lisp} will switch whether they prompt for a response
1311 or use a default when called with a negative prefix. If they are
1312 prompting, there is completion through the inferior LISP by using
1313 @kbd{TAB} or @kbd{M-TAB}. When entering an expression in the
1314 minibuffer, all of the normal ILISP commands like @kbd{arglist-lisp}
1315 also work.@refill
1316 @pindex edit-callers-lisp
1317 @pindex who-calls-lisp
1318 @pindex edit-definitions-lisp
1319
1320 @code{edit-definitions-lisp} (@kbd{M-.}) will find a
1321 particular type of definition for a symbol. It tries to use the rules
1322 described above. The files to be searched are listed in the buffer
1323 @code{*Edit-Definitions*}. If @code{lisp-edit-files} is nil, no search will be
1324 done if not found through the inferior LISP. The variable
1325 @code{ilisp-locator} contains a function that when given the name and type
1326 should be able to find the appropriate definition in the file. There
1327 is often a flag to cause your LISP to record source files that you
1328 will need to set in the initialization file for your LISP. The
1329 variable is @code{*record-source-files*} in both allegro and lucid. Once a
1330 definition has been found, @code{next-definition-lisp}
1331 (@kbd{M-,}) will find the next definition
1332 (or the previous definition with a prefix).@refill
1333 @pindex next-definition-lisp
1334 @vindex *record-source-files*
1335 @vindex ilisp-locator
1336 @vindex lisp-edit-files
1337 @cindex @code{*Edit-Definitions*} buffer
1338 @kindex M-.
1339
1340 @code{edit-callers-lisp} (@kbd{@key{C-z} ^}) will generate a list of all
1341 of the callers of a function in the current inferior LISP and edit the
1342 first caller using @code{edit-definitions-lisp}. Each successive call to
1343 @code{next-caller-lisp} (@kbd{M-`}) will edit the next caller
1344 (or the previous caller with a prefix). The list is stored in the
1345 buffer @code{*All-Callers*}. You can also look at the callers by doing
1346 @kbd{M-x who-calls-lisp}.@refill
1347 @cindex List callers
1348 @cindex Find callers
1349 @cindex @code{*All-Callers*} buffer
1350 @kindex M-x who-calls-lisp
1351 @kindex M-`
1352 @pindex next-caller-lisp
1353 @kindex @key{C-z} ^
1354 @pindex edit-callers-lisp
1355
1356 @code{search-lisp} (@kbd{M-?}) will search the current tags files,
1357 @code{lisp-directory} files or buffers in one of @code{lisp-source-modes} for a
1358 string or a regular expression when called with a prefix.
1359 @code{next-definition-lisp} (@kbd{M-,}) will find the next definition
1360 (or the previous definition with a prefix).@refill
1361 @cindex Next definition
1362 @cindex Previous definition
1363 @kindex M-,
1364 @pindex next-definition-lisp
1365 @kindex M-?
1366 @pindex search-lisp
1367
1368 @code{replace-lisp} (@kbd{M-"}) will replace a string (or a regexp with
1369 a prefix) in the current tags files, @code{lisp-directory} files or
1370 buffers in one of @code{lisp-source-modes}.@refill
1371 @cindex Replace lisp
1372 @kindex M-"
1373 @pindex replace-lisp
1374
1375
1376 Here is a summary of the above commands (behavior when given prefix
1377 argument is given in parentheses):
1378
1379 @table @code
1380 @item M-x lisp-directory
1381 Define a set of files to be used by the source code commands.
1382
1383 @item M-. (edit-definitions-lisp)
1384 Find definition of a symbol.
1385
1386 @item M-, (next-definition-lisp)
1387 Find next (previous) definition.
1388
1389 @item @key{C-z} ^ (edit-callers-lisp)
1390 Find all callers of a function, and edit the first.
1391
1392 @item M-` (next-caller-lisp)
1393 Edit next (previous) caller of function set by @code{edit-callers-lisp}.
1394
1395 @item M-x who-calls-lisp
1396 List all the callers of a function.
1397
1398
1399 @item M-? (search-lisp)
1400 Search for string (regular expression) in current tags,
1401 @code{lisp-directory} files or buffers. Use @code{next-definition-lisp}
1402 to find next occurence.
1403
1404 @item M-" (replace-lisp)
1405 Replace a string (regular expression) in files.
1406
1407 @end table
1408
1409
1410 @node Batch commands, Files and directories, Source code commands, ILISP Commands
1411 @section Batch commands
1412
1413
1414 The following commands all deal with making a number of changes all at
1415 once. The first time one of these commands is used, there may be some
1416 delay as the module is loaded. The eval/compile versions of these
1417 commands are always executed asynchronously.
1418 @cindex Group changes
1419 @cindex File changes
1420 @cindex Change commands
1421
1422 @code{mark-change-lisp} (@kbd{@key{C-z} SPC}) marks the current defun as
1423 being changed. A prefix causes it to be unmarked. @code{clear-changes-lisp}
1424 (@kbd{@key{C-z} * 0}) will clear all of the changes.
1425 @code{list-changes-lisp} (@kbd{@key{C-z} * l}) will show the forms
1426 currently marked.@refill
1427 @cindex Marking changes
1428 @cindex Clearing changes
1429 @cindex Listing changes
1430 @kindex @key{C-z} * l
1431 @kindex @key{C-z} * 0
1432 @kindex @key{C-z} SPC
1433 @pindex list-changes-lisp
1434 @pindex clear-changes-lisp
1435 @pindex mark-change-lisp
1436
1437 @code{eval-changes-lisp} (@kbd{@key{C-z} * e}), or
1438 @code{compile-changes-lisp} (@kbd{@key{C-z} * c}) will
1439 evaluate or compile these changes as appropriate.
1440 If called with a positive prefix, the changes will be kept.
1441 If there is an error, the process will stop and show the error
1442 and all remaining changes will remain in the list. All of the results
1443 will be kept in the buffer @code{*Last-Changes*}.@refill
1444 @cindex Eval'ing changes
1445 @cindex Compiling changes
1446 @cindex @code{*Last-Changes*} buffer
1447 @kindex @key{C-z} * e
1448 @kindex @key{C-z} * c
1449 @pindex compile-changes-lisp
1450 @pindex eval-changes-lisp
1451
1452 @noindent
1453 Summary:
1454
1455 @table @code
1456 @item @key{C-z} SPC (mark-change-lisp)
1457 Mark (unmark) current defun as changed.
1458 @item @key{C-z} * e (eval-changes-lisp)
1459 @itemx @key{C-z} * c (compile-changes-lisp)
1460 Call with a positive prefix to keep changes.
1461 @item @key{C-z} * 0 (clear-changes-lisp)
1462 @item @key{C-z} * l (list-changes-lisp)
1463 @end table
1464
1465
1466 @node Files and directories, Keyboard modes, Batch commands, ILISP Commands
1467 @section Files and directories
1468
1469 @cindex Files and directories
1470 @cindex Directories and files
1471 @cindex Current directory
1472 File commands in lisp-source-mode buffers keep track of the last used
1473 directory and file. If the point is on a string, that will be the
1474 default if the file exists. If the buffer is one of
1475 @code{lisp-source-modes}, the buffer file will be the default. Otherwise,
1476 the last file used in a lisp-source-mode will be used.
1477
1478
1479 @table @kbd
1480 @item C-x C-f (find-file-lisp)
1481 @kindex C-x C-f
1482 @cindex Find file
1483 @cindex Lisp find file
1484 @cindex Symbolic link expansion
1485 @pindex find-file-lisp
1486 will find a file. If it is in a string, that will be used as the
1487 default if it matches an existing file. Symbolic links are expanded so
1488 that different references to the same file will end up with the same
1489 buffer.
1490
1491 @item @key{C-z} l (load-file-lisp)
1492 @kindex @key{C-z} l
1493 will load a file into the inferior LISP. You will be given the
1494 opportunity to save the buffer if it has changed and to compile the file
1495 if the compiled version is older than the current version.
1496 @pindex load-file-lisp
1497 @cindex Loading files
1498
1499 @item @key{C-z} k (compile-file-lisp)
1500 @kindex @key{C-z} k
1501 will compile a file in the current inferior LISP.
1502 @pindex compile-file-lisp
1503 @cindex Compiling files
1504
1505 @item @key{C-z} ! (default-directory-lisp)
1506 @kindex @key{C-z} !
1507 sets the default inferior LISP directory to the directory of the current
1508 buffer. If called in an inferior LISP buffer, it sets the Emacs
1509 @code{default-directory} to the LISP default directory.
1510 @vindex default-directory
1511 @cindex Default directory
1512 @cindex Set default directory
1513 @pindex default-directory-lisp
1514
1515 @end table
1516
1517 @node Keyboard modes, Interrupts, Files and directories, ILISP Commands
1518 @section Switching between interactive and raw keyboard modes
1519
1520 @cindex Raw keyboard mode
1521 @cindex Interactive keyboard mode
1522 @vindex ilisp-raw-echo
1523
1524 There are two keyboard modes for interacting with the inferior LISP,
1525 \"interactive\" and \"raw\". Normally you are in interactive mode
1526 where keys are interpreted as commands to EMACS and nothing is sent to
1527 the inferior LISP unless a specific command does so. In raw mode, all
1528 characters are passed directly to the inferior LISP without any
1529 interpretation as EMACS commands. Keys will not be echoed unless
1530 ilisp-raw-echo is T.
1531
1532 @pindex raw-keys-ilisp
1533 @kindex @key{C-z} #
1534 @pindex io-bridge-ilisp
1535 @kindex M-x io-bridge-ilisp
1536
1537 Raw mode can be turned on interactively by the command
1538 @code{raw-keys-ilisp} (@kbd{@key{C-z} #}) and will continue until you
1539 type @key{C-g}. Raw mode can also be turned on/off by inferior LISP
1540 functions if the command @code{io-bridge-ilisp} (M-x io-bridge-ilisp)
1541 has been executed in the inferior LISP either interactively or on a
1542 hook. To turn on raw mode, a function should print ^[1^] and to turn
1543 it off should print ^[0^]. An example in Common LISP would be:
1544
1545 @code{(progn (format t "1") (print (read-char)) (format t "0"))}
1546
1547 @node Interrupts, Command history, Keyboard modes, ILISP Commands
1548 @section Interrupts, aborts, and errors
1549
1550
1551 If you want to abort the last command you can use @kbd{C-g}.
1552 @kindex C-g
1553 @cindex Errors
1554 @cindex Aborting commands
1555 @cindex Interrupting commands
1556
1557 If you want to abort all commands, you should use the command
1558 @code{abort-commands-lisp} (@kbd{@key{C-z} g}). Commands that are
1559 aborted will be put in the buffer @code{*Aborted Commands*} so that
1560 you can see what was aborted. If you want to abort the currently
1561 running top-level command, use @code{interrupt-subjob-ilisp} (@kbd{C-c
1562 C-c}). As a last resort, @kbd{M-x panic-lisp} will reset the ILISP
1563 state without affecting the inferior LISP so that you can see what is
1564 happening.
1565
1566 @pindex interrupt-subjob-ilisp
1567 @cindex @code{*Aborted Commands*} buffer
1568 @kindex @key{C-z} g
1569 @pindex abort-commands-lisp
1570 @pindex panic-lisp
1571
1572 @code{delete-char-or-pop-ilisp} (@kbd{C-d}) will delete
1573 prefix characters unless you are at the end of an ILISP buffer in
1574 which case it will pop one level in the break loop.
1575 @cindex Pop in break loop
1576 @cindex Break loop
1577 @kindex C-d
1578 @pindex delete-char-or-pop-ilisp
1579
1580 @code{reset-ilisp}, (@kbd{@key{C-z} z}) will reset the current inferior
1581 LISP's top-level so that it will no longer be in a break loop.
1582 @cindex Resetting lisp
1583 @cindex Top-level, return to
1584 @kindex @key{C-z} z
1585 @pindex reset-ilisp
1586
1587
1588 Summary:
1589
1590 @table @kbd
1591 @item C-c C-c (interrupt-subjob-ilisp)
1592 Send a keyboard interrupt signal to lisp.
1593 @item @key{C-z} g (abort-commands-lisp)
1594 Abort all running or unsent commands.
1595 @item M-x panic-lisp (panic-lisp)
1596 Reset the ILISP process state.
1597 @item @key{C-z} z (reset-ilisp)
1598 Reset lisp to top-level.
1599 @item C-d (delete-char-or-pop-ilisp)
1600 If at end of buffer, pop a level in break loop.
1601
1602 @end table
1603
1604 @c duplicated from eval section.
1605 If @code{lisp-wait-p} is @code{nil} (the default),
1606 all sends are done asynchronously and the results will be
1607 brought up only if there is more than one line or there is an error.
1608 In case, you will be given the option of ignoring the error, keeping
1609 it in another buffer or keeping it and aborting all pending sends.
1610 If there is not a command already running in the inferior LISP, you can
1611 preserve the break loop. If called with a negative prefix, the sense of
1612 @code{lisp-wait-p} will be inverted for the next command.
1613 @vindex lisp-wait-p
1614
1615
1616
1617 @node Command history, Completion, Interrupts, ILISP Commands
1618 @section Command history
1619 @cindex Command history
1620 @cindex Last command
1621 @cindex Previous commands
1622
1623 ILISP mode is built on top of @code{comint-mode}, the general
1624 command-interpreter-in-a-buffer mode. As such, it inherits many
1625 commands and features from this, including a command history mechanism.
1626 @cindex @code{comint-mode}
1627
1628 Each ILISP buffer has a command history associated with it. Commands
1629 that do not match @code{ilisp-filter-regexp} and that are longer than
1630 @code{ilisp-filter-length} and that do not match the immediately prior
1631 command will be added to this history.
1632 @vindex ilisp-filter-length
1633 @vindex ilisp-filter-regexp
1634
1635 @table @kbd
1636
1637 @item M-n (comint-next-input)
1638 @itemx M-p (comint-previous-input)
1639 @kindex M-n
1640 @pindex comint-next-input
1641 @cindex Next input
1642 @kindex M-p
1643 @pindex comint-previous-input
1644 Cycle through the input history.
1645
1646 @item M-s (comint-previous-similar-input)
1647 @kindex M-s
1648 @pindex comint-previous-similar-input
1649 @cindex Similar input
1650 Cycle through input that has the string typed so far as a prefix.
1651
1652 @item M-N (comint-psearch-input)
1653 @kindex M-N
1654 @pindex comint-psearch-input
1655 @cindex Search input
1656 @cindex Input search
1657 Search forwards for prompt.
1658 @item M-P (comint-msearch-input)
1659 @kindex M-P
1660 @pindex comint-msearch-input
1661 Search backwards for prompt.
1662
1663 @item C-c R (comint-msearch-input-matching)
1664 @kindex C-c R
1665 @pindex comint-msearch-input-matching
1666 Search backwards for occurrence of prompt followed by string which is prompted
1667 for (@emph{not} a regular expression).
1668 @end table
1669
1670 See @code{comint-mode} documentation for more information on
1671 @samp{comint} commands.
1672
1673
1674 @node Completion, Miscellany, Command history, ILISP Commands
1675 @section Completion
1676
1677 Commands to reduce number of keystrokes.
1678 @cindex Completion
1679 @cindex Partial completion
1680 @cindex Filename completion
1681
1682 @table @kbd
1683 @item M-TAB (complete-lisp)
1684 @kindex M-TAB
1685 @pindex complete-lisp
1686 @vindex ilisp-prefix-match
1687 will try to complete the previous symbol in the current inferior LISP.
1688 Partial completion is supported unless @code{ilisp-prefix-match} is set to @code{t}.
1689 (If you set it to @code{t}, inferior LISP completions will be faster.)
1690 With partial completion, @samp{p--n} would complete to
1691 @samp{position-if-not} in Common LISP.
1692 If the symbol follows a left paren or a @samp{#'}, only symbols with
1693 function cells will be considered.
1694 If the symbol starts with a @samp{*} or you call with a
1695 positive prefix all possible completions will be considered.
1696 Only external symbols are considered if there is a package qualification
1697 with only one colon.
1698 The first time you try to complete a string the longest common substring
1699 will be inserted and the cursor will be left
1700 on the point of ambiguity.
1701 If you try to complete again, you can see the possible completions.
1702 If you are in a string, then filename completion will be done instead.
1703 And if you try to complete a filename twice, you will see a list of
1704 possible completions.
1705 Filename components are completed individually, so @samp{/u/mi/} could
1706 expand to @samp{/usr/misc/}.
1707 If you complete with a negative
1708 prefix, the most recent completion (symbol or filename) will be undone.@refill
1709
1710
1711 @item M-RET (complete)
1712 @kindex M-RET
1713 @pindex complete
1714 @cindex TMC completion
1715 will complete the current symbol to the most recently seen symbol in
1716 Emacs that matches what you have typed so far. Executing it repeatedly
1717 will cycle through potential matches. This is from the TMC completion
1718 package and there may be some delay as it is initially loaded.
1719
1720 @end table
1721
1722 @node Miscellany, , Completion, ILISP Commands
1723 @section Miscellany
1724
1725 Indentation, parenthesis balancing, and comment commands.
1726
1727 @table @kbd
1728
1729 @item @kbd{TAB} (indent-line-ilisp)
1730 @kindex @kbd{TAB}
1731 indents for LISP. With prefix, shifts rest of expression rigidly with
1732 the current line.
1733 @pindex indent-line-ilisp
1734 @cindex Indentation
1735 @cindex Rigid indentation
1736
1737
1738 @item M-C-q (indent-sexp-ilisp)
1739 @kindex M-C-q
1740 will indent each line in the next sexp.
1741 @pindex indent-sexp-ilisp
1742
1743 @item M-q (reindent-lisp)
1744 @kindex M-q
1745 will reindent the current paragraph if in a comment or string.
1746 Otherwise it will close the containing defun and reindent it.
1747 @pindex reindent-lisp
1748 @cindex Reindent lisp
1749
1750 @item @key{C-z} ; (comment-region-lisp)
1751 @kindex @key{C-z} ;
1752 will put prefix copies of @code{comment-start} before and
1753 @code{comment-end}'s after the lines in region. To uncomment a region,
1754 use a minus prefix.@refill
1755 @pindex comment-region-lisp
1756 @cindex Comment region
1757 @cindex Uncomment region
1758
1759 @item @key{C-z} ) (find-unbalanced-lisp)
1760 @kindex @key{C-z} )
1761 will find unbalanced parens in the current buffer. When called with a
1762 prefix it will look in the current region.
1763 @pindex find-unbalanced-lisp
1764 @cindex Find unbalanced parens
1765 @cindex Parenthesis balancing
1766
1767 @item ] (close-all-lisp)
1768 @kindex ]
1769 will close all outstanding parens back to the containing form, or a
1770 previous left bracket which will be converted to a left parens. If
1771 there are too many parens, they will be deleted unless there is text
1772 between the last paren and the end of the defun. If called with a
1773 prefix, all open left brackets will be closed.
1774 @pindex close-all-lisp
1775 @cindex Close all parens
1776 @cindex Close brackets
1777
1778 @end table
1779
1780
1781 @node Customization, Dialects, ILISP Commands, Top
1782 @chapter ILISP Customization
1783
1784 @c = = = = = = = = = = = = = = = = = = = = = = = =
1785 @c this refers to hierarchiy, which isn't shown here.
1786 @cindex Customization
1787 @cindex Hooks
1788 @cindex Dialect startup
1789
1790
1791 Starting a dialect runs the hooks on @code{comint-mode-hook}
1792 and @code{ilisp-mode-hook} and then @var{DIALECT}@code{-hooks} specific
1793 to dialects in the nesting order below.
1794 @vindex ilisp-mode-hook
1795 @vindex comint-mode-hook
1796 @example
1797 clisp
1798 allegro
1799 lucid
1800 kcl
1801 akcl
1802 ibcl
1803 cmulisp
1804 scheme
1805 oaklisp
1806 @end example
1807
1808 On the very first prompt in the inferior LISP,
1809 the hooks on @code{ilisp-init-hook} are run. For more information on
1810 creating a new dialect or variables to set in hooks, see @file{ilisp.el}.
1811 @cindex First prompt
1812 @vindex ilisp-init-hook
1813
1814
1815
1816 @c -> -> -> -> -> -> -> -> -> -> -> plenty of indexing here
1817 @c put these in a table for later expandment
1818 @c
1819
1820 ILISP Mode Hooks:
1821 @cindex ILISP Mode Hooks
1822 @table @code
1823 @item ilisp-site-hook
1824 @vindex ilisp-site-hook
1825 Executed when file is loaded
1826 @item ilisp-load-hook
1827 @vindex ilisp-load-hook
1828 Executed when file is loaded
1829 @item ilisp-mode-hook
1830 @vindex ilisp-mode-hook
1831 Executed when an ilisp buffer is created
1832 @item ilisp-init-hook
1833 @vindex ilisp-init-hook
1834 Executed after inferior LISP is initialized and the first prompt is
1835 seen.
1836 @item @var{DIALECT}-hook
1837 @vindex @var{DIALECT}-hook
1838 Executed when dialect is set
1839 @end table
1840
1841 Variables you might want to set in a hook or dialect:
1842 @table @code
1843 @item ilisp-prefix
1844 @vindex ilisp-prefix
1845 Keys to prefix ilisp key bindings
1846 @item ilisp-program
1847 @vindex ilisp-program
1848 Program to start for inferior LISP
1849 @item ilisp-motd
1850 @vindex ilisp-motd
1851 String printed on startup with version
1852 @item lisp-wait-p
1853 @vindex lisp-wait-p
1854 Set to T for synchronous sends
1855 @item ilisp-handle-errors
1856 @vindex ilisp-handle-errors
1857 Set to T for ilisp to handle errors from the underlying lisp.
1858 @item ilisp-display-output-function
1859 @vindex ilisp-display-output-function
1860 The name of a function which displays ILISP output.
1861 @item lisp-no-popper
1862 @vindex lisp-no-popper
1863 Set to T to have all output in inferior LISP
1864 @item lisp-show-status
1865 @vindex lisp-show-status
1866 Set to nil to stop showing process status
1867 @item ilisp-prefix-match
1868 @vindex ilisp-prefix-match
1869 Set to T if you do not want partial completion
1870 @item ilisp-filter-regexp
1871 @vindex ilisp-filter-regexp
1872 Input history filter
1873 @item ilisp-filter-length
1874 @vindex ilisp-filter-length
1875 Input history minimum length
1876 @item ilisp-other-prompt
1877 @vindex ilisp-other-prompt
1878 Prompt for non- top-level read-eval print loops
1879 @end table
1880
1881 @node Dialects, Concept index, Customization, Top
1882 @chapter Dialects
1883 @cindex Dialects
1884
1885 A @dfn{dialect} of lisp is a specific implementation. For the parts of
1886 Common Lisp which are well specified, they are usually the same. For
1887 the parts that are not (debugger, top-level loop, etc.), there is
1888 usually the same functionality but different commands.
1889
1890 ILISP provides the means to specify these differences so that the ILISP
1891 commands will use the specific command peculiar to an implementation,
1892 but still offer the same behavior with the same interface.
1893
1894
1895 @menu
1896 * Defining new dialects::
1897 * Writing new commands::
1898 @end menu
1899
1900 @node Defining new dialects, Writing new commands, , Dialects
1901 @section Defining new dialects
1902
1903
1904 To define a new dialect use the macro @code{defdialect}. For examples,
1905 look at the dialect definitions in @file{ilisp-acl.el},
1906 @file{ilisp-cmu.el}, @file{ilisp-kcl.el}, @file{ilisp-luc}. There are
1907 hooks and variables for almost anything that you are likely to need to
1908 change. The relationship between dialects is hierarchical with the root
1909 values being defined in @code{setup-ilisp}. For a new dialect, you only
1910 need to change the variables that are different than in the parent
1911 dialect.
1912 @cindex Defining new dialects
1913 @pindex setup-ilisp
1914 @pindex defdialect
1915
1916
1917 @node Writing new commands, , Defining new dialects, Dialects
1918 @section Writing new commands
1919 @cindex Internal ILISP functions
1920
1921 Basic tools for creating new commands:
1922 @table @code
1923 @item deflocal
1924 @findex deflocal
1925 Define a new buffer local variable.
1926 @item ilisp-dialect
1927 @findex ilisp-dialect
1928 List of dialect types. For specific dialect clauses.
1929 @item lisp-symbol
1930 @findex lisp-symbol
1931 Create a symbol.
1932 @item lisp-symbol-name
1933 @findex lisp-symbol-name
1934 Return a symbol's name
1935 @item lisp-symbol-delimiter
1936 @findex lisp-symbol-delimiter
1937 Return a symbol's qualification
1938 @item lisp-symbol-package
1939 @findex lisp-symbol-package
1940 Return a symbol's package
1941 @item lisp-string-to-symbol
1942 @findex lisp-string-to-symbol
1943 Convert string to symbol
1944 @item lisp-symbol-to-string
1945 @findex lisp-symbol-to-string
1946 Convert symbol to string
1947 @item lisp-buffer-symbol
1948 @findex lisp-buffer-symbol
1949 Convert symbol to string qualified for buffer
1950 @item lisp-previous-symbol
1951 @findex lisp-previous-symbol
1952 Return previous symbol
1953 @item lisp-previous-sexp
1954 @findex lisp-previous-sexp
1955 Return previous sexp
1956 @item lisp-def-name
1957 @findex lisp-def-name
1958 Return name of current definition
1959 @item lisp-function-name
1960 @findex lisp-function-name
1961 Return previous function symbol
1962 @item ilisp-read
1963 @findex ilisp-read
1964 Read an sexp with completion, arglist, etc
1965 @item ilisp-read-symbol
1966 @findex ilisp-read-symbol
1967 Read a symbol or list with completion
1968 @item ilisp-completing-read
1969 @findex ilisp-completing-read
1970 Read from choices or list with completion
1971 @end table
1972
1973 @noindent
1974 Notes:
1975 @itemize @bullet
1976 @item
1977 Special commands like arglist should use @code{ilisp-send} to send a
1978 message to the inferior LISP.
1979 @findex ilisp-send
1980
1981 @item
1982 Eval/compile commands should use @code{eval-region-lisp} or
1983 @code{compile-region-lisp}.
1984 @findex compile-region-lisp
1985 @findex eval-region-lisp
1986
1987 @end itemize
1988
1989 @node Concept index, Key index, Dialects, Top
1990 @unnumbered Concept Index
1991 @printindex cp
1992
1993 @node Key index, Command index, Concept index, Top
1994 @unnumbered Key Index
1995 @printindex ky
1996
1997 @node Command index, Variable index, Key index, Top
1998 @unnumbered Command Index
1999
2000 @noindent
2001 Commands available via @kbd{M-x} prefix.
2002
2003 @printindex pg
2004
2005 @node Variable index, Function index, Command index, Top
2006 @unnumbered Variable Index
2007
2008 @noindent
2009 Variables and hooks of ILISP.
2010
2011 @printindex vr
2012
2013 @node Function index, , Variable index, Top
2014 @unnumbered Function Index
2015
2016 @noindent
2017 Internal functions of ILISP which can be used to write new commands.
2018
2019 @printindex fn
2020
2021 @contents
2022
2023 @bye
2024
2025
2026 Should this stuff go anywhere??
2027
2028 misc ILISP
2029 bol-ilisp (C-a) will go after the prompt as defined by
2030 comint-prompt-regexp or ilisp-other-prompt or to the left margin with
2031 a prefix.
2032
2033 misc
2034 backward-delete-char-untabify (DEL)
2035 converts tabs to spaces as it moves back.
2036
2037
2038 about cmds
2039 The very first inferior LISP command executed may send some forms to
2040 initialize the inferior LISP.
2041
2042 Each time an inferior LISP command is executed, the last form sent can be
2043 seen in the *ilisp-send* buffer.
2044
2045
2046 @comment Local variables:
2047 @comment version-control: t
2048 @comment End: