;ELC ;;; compiled by cthomp@willow on Fri Sep 3 14:44:34 1993 ;;; from file /export/willow0/era-working/editor/lisp/ilisp/ilisp-doc.el ;;; emacs version 19.8 (beta12) Lucid. ;;; bytecomp version 2.18; 28-aug-93. ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "This file was compiled for Emacs 19.")) (defvar ilisp-documentation "Major mode for interacting with an inferior LISP process. Runs a\nLISP interpreter as a subprocess of Emacs, with LISP I/O through an\nEmacs buffer. If you have problems, use M-x ilisp-bug in the buffer\nwhere you are having a problem to send a bug report.\n\nTo start a LISP use M-x run-ilisp, or a specific dialect like M-x\nallegro. If called with a prefix you will be prompted for a buffer\nname and a program to run. The default buffer name is the name of the\ndialect. The default program for a dialect will be the value of\nDIALECT-program or the value of ilisp-program inherited from a less\nspecific dialect. If there are multiple LISP's, use the dialect name\nor select-ilisp (\\[select-ilisp]) to select the current ILISP\nbuffer.\n\nCurrently supported LISP dialects include:\n clisp\n allegro\n lucid\n kcl\n akcl\n ibcl\n cmulisp\n scheme\n oaklisp\n\nCustomization: Starting a dialect runs the hooks on comint-mode-hook\nand ilisp-mode-hook and then DIALECT-hooks specific to dialects in the\nnesting order above. On the very first prompt in the inferior LISP,\nthe hooks on ilisp-init-hook are run. For more information on\ncreating a new dialect or variables to set in hooks, see ilisp.el.\n\nMost of these key bindings work in both Lisp Mode and ILISP mode.\nThere are a few additional and-go bindings found in Lisp Mode.\n\\{ilisp-use-map}\nThere are also a few bindings found in global-map including:\n \\[popper-bury-output] popper-bury-output\n \\[popper-scroll-output] popper-scroll-output\n \\[popper-other-window] popper-other-window\n \\[popper-grow-output] popper-grow-output\n \\[previous-buffer-lisp] previous-buffer-lisp\n \\[switch-to-lisp] switch-to-lisp\n\nILISP uses a dynamically sized pop-up window that can be buried and\nscrolled from any window for displaying output. See the file\npopper.el or the ILISP info node for information on customizing popper\nwindows. (\\[popper-other-window]) skips the popper window. If\ncalled with a C-u prefix, the popper window will be selected.\npopper-bury-output (\\[popper-bury-output]) buries the output window.\npopper-scroll-output (\\[popper-scroll-output]) scrolls the output\nwindow if it is already showing, otherwise it pops it up. If it is\ncalled with a negative prefix, it will scroll backwards.\npopper-grow-output (\\[popper-grow-output]) will grow the output\nwindow if showing by the prefix number of lines. Otherwise, it will\npop the window up.\n\nIf you are running epoch, the popper window will be in a separate\nX window that is not automatically grown or shrunk. The variable\npopper-screen-properties can be used to set window properties for that\nwindow. \n\nAn alternative to popper windows is to always have the inferior LISP\nbuffer visible and have all output go there. Setting lisp-no-popper\nto T will cause all output to go to the inferior LISP buffer.\nSetting comint-always-scroll to T will cause process output to always\nbe visible. If a command gets an error, you will be left in the break\nloop.\n\nEach ILISP buffer has a command history associated with it. Commands\nthat do not match ilisp-filter-regexp and that are longer than\nilisp-filter-length and that do not match the immediately prior\ncommand will be added to this history. comint-previous-input\n(\\[comint-previous-input]) and comint-next-input\n(\\[comint-next-input]) cycle through the input history.\ncomint-previous-similar-input (\\[comint-previous-similar-input])\ncycles through input that has the string typed so far as a prefix.\n\nSee comint-mode documentation for more information on comint commands.\n\nA number of commands refer to \"defun\". A \"defun\" is a list that\nstarts at the left margin in a LISP buffer, or after a prompt in the\nILISP buffer. So the commands refer to the \"defun\" that contains\npoint.\n\nThere are two keyboard modes for interacting with the inferior LISP,\n\"interactive\" and \"raw\". Normally you are in interactive mode\nwhere keys are interpreted as commands to EMACS and nothing is sent to\nthe inferior LISP unless a specific command does so. In raw mode, all\ncharacters are passed directly to the inferior LISP without any\ninterpretation as EMACS commands. Keys will not be echoed unless\nilisp-raw-echo is T. Raw mode can be turned on interactively by\nraw-keys-ilisp (\\[raw-keys-ilisp]) and will continue until you type\nC-g. Raw mode can also be turned on/off by inferior LISP functions if\nio-bridge-ilisp (\\[io-bridge-ilisp]) has been executed in the\ninferior LISP interactively or on a hook. To turn on raw mode, a\nfunction should print ^[1^] and to turn it off should print ^[0^].\n\nWhen you send something to LISP, the status light will reflect the\nprogress of the command. If you type top-level forms ahead of the\nprocessing, the status may indicate ready when the LISP is actually\nrunning. In a lisp mode buffer the light will reflect the status of\nthe currently selected inferior LISP unless lisp-show-status is nil.\nIf you want to find out what command is currently running, use the\ncommand status-lisp (\\[status-lisp]). If you call it with a prefix,\nthe pending commands will be displayed as well.\n\nIf you are want to abort the last command you can use\n(\\[keyboard-quit]). If you want to abort all commands, you should\nuse the command abort-commands-lisp (\\[abort-commands-lisp]).\nCommands that are aborted will be put in the buffer *Aborted Commands*\nso that you can see what was aborted. If you want to abort the\ncurrently running top-level command, use interrupt-subjob-ilisp\n(\\[interrupt-subjob-ilisp]). As a last resort, \\[panic-lisp] will\nreset the ILISP state without affecting the inferior LISP so that you\ncan see what is happening.\n\nbol-ilisp (\\[bol-ilisp]) will go after the prompt as defined by\ncomint-prompt-regexp or ilisp-other-prompt or to the left margin with\na prefix.\n\nreturn-ilisp (\\[return-ilisp]) knows about prompts and sexps. If an\nsexp is not complete, it will indent properly. When an entire sexp is\ncomplete, it is sent to the inferior LISP together with a new line.\nIf you edit old input, the input will be copied to the end of the\nbuffer first.\n\nclose-and-send-lisp (\\[close-and-send-lisp]) will close the current\nsexp, indent it, then send it to the current inferior LISP.\n\nindent-line-ilisp (\\[indent-line-ilisp]) indents for LISP. With\nprefix, shifts rest of expression rigidly with the current line.\n\nnewline-and-indent-lisp (\\[newline-and-indent-lisp]) will insert a\nnew line and then indent to the appropriate level. If you are at the\nend of the inferior LISP buffer and an sexp, the sexp will be sent to\nthe inferior LISP without a trailing newline.\n\nindent-sexp-ilisp (\\[indent-sexp-ilisp]) will indent each line in\nthe next sexp.\n\nbackward-delete-char-untabify (\\[backward-delete-char-untabify])\nconverts tabs to spaces as it moves back.\n\ndelete-char-or-pop-ilisp (\\[delete-char-or-pop-ilisp]) will delete\nprefix characters unless you are at the end of an ILISP buffer in\nwhich case it will pop one level in the break loop.\n\nreset-ilisp, (\\[reset-ilisp]) will reset the current inferior LISP's\ntop-level so that it will no longer be in a break loop.\n\nswitch-to-lisp (\\[switch-to-lisp]) will pop to the current ILISP\nbuffer or if already in an ILISP buffer, it will return to the buffer\nthat last switched to an ILISP buffer. With a prefix, it will also go\nto the end of the buffer. If you do not want it to pop, set\npop-up-windows to nil. \n\ncall-defun-lisp (\\[call-defun-lisp]) will put a call to the current\ndefun in the inferior LISP and go there. If it is a (def* name form,\nit looks up reasonable forms of name in the input history unless\ncalled with a prefix. If not found, (name or *name* will be inserted.\nIf it is not a def* form, the whole defun will be put in the buffer.\n\nreposition-window-lisp (\\[reposition-window-lisp]) will scroll the\ncurrent window to show as much of the current defun and its\nintroductory comments as possible without moving the point. If called\nwith a prefix, the point will be moved if necessary to show the start\nof the defun. If called more than once with the first line of the\ndefun showing, the introductory comments will be shown or suppressed.\n\nprevious-buffer-lisp (\\[previous-buffer-lisp]) will switch to the\nlast visited buffer in the current window or the Nth previous buffer\nwith a prefix.\n\nfind-unbalanced-lisp (\\[find-unbalanced-lisp]) will find unbalanced\nparens in the current buffer. When called with a prefix it will look\nin the current region.\n\nclose-all-lisp (\\[close-all-lisp]) will close all outstanding\nparens back to the containing form, or a previous left bracket\nwhich will be converted to a left parens. If there are too many\nparens, they will be deleted unless there is text between the\nlast paren and the end of the defun. If called with a prefix,\nall open left brackets will be closed.\n\nreindent-lisp (\\[reindent-lisp]) will reindent the current paragraph\nif in a comment or string. Otherwise it will close the containing\ndefun and reindent it.\n\ncomment-region-lisp (\\[comment-region-lisp]) will put prefix copies of\ncomment-start before and comment-end's after the lines in region. To\nuncomment a region, use a minus prefix.\n\nThe very first inferior LISP command executed may send some forms to\ninitialize the inferior LISP.\n\nEach time an inferior LISP command is executed, the last form sent can be\nseen in the *ilisp-send* buffer.\n\nThe first time an inferior LISP mode command is executed in a Lisp\nMode buffer, the package will be determined by using the regular\nexpression ilisp-package-regexp to find a package sexp and then\npassing that sexp to the inferior LISP through ilisp-package-command.\nFor the clisp dialect, this will find the first (in-package PACKAGE)\nform in the file. A buffer's package will be displayed in the mode\nline. set-buffer-package-lisp (\\[set-buffer-package-lisp]) will\nupdate the current package from the buffer. If it is called with a\nprefix, the package can be set manually. If a buffer has no\nspecification, forms will be evaluated in the current inferior LISP\npackage. package-lisp (\\[package-lisp]) will show the current\npackage of the inferior LISP. set-package-lisp\n(\\[set-package-lisp]) will set the inferior LISP package to the\ncurrent buffer's package or to a manually entered package with a\nprefix.\n\ndescribe-lisp, inspect-lisp, arglist-lisp, documentation-lisp,\nmacroexpand-1-lisp, macroexpand-lisp, edit-definitions-lisp,\nwho-calls-lisp, edit-callers-lisp and trace-defun-lisp will switch\nwhether they prompt for a response or use a default when called with a\nnegative prefix. If they are prompting, there is completion through\nthe inferior LISP by using TAB or M-TAB. When you are entering an\nexpression in the minibuffer, all of the normal ilisp commands like\narglist-lisp also work.\n\nCommands that work on a function will use the nearest previous\nfunction symbol. This is either a symbol after a #' or the symbol at\nthe start of the current list.\n\ndescribe-lisp (\\[describe-lisp]) will describe the previous sexp.\ninspect-lisp (\\[inpsect-lisp]) will inspect the previous sexp.If\nthere is no previous-sexp and you are in an ILISP buffer, the previous\nresult will be described or inspected.\n\narglist-lisp (\\[arglist-lisp]) will return the arglist of the\ncurrent function. With a numeric prefix, the leading paren will be\nremoved and the arglist will be inserted into the buffer.\n\ndocumentation-lisp (\\[documentation-lisp]) infers whether function\nor variable documentation is desired. With a negative prefix, you can\nspecify the type of documentation as well. With a positive prefix the\ndocumentation of the current function call is returned.\n\nIf the Franz online Common LISP manual is available, fi:clman\n(\\[fi:clman]) will get information on a specific symbol.\nfi:clman-apropos (\\[fi:clman-apropos]) will get information apropos\na specific string. Some of the documentation is specific to the\nallegro dialect, but most of it is for standard Common LISP.\n\nmacroexpand-lisp (\\[macroexpand-lisp]) and macroexpand-1-lisp\n(\\[macroexpand-1-lisp]) will be applied to the next sexp. They will\ninsert their result into the buffer if called with a numeric prefix.\n\ncomplete-lisp (\\[complete-lisp]) will try to complete the previous\nsymbol in the current inferior LISP. Partial completion is supported\nunless ilisp-prefix-match is set to T. (If you set it to T, inferior\nLISP completions will be faster.) With partial completion, \"p--n\"\nwould complete to \"position-if-not\" in Common LISP. If the symbol\nfollows a left paren or a #', only symbols with function cells will be\nconsidered. If the symbol starts with a * or you call with a\npositive prefix all possible completions will be considered. Only\nexternal symbols are considered if there is a package qualification\nwith only one colon. The first time you try to complete a string the\nlongest common substring will be inserted and the cursor will be left\non the point of ambiguity. If you try to complete again, you can see\nthe possible completions. If you are in a string, then filename\ncompletion will be done instead. And if you try to complete a\nfilename twice, you will see a list of possible completions. Filename\ncomponents are completed individually, so /u/mi/ could expand to\n/usr/misc/. If you complete with a negative prefix, the most recent\ncompletion (symbol or filename) will be undone.\n\ncomplete (\\[complete]) will complete the current symbol to the most\nrecently seen symbol in Emacs that matches what you have typed so far.\nExecuting it repeatedly will cycle through potential matches. This is\nfrom the TMC completion package and there may be some delay as it is\ninitially loaded.\n\ntrace-defun-lisp (\\[trace-defun-lisp]) traces the current defun.\nWhen called with a numeric prefix the function will be untraced.\n\ntrace-defun-lisp-break (\\[trace-defun-lisp-break]) traces the\ncurrent defun but sets a breakpoint in the function if possible.\nWhen called with a numeric prefix the function will be untraced.\n\ndefault-directory-lisp (\\[default-directory-lisp]) sets the default\ninferior LISP directory to the directory of the current buffer. If\ncalled in an inferior LISP buffer, it sets the Emacs default-directory\nthe LISP default directory.\n\nThe eval/compile commands evaluate or compile the forms specified. If\nany of the forms contain an interactive command, then the command will\nnever return. To get out of this state, you need to use\nabort-commands-lisp (\\[abort-commands-lisp]). The eval/compile\ncommands verify that their expressions are balanced and then send the\nform to the inferior LISP. If called with a positive prefix, the\nresult of the operation will be inserted into the buffer after the\nform that was just sent. If lisp-wait-p is t, then EMACS will display\nthe result of the command in the minibuffer or a pop-up window. If\nlisp-wait-p is nil, (the default) the send is done asynchronously and\nthe results will be brought up only if there is more than one line or\nthere is an error. In this case, you will be given the option of\nignoring the error, keeping it in another buffer or keeping it and\naborting all pending sends. If there is not a command already running\nin the inferior LISP, you can preserve the break loop. If called with\na negative prefix, the sense of lisp-wait-p will be inverted for the\nnext command. The and-go versions will perform the operation and then\nimmediately switch to the ILISP buffer where you will see the results\nof executing your form. If eval-defun-and-go-lisp\n(\\[eval-defun-and-go-lisp]) or compile-defun-and-go-lisp\n(\\[compile-defun-and-go-lisp]) is called with a prefix, a call for\nthe form will be inserted as well.\n\nWhen an eval is done of a single form matching ilisp-defvar-regexp,\nthe corresponding symbol will be unbound and the value assigned again.\n\nWhen compile-defun-lisp (\\[compile-defun-lisp]) is called in an\ninferior LISP buffer with no current form, the last form typed to the\ntop-level will be compiled.\n\nThe following commands all deal with finding things in source code.\nThe first time that one of these commands is used, there may be some\ndelay while the source module is loaded. When searching files, the\nfirst applicable rule is used: 1) try the inferior LISP, 2) try a tags\nfile if defined, 3) try all buffers in one of lisp-source-modes or all\nfiles defined using lisp-directory.\n\nlisp-directory (\\[lisp-directory]) defines a set of files to be\nsearched by the source code commands. It prompts for a directory and\nsets the source files to be those in the directory that match entries\nin auto-mode-alist for modes in lisp-source-modes. With a positive\nprefix, the files are appended. With a negative prefix, all current\nbuffers that are in one of lisp-source-modes will be searched. This\nis also what happens by default. Using this command stops using a\ntags file.\n\nedit-definitions-lisp (\\[edit-definitions-lisp]) will find a\nparticular type of definition for a symbol. It tries to use the rules\ndescribed above. The files to be searched are listed in the buffer\n*Edit-Definitions*. If lisp-edit-files is nil, no search will be\ndone if not found through the inferior LISP. The variable\nilisp-locator contains a function that when given the name and type\nshould be able to find the appropriate definition in the file. There\nis often a flag to cause your LISP to record source files that you\nwill need to set in the initialization file for your LISP. The\nvariable is *record-source-files* in both allegro and lucid. Once a\ndefinition has been found, next-definition-lisp\n(\\[next-definition-lisp]) will find the next definition. (Or the\nprevious definition with a prefix.)\n\nedit-callers-lisp (\\[edit-callers-lisp]) will generate a list of all\nof the callers of a function in the current inferior LISP and edit the\nfirst caller using edit-definitions-lisp. Each successive call to\nnext-caller-lisp (\\[next-caller-lisp]) will edit the next caller.\n(Or the previous caller with a prefix.) The list is stored in the\nbuffer *All-Callers*. You can also look at the callers by doing\nwho-calls-lisp (\\[who-calls-lisp]).\n\nsearch-lisp (\\[search-lisp]) will search the current tags files,\nlisp directory files or buffers in one of lisp-source-modes for a\nstring or a regular expression when called with a prefix.\n(\\[next-definition-lisp]) will find the next definition. (Or the\nprevious definition with a prefix.)\n\nreplace-lisp (\\[replace-lisp]) will replace a string (or a regexp\nwith a prefix) in the current tags files, lisp directory files or\nbuffers in one of lisp-source-modes.\n\nThe following commands all deal with making a number of changes all at\nonce. The first time one of these commands is used, there may be some\ndelay as the module is loaded. The eval/compile versions of these\ncommands are always executed asynchronously.\n\nmark-change-lisp (\\[mark-change-lisp]) marks the current defun as\nbeing changed. A prefix causes it to be unmarked. clear-changes-lisp\n(\\[clear-changes-lisp]) will clear all of the changes.\nlist-changes-lisp (\\[list-changes-lisp]) will show the forms\ncurrently marked. \n\neval-changes-lisp (\\[eval-changes-lisp]), or compile-changes-lisp\n(\\[compile-changes-lisp]) will evaluate or compile these changes as\nappropriate. If called with a positive prefix, the changes will be\nkept. If there is an error, the process will stop and show the error\nand all remaining changes will remain in the list. All of the results\nwill be kept in the buffer *Last-Changes*.\n\nFile commands in lisp-source-mode buffers keep track of the last used\ndirectory and file. If the point is on a string, that will be the\ndefault if the file exists. If the buffer is one of\nlisp-source-modes, the buffer file will be the default. Otherwise,\nthe last file used in a lisp-source-mode will be used.\n\nfind-file-lisp (\\[find-file-lisp]) will find a file. If it is in a\nstring, that will be used as the default if it matches an existing\nfile. Symbolic links are expanded so that different references to the\nsame file will end up with the same buffer.\n\nload-file-lisp (\\[load-file-lisp]) will load a file into the inferior\nLISP. You will be given the opportunity to save the buffer if it has\nchanged and to compile the file if the compiled version is older than\nthe current version.\n\ncompile-file-lisp (\\[compile-file-lisp]) will compile a file in the\ncurrent inferior LISP." "\ Documentation string for ILISP mode.") (provide 'ilisp-doc)