2006-02-22 Matthias Koeppe * slime.el (slime-repl-send-input): Don't include the final newline in the slime-repl-input-face overlay, thus avoid showing the "Evaluation aborted" message in boldface. Don't set non-existent "rear-nonsticky" overlay property; overlay stickiness is controlled by make-overlay arguments. 2006-02-20 Matthias Koeppe Use argument list information to complete keywords contextually. Example: (find 1 '(1 2 3) :s --completes--> :start rather than suggesting all ever-interned keywords starting with ":s". * slime.el (slime-complete-keywords-contextually): New customizable variable. (slime-enclosing-operator-names): New optional argument max-levels. (slime-completions-for-keyword): New. (slime-contextual-completions): New. (slime-expand-abbreviations-and-complete): Use it instead of slime-completions. * swank.lisp (operator-designator-to-form): New, factored out from arglist-for-echo-area. (arglist-for-echo-area): Use it here. (completions-for-keyword): New. (find-matching-symbols-in-list): New. 2006-02-19 Matthias Koeppe * slime.el (slime-expand-abbreviations-and-complete): Scroll the completions buffer if the TAB key is pressed another time, like Emacs minibuffer completion does. 2006-02-18 Marco Baringer * slime.el (slime-macroexpansion-minor-mode): New minor mode for macroexpansion buffer. Exactly like slime-temp-buffer-mode but with slime-macroexpand-again bound to "g". (*slime-eval-macroexpand-expression*): New variable. introduced for slime-macroexpand-again, used by slime-eval-macroexpand as well. (slime-eval-macroexpand): Added optional string argument which defaults to (slime-sexp-at-point-or-error). (slime-macroexpand-again): New function, redoes the last macroexpansion. (slime-sexp-at-point-or-error): New function. Like slime-sexp-at-point but signals an error when slime-sexp-at-point would return nil. * swank-openmcl.lisp (swank-mop:compute-applicable-methods-using-classes): Implement. 2006-02-16 Matthias Koeppe * sbcl-pprint-patch.lisp: New file, adds the annotations feature to the SBCL pretty printer. This is needed for sending presentations through pretty-printing streams. * present.lisp [sbcl]: Load it here. (slime-stream-p, write-annotation) [sbcl]: Handle pretty-streams. 2006-02-10 Helmut Eller * swank-allegro.lisp, swank-lispworks.lisp (inspect-for-emacs): Use the backend specific method to inspect standard-objects because {slot-boundp,slot-value}-using-class don't conform to the MOP spec in LW and ACL. * swank.lisp (macro-indentation): Don't count '&optional as argument. * swank-loader.lisp (default-fasl-directory): Include the SLIME version. (slime-version-string): New. 2006-02-06 Matthias Koeppe Show enriched arglists for DEFMETHOD in the echo area when the user types SPC after the generic function name. * swank.lisp (arglist-to-template-string): Unused, removed. (extra-keywords): Indicate which part of the actual arglist was used to determine the extra keywords. For MAKE-INSTANCE, don't signal an error if the class does not exist. (enrich-decoded-arglist-with-extra-keywords): Indicate which part of the actual arglist was used to determine the extra keywords, and whether any extra keywords were added. (form-completion): Generalize to handle display of enriched formal arglists. (read-incomplete-form-from-string): New, factored out from complete-form. Handle end-of-file. (complete-form): Use it here. (format-arglist-for-echo-area): Use form-completion, so as to show enriched formal arglists for MAKE-INSTANCE and DEFMETHOD calls. (arglist-for-echo-area): Handle MAKE-INSTANCE and DEFMETHOD calls. * slime.el (slime-enclosing-operator-names): Represent MAKE-INSTANCE calls by (:make-instance "CLASS-NAME"), handle DEFMETHOD too. 2006-02-05 Matthias Koeppe * slime.el (slime-complete-form): Indent the inserted template. 2006-02-04 Matthias Koeppe * slime.el (slime-fontify-string): New. (slime-echo-arglist, slime-arglist, slime-autodoc): Use it here to fontify echo-area arglists. 2006-02-02 Marco Baringer * swank-openmcl.lisp: Added imports for slot-boundp-using-class, slot-value-using-class and finalize-inheritance. 2006-02-01 Alan Ruttenberg * swank-abcl.lisp: define with-compilation-hooks (= funcall for now), so that you can do slime-oos 2006-01-30 Ian Eslick Show slot values for metaclasses that override the default storage locations for objects slots (i.e. where the default slot-boundp returns nil) in the inspector. * swank.lisp (inspect-for-emacs standard-object): Use slot-value-using-class and slot-boundp-using-class. * swank-backend.lisp: Add slot-value-using-class and slot-boundp-using-class to the swank-mop package. 2006-01-26 Luís Oliveira * slime.el (slime-enclosing-operator-names): detect make-instance forms and collect the class-name argument if it exists and is a quoted symbol. * swank.lisp (arglist-for-echo-area): handle pairs of of the form ("make-instance" . "") by passing them to format-initargs-and-initforms-for-echo-area. (class-initargs-and-iniforms): New function. (format-initargs-and-initforms-for-echo-area): New function. 2006-01-20 Mészáros Levente * swank-sbcl.lisp (restart-frame): Provide an implementation even if it doesn't quite do what it's supposed to do. 2006-01-19 Helmut Eller Return to the previous loading strategy: load everything when swank-loader is loaded. It's just to convenient to give that up. To customize the fasl directories, the new variable swank-loader:*fasl-directory* can be set before loading swank-loader. * swank-loader.lisp (*fasl-directory*, *source-directory*): New variables. (load-swank): Call it during loading. 2006-01-14 Helmut Eller * slime.el (slime-compile-defun): If point was at the opening paren we wrongly used the preceding toplevel form. Fix it. Reported by Chisheng Huang and Liam M. Healy. * swank.lisp (spawn-threads-for-connection): Fix a race condition: Don't accept input before all threads are ready. Make the fasl directory customizable: load-swank must now be called explicitly so that we can supply the fasl dir as argument. * swank-loader.lisp (load-swank): New entry point. 2006-01-14 Andreas Fuchs * slime.el (slime-selector ?r): Call slime instead of slime-start to pick up the usual defaults. 2005-12-31 Harald Hanche-Olsen * slime.el (slime-open-stream-to-lisp): Inherit the process-coding-system from the current connection. 2005-12-27 Alan Ruttenberg * swank-abcl. (backtrace-as-list-ignoring-swank-calls): remove the swank calls from the backtrace to make it easier to use. (frame-locals): Fix a typo that caused entry into the debugger if you tried to look at frame locals. Now you don't error out, but you still don't see frame locals because I don't know how to get them :( 2005-12-27 Helmut Eller Keep a history of protocol events for better bug reports. * swank.lisp (log-event): Record the event in the history buffer. (*event-history*): Buffer for events. (dump-event-history): New function. (close-connection): Escape non-ascii strings and include the event history in the error message. 2005-12-22 Helmut Eller Make highlighting of modified text a minor mode. Also use after-change-functions instead of rebinding all self-inserting keys. * slime.el (slime-highlight-edits-mode): New minor mode. (slime-self-insert-command): Deleted. (slime-before-compile-functions): New hook to decouple edit highlighting from compilation. (slime-highlight-edits-face): Renamed from slime-display-edit-face. 2005-12-20 Marco Baringer When inspecting classes, methods and generic functions show all the slots in the case that what we're inspecting is a subclass of the standard class and has extra user defined slots. * swank.lisp (all-slots-for-inspector): New function. (inspect-for-emacs): Use all-slots-for-inspector. 2005-12-19 Peter Seibel * slime.el (slime-self-insert-command): Got rid of message about setting up face and skipping edit-hilights when in a comment. 2005-12-18 Nikodemus Siivola * slime.el (slime-mode-hook): Bind simple characters to slime-self-insert-command only if there was no previous local binding, and the major mode is _not_ slime-repl-mode. This restores keybindings of slime-xref-mode and prevents us from stomping on user bindings. The hilighting also makes no sense in the REPL. 2005-12-16 Nikodemus Siivola * slime.el (slime-selector-method: ?r): If no connection offer to start Slime. * swank.lisp (to-string): Handle errors from printing objects. Among other things makes the inspector more robust in the face of objects with unbound slots and print-methods that fail to cope. 2005-12-16 William Bland Added hilighting of tetx which has been edited but not yet compilied. * slime.el (slime-display-edit-hilights): New variable. (slime-display-edit-face): New face. (slime-compile-file, slime-compile-defun, slime-compile-region): Remove edits overlay. (slime-remove-edits): New function. (slime-self-insert-command): New function. (slime-mode-hook): Rebind simple characters to slime-self-insert-command. 2005-12-07 Matthias Koeppe * swank-allegro.lisp (find-definition-in-file) (find-fspec-location, fspec-definition-locations): Allegro CL properly records all definitions made by arbitrary macros whose names start with "def". Use excl::find-source-file and scm:find-definition-in-definition-group (rather than scm:find-definition-in-file) to find them. * slime.el (slime-load-file): Change the default to be the buffer file name with extension. This is more convenient for files like .asd files that do not have the default source file extension. (slime-save-some-lisp-buffers, slime-update-modeline-package): Handle all files with major mode in slime-lisp-modes, not just lisp-mode. 2005-12-06 Juho Snellman * swank-sbcl.lisp (function-source-location, safe-function-source-location): Oops, define these functions also for the >0.9.6 case. Fixes broken sldb-show-source on SBCL 0.9.7. 2005-12-05 Helmut Eller * slime.el (slime-find-coding-system): Use check-coding-system only if it's actually fbound. 2005-11-22 Marco Monteiro * slime.el (slime-connect): Use slime-net-coding system if the optional arg coding-system was not supplied. 2005-11-22 Helmut Eller * slime.el (slime-compile-file): Call 'check-parens before compiling. (slime-compile-file): Call 'check-parens before compiling. (slime-find-coding-system): Return nil if the coding system isn'tvalid instead of singalling an error. (slime-repl-history-file-coding-system): Use slime-find-coding-system to find the default. * swank-cmucl.lisp (accept-connection): Remove fd-handlers if the encoding isn't iso-latin-1. 2005-11-21 Helmut Eller * slime.el (slime-start): Don't set slime-net-coding-system .. (slime-read-port-and-connect): .. read it from the inferior lisp args. (slime-connect): Take the coding-system as third argument. (slime-repl-history-file-coding-system): New user option. (slime-repl-safe-save-merged-history): New function. Use it in hooks so that bad coding systems don't stop us from exiting. (slime-repl-save-history): Include the coding-system which was used to save the buffer. (repl-shoctut change-package): Add alias ,in and ,in-package. (slime-eval-macroexpand): Error out early if there's no sexp at point. (slime-compiler-macroexpand): New command. (slime-inspector-pprint): New command. * swank-cmucl.lisp (inspect-for-emacs): Add support for funcallable instances. * swank.lisp (pprint-inspector-part, swank-compiler-macroexpand): New. * swank-backend.lisp (compiler-macroexpand) (compiler-macroexpand-1): New functions. 2005-11-14 Douglas Crosher * swank-scl.lisp (accept-connection): handle the :buffering argument. 2005-11-13 Andras Simon * swank-abcl.lisp: (accept-connection): New argument: buffering. 2005-11-13 Andras Simon * swank-abcl.lisp: Steal auto-flush stuff from swank-sbcl.lisp 2005-11-11 Helmut Eller * swank.lisp (*dedicated-output-stream-buffering*): New variable to customize the buffering scheme. For single-threaded Lisps we disable buffering because lazy programmers forget to call finish-output. (open-dedicated-output-stream): Use it. * swank-backend.lisp, swank-allegro.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-cmucl.lisp, swank-sbcl.lisp, swank-clisp.lisp, swank-abcl.lisp, swank-corman.lisp, swank-ecl.lisp (accept-connection): New argument: buffering. * slime.el (slime-repl-save-history): When the history exceeds slime-repl-history-size remove the old not the new entries. Some renaming: slime-repl-read-history -> slime-repl-load-history, slime-repl-read-history-internal -> slime-repl-read-history. (slime-eval-macroexpand): Call font-lock-fontify-buffer explicitly, because with certain Emacs versions the buffer doesn't get fontified immediately. 2005-11-07 Helmut Eller * slime.el (slime-eval-macroexpand): Use lisp-mode (and font-lock-mode) when dispaying the expansion. Suggested by Jan Rychter. * swank-source-path-parser.lisp (make-source-recording-readtable): Suppress the #. reader-macro. 2005-11-06 Juho Snellman * swank-sbcl.lisp (find-definitions, make-source-location-specification make-definition-source-location, source-hint-snippet): As of SBCL 0.9.6.25 SB-INTROSPECT has better support for finding source locations. Use as much of it in swank-sbcl as possible. (Original version left reader-conditionalized for older SBCLs). 2005-11-04 Helmut Eller * swank.lisp (connection-info): Docfix. * slime.el (slime-set-connection-info): Generate a new connection name only if the implementation-name and the inferior-lisp-name are different. 2005-10-31 Helmut Eller * slime.el (slime-start, slime-lookup-lisp-implementation) (slime-set-connection-info): Add a :name property for the implementation and use it to derive the connection-name. (slime-lisp-implementation-name): Renamed from slime-lisp-implementation-type-name. * swank.lisp (simple-serve-requests): Add an extra abort restart. (connection-info): Rename :type-name to :name. 2005-10-30 Andras Simon * swank-abcl.lisp (inspect-for-emacs): Track mop changes in ABCL. 2005-10-30 Helmut Eller * slime.el (slime-eval): Ensure that the connection is open before waiting for input. * swank.lisp (simple-serve-requests): Close the connection at the end. 2005-10-23 Harald Hanche-Olsen * slime.el (slime-init-keymaps): Use vectors when defining keys, because e.g. (define-key (string ?\C-c) ...) doesn't work in the emacs-unicode-2 branch. 2005-10-23 Stefan Kamphausen * slime.el (slime-repl-history-size, slime-repl-history-file): Use defcustom to declare the variables. 2005-10-23 Gabor Melis * swank-backend.lisp (install-debugger-globally): new interface function * swank.lisp (install-debugger): call install-debugger-globally * swank-sbcl.lisp (install-debugger-globally): set sb-ext:*invoke-debugger-hook* too 2005-10-23 Helmut Eller * swank-sbcl.lisp (make-stream-interactive): Spawn a thread to flush interactive streams in reasonably short intervals. Remove the old backward-compatible threading implementation. * swank.lisp (package-string-for-prompt): Respect *print-case*. 2005-10-21 Helmut Eller * slime.el (slime-start-swank-server): Avoid comint-send-input here as it seems to trigger a bug in ansi-color-for-commit-mode. 2005-10-18 Douglas Crosher * swank.lisp (canonical-package-nickname): always return the package name as a STRING if found. This restores the printing of package names as strings. 2005-10-17 Marco Baringer * swank.lisp (eval-in-emacs): Instead of taking a string and attempting to parse it emacs side the function now takes a form and converts it to a string internally. This should allow users of the function to not have to worry about quoting issues and emacs' different printed represenation for, among other things, characters. (process-form-for-emacs): New function. Converts a list into a string for passing to emacs. * slime.el (slime-eval-for-lisp): New API. This function now takes a single string, representing the form to evaluate, and uses emacs' read function to convert it into a form before eval'ing it. (slime-dispatch-event): The :eval event now passes a single string (instead of a string and something looking kind of like a form). 2005-10-15 Douglas Crosher * swank-scl.lisp: Support for Scieneer Common Lisp. * swank-backend.lisp (*gray-stream-symbols*) Scieneer Common Lisp implements stream-line-length. * swank-loader.lisp: Support for Scieneer Common Lisp: (*sysdep-pathnames*) use swank-scl. (*impl ementation-features*) add :scl. (*os-features*) add :hpux. (*architecture-features*) add :amd64, :i686, :i486, :sparc64, :sparc, :hppa64, and :hppa. * swank.lisp: (*canonical-package-nicknames*) use lowercase symbols to name the packages. This supports CL implementations with lowercase default symbol names, such as Scieneer Common Lisp, while still being compatible with ANSI-CL. 2005-10-11 Stefan Kamphausen * slime.el: Persistent REPL history. The history from REPL buffers is now saved to the file ~/.slime-history.eld. The file is read on startup and saved when a REPL buffer gets killed or when Emacs exits. There are also commands to save or read the history file. (slime-repl-save-merged-history, slime-repl-merge-histories) (slime-repl-read-history, slime-repl-save-history): New functions. (slime-repl-history-file, slime-repl-history-size): New vars. (slime-repl-mode): Add hooks to load and save the history. 2005-10-11 Helmut Eller * slime.el (slime-read-interactive-args): Split the string inferior-lisp-program to get the values for :program and :program-args. Also let slime-lisp-implementations take precedence if non-nil. (slime-lisp-implementations): Renamed from slime-registered-lisp-implementations. * swank.lisp (force-user-output): There seems to be a bug in Allegro's two-way-streams. As a workaround we use force-output for the user-io stream. (finish-output *debug-io*) still triggers the bug. 2005-10-10 Svein Ove Aas * swank-allegro.lisp (find-external-format): Translate :utf-8-unix to :utf8, which Allegro 7.0 understands. 2005-10-09 Helmut Eller * slime.el (slime, slime-start): Introduce a separate function for the non-interactive case. `slime-start' takes lots of keyword arguments and `slime' is reserved for interactive use. (slime-read-interactive-args): New function. (slime-maybe-start-lisp, slime-inferior-lisp) (slime-start-swank-server): Pass all arguments needed to start the subprocess as a property list. Also store this list in a buffer-local var in the inferior-lisp buffer, so that we can cleanly restart the process. (slime-registered-lisp-implementations): Change the format and document it. M-- M-x slime can now be used select a registered implementation. (slime-symbolic-lisp-name): Deleted. And updated all the functions which passed it along. (slime-set-connection-info): Use the new format. (slime-output-buffer): Don't re-initialize buffer-local variables if the buffer already exists. This saves the history. From Juho Snellman. * swank-cmucl.lisp (sis/in): Use finish-output instead of force-output. * swank.lisp (connection-info): Include the initial package and a more self-descriptive format. 2005-10-01 Juho Snellman * swank-backend (*gray-stream-symbols*): Add :STREAM-LINE-LENGTH to *GRAY-STREAM-SYMBOLS* on implementations that support this extension to gray streams. Reported by Matthew D Swank. 2005-09-29 Luke Gorrie * swank-scheme48: Removed due to excessive whining. 2005-09-28 Helmut Eller * slime.el (slime-multiprocessing): Deleted. No longer needed. (slime-init-command): Updated accordingly. (slime-current-package): Add a special case for Scheme. (slime-simple-completions, slime-apropos): Quote the package, because in can be a plain symbol in Scheme. (slime-inspector-reinspect): Use a proper defslimefun. * swank.lisp (inspector-reinspect): New function. (start-server): Call initialize-multiprocessing before starting the server and startup-idle-and-top-level-loops afterwards. Calling startup-idle-and-top-level-loops here shouldn't be a problem because start-server is only invoked at startup via stdin. * swank-scheme48/source-location.scm: New file. For M-. * swank-scheme48/module.scm (list-all-package): New function. * swank-scheme48/interfaces.scm (module-control-interface): Export it. * swank-scheme48/inspector.scm: Add methods for records and hashtables. (swank:arglist-for-echo-area): Implement it. Only works for functions with enough debug-data (ie. only user-defined functions). * swank-scheme48/completion.scm: New file. (swank:simple-completions, swank:apropos-list-for-emacs): Implemented. * swank-scheme48/load.scm, swank-scheme48/defrectypeX.scm: Renamed the file from defrectype*.scm * swank-scheme48/packages.scm (swank-general-rpc): Don't use posix-process because it doesn't work on Windows, and we don't need it for a mulithreaded server. 2005-09-22 Helmut Eller * swank-backend.lisp (*gray-stream-symbols*): Collect the needed symbols here, so that we don't need to mention them in every backend. (import-from). New function. * swank-sbcl.lisp, swank-allegro.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-ecl.lisp: Use *gray-stream-symbols* when importing the needed symbols. * swank-gray.lisp (stream-fresh-line): Define a method, so that Allegro passes our tests. 2005-09-21 Aleksandar Bakic * swank.lisp (accept-authenticated-connection): Minor fix. Ensure that the decoded message is a string before calling string= on it. 2005-09-21 Helmut Eller * slime.el (slime-setup-command-hooks): Make after-change-functions a buffer-local variable; it's by default global in XEmacs. * swank.lisp (throw-to-toplevel): Invoke the `abort-restart' request instead of throwing to the `slime-toplevel' catch tag. (handle-request): Rename the restart from abort to abort-request. (call-with-connection): Remove the slime-toplevel catch tag because with-connection is used in far to many places which aren't at "toplevel". * present.lisp (presentation-start, presentation-end): Use finish-output instead of force-output. * swank-gray.lisp, swank-cmucl.lisp: Improve stream efficiency by buffering more output. stream-force-output simply does nothing, if the output buffer was flushed less than 200 millisecons before. stream-finish-output can still be used to really flush the buffer. (slime-output-stream): New slot last-flush-time. (stream-finish-output): New function. Do what stream-force-output did previously. (stream-force-output): Buffer more output. * slime.el (slime-process-available-input): Oops, don't start a timer for every event. (slime-write-string): Renamed from slime-output-string. (slime-dispatch-event): Rename :read-output to :write-string. (slime-io-speed-test): New command. (slime-open-stream-to-lisp): Fix parens. The coding system should also be set if presentations are disabled. * swank.lisp (make-output-function): Rename :read-output to :write-string. (eval-for-emacs, interactive-eval, eval-region): Use finish-output not force-output. * swank-sbcl.lisp, swank-openmcl.lisp, swank-allegro.lisp, swank-lispworks: Import `stream-finish-output'. * swank-scheme48/io.scm (empty-swank-output-buffer): Rename :read-output to :write-string. * swank-scheme48/load.scm (slime48-start): Fix '() vs. #f bug. 2005-09-19 Luke Gorrie * nregex.lisp: Released into the public domain by Lawrence E. Freil. 2005-09-19 Helmut Eller * slime.el (slime48): New command. 2005-09-19 Taylor Campbell * swank-scheme48/: New backend. 2005-09-18 Wolfgang Jenkner * bridge.el: cl is required at macro expansion time (because of `block'). Reported by Matthew D Swank. 2005-09-18 Matthias Koeppe * swank.lisp: Move presentation menu protocol here from present.lisp. 2005-09-15 Alan Ruttenberg * slime.el (slime-repl-return) don't copy presentation to input if already in input area. 2005-09-15 Helmut Eller * swank-clisp.lisp (compute-backtrace): Include only "function frames" in the backtrace. I hope that makes some sense. (sldb-backtrace, function-frame-p): New functions. (*sldb-backtrace*, call-with-debugging-environment, nth-frame): Compute and remember the backtrace when entering the debugger. (arglist): If the function has a function-lambda-expression, fetch the arglist from there. (find-encoding): Use strings instead of 'charset:foo symbols to avoid compile time problems if the charset is not available. Suggested by Vaucher Laurent. * swank.lisp (eval-in-emacs): Fix a race condition which occurred with sigio. (*echo-area-prefix*): New variable. * slime.el (slime-process-available-input): Simplify it a bit and make it easier to debug read errors. (slime-net-close): Don't kill the buffer if the new optional arg `debug' is true. (slime-run-when-idle): Accept arguments for the function. (slime-init-connection-state): Close over the proc variable. It was lost when the async evaluation returned. (slime-output-buffer, slime-connection-output-buffer): Make slime-output-buffer faster by keeping the buffer in a connection variable. (slime-restart-inferior-lisp-aux, slime-quit-lisp): Disable the process filter to avoid errors in XEmacs. 2005-09-14 Alan Ruttenberg * slime.el (slime-menu-choices-for-presentation), (slime-presentation-menu) Fix loss after refactoring. xemacs can't handle lambda forms in the menu spec given to x-popup-menu, only symbols, so save the actions in a hash table keyed by a gensym, give x-popup-menu the gensym and then call the gensym. Haven't checked that it actually works in xemacs because my xemacs is hosed in os x Tiger. Could someone let me know... * swank.lisp (inspect-factor-more-action) rename (inspect-show-more-action) Prompt before reading how many more. Would be nicer to prompt in the minibuffer... 2005-09-14 Matthias Koeppe * slime.el (slime-presentation-expression): Remove handling of cons presentation-ids. 2005-09-13 Alan Ruttenberg * slime.el (defcustom slime-ed-use-dedicated-frame ... vs defvar (defcustom slime-when-complete-filename-expand: Use comint-replace-by-expanded-filename instead of comint-dynamic-complete-as-filename to complete file names * swank.lisp (run-repl-eval-hooks .. finally (return vs no return inspector-call-nth-action Allow second value :replace for inspector actions (defvar *slime-inspect-contents-limit* default nil. How many elements of a hash table or array to show by default. If table has more than this then offer actions to view more. Set to nil for no limit. Probably should set default to reasonable value - I like 200. (inspect-for-emacs ((ht hash-table) inspector)) - banner line is hash table object. Respect *slime-inspect-contents-limit* (defmethod inspect-for-emacs ((array array) inspector) Respect *slime-inspect-contents-limit* * swank-openmcl.lisp inspector for closures shows closed-over values. To be fixed: inspector-princ needs to be loaded earlier since swank package not available when compiling 2005-09-13 Helmut Eller * present.lisp (menu-choices-for-presentation-id): Use lookup-presented-object secondary return value instead of *not-present*. (execute-menu-choice-for-presentation-id, presenting-object-1): Remove references to *can-print-presentation*. * slime.el (slime-current-output-id): Remove this ugly klugde. (slime-repl-insert-result): New function. Handle the presentations and other special cases cleaner. (slime-repl-insert-prompt): Use it. The `result' arg is now a structured list; update callers accordingly. (slime-repl-return): Make the prefix arg work again. (package-updating): The result of swank::listener-eval changed a bit. Update the test. Remove some unnecessary uses of `defun*' and reindent it to 80 columns. * swank.lisp: Simplify the object <-> presentation-id mapping. (save-presented-object): Remove the optional `id' arg. (lookup-presented-object): Id should be a fixnum not some cons with fuzzy/non-documented meaning. Use the secondary return value to test for absence of the id. Update callers accordingly. (*not-present*): Deleted. Remove the repl result special cases, let the general presentation machinery handle it. (*last-repl-result-id*, add-repl-result, *current-id*) (clear-last-repl-result): Deleted. (listener-eval): Don't *current-id* to tag result values. (*can-print-presentation*): Deleted. Nobody quite knows whether it's still needed so let just try without it. Updated referrers accordingly. (eval-region, run-repl-eval-hooks): Move the eval hook stuff to a separate function. * swank-loader.lisp (lisp-version-string)[cmu]: Replace spaces with underscores. 2005-09-12 NIIMI Satoshi * swank.lisp, slime.el, swank-clisp.lisp, swank-sbcl.lisp: add EUC-JP as coding system. This patch eliminates the requirement of Mule-UCS to use Japanese characters. (Nice for pre-22 Emacs users.) 2005-09-10 Matthias Koeppe * slime.el (slime-enable-evaluate-in-emacs): Resurrected. (slime-dispatch-event): Respect slime-enable-evaluate-in-emacs for messages :eval-no-wait and :eval. 2005-09-09 Alan Ruttenberg * slime.el (slime-choose-overlay-region). Don't try to overlay a note if location is nil. 2005-09-08 Alan Ruttenberg * bridge.el Fix bug in bridge filter where a bridge message which straddled a packet would be mishandled. Sometimes this would result in spurious bridge message text being inserted with the presentation and the presentation not being sensitive. In other cases there would be an actual error. Introduce bridge-leftovers to save the last, unfinished bit for the next call, and prepend it before processing a chuunk. Also, fix the parentheses so that the unwind protect cleanup forms are actually in the cleanup section. In openmcl, where apparently communication with slime is done in 2k chunks, you can trigger the bug with something like this: (swank::presenting-object 'foo t (dotimes (i 2040) (write-char #\:))) * swank-openmcl.lisp (handle-compiler-warning). Don't create a location if the condition doesn't have a filename. If it does, make sure you pass a string rather than a pathname object otherwise you get a net-read error 2005-09-07 Matthias Koeppe * present.lisp (menu-choices-for-presentation): The Inspect/Describe/Copy items are now provided from the Emacs side. Implement all pathname menu items without having Emacs evaluate a form. Fix for Lisps where ".lisp" is parsed as :name ".lisp". * slime.el (slime-menu-choices-for-presentation): New function, return a menu with Inspect/Describe/Copy plus the items that come from the menu protocol. (slime-presentation-menu): Security improvement for the presentation menu protocol: Don't eval arbitrary forms coming from the Lisp. Minor cleanup: Use x-popup-menu in the normal Emacs way, associating a command with each menu item. 2005-09-05 Helmut Eller * swank-cmucl.lisp (background-message): New function. Forward the call to the front end. (pre-gc-hook, post-gc-hook): Use it. (swank-sym, sending-safe-p): Deleted. * swank.lisp (y-or-n-p-in-emacs): Simplify arglist. (evaluate-in-emacs, dispatch-event, send-to-socket-io): Remove evaluate-in-emacs stuff. (to-string): Undo last change. to-string is not to supposed to ignore errors. Bind *print-readably* instead. (background-message): New function. (symbol-external-p): Simplify it a little. * slime.el (slime-setup-command-hooks): Add after-change-functions only if presentations are enabled. (slime-dispatch-event, slime-enable-evaluate-in-emacs) (evaluate-in-emacs): Remove evaluate-in-emacs stuff. It was not used and redundant. (slime-save-some-lisp-buffers): Renamed from save-some-lisp-buffers. (slime-choose-overlay-region): Ignore :source-form locations. (slime-choose-overlay-for-sexp): Ignore errors when stepping over forms. (slime-search-method-location, slime-goto-location-position): Move all this regexpery to its own function. (slime-recenter-if-needed, slime-repl-return): Factor some duplicated code into its own function. (slime-presentation-bounds, slime-presentation-around-point) (slime-presentation-around-or-before-point): Minor cleanups. 2005-09-04 Matthias Koeppe * slime.el (slime-ensure-presentation-overlay): New. (slime-add-presentation-properties): Don't add face, mouse-face, keymap text properties. Call slime-ensure-presentation-overlay to implement them via overlays. (slime-remove-presentation-properties): Don't remove these text properties. Delete the right overlay. (slime-after-change-function): Add overlays for presentations if necessary. (slime-copy-presentation-at-point): Don't add face text property. (slime-repl-grab-old-output): Likewise. 2005-08-31 Marco Baringer * swank.lisp (to-string): Handle errors during printing of objects. 2005-08-30 Alan Ruttenberg * slime.el (slime-mark-presentation-start/end-handler) modify regexp to recognize negative presentation ids to make presenting-object work with bridge mode. 2005-08-30 Luke Gorrie * present.lisp: Added public domain dedication (OK'd by Alanr and Matthias on the list). 2005-08-29 Matthias Koeppe * swank-lispworks.lisp (env-internals:confirm-p): Use new function y-or-n-p-in-emacs rather than eval-in-emacs. * swank-cmucl.lisp (eval-in-emacs): Removed. (send-to-emacs): New. (pre-gc-hook, post-gc-hook): Use new protocol message :background-message rather than eval-in-emacs. * swank.lisp (dispatch-event, send-to-socket-io): Handle new messages :y-or-n-p, :background-message. (y-or-n-p-in-emacs): New function. * slime.el (slime-dispatch-event): Handle new messages :y-or-n-p, :background-message. (slime-y-or-n-p): New. 2005-08-29 Alan Ruttenberg * slime.el (sldb-insert-condition) - Add tooltip for long condition string which otherwise falls off the right of the screen * swank.lisp (list-threads) - thread name might be a symbol - pass the symbol name when that happens 2005-08-29 Juho Snellman * swank-sbcl.lisp (make-weak-key-hash-table): Remove the implementation; SBCL doesn't actually support weak hash-tables. 2005-08-28 Matthias Koeppe * slime.el (slime-repl-kill-input): New command. (slime-repl-mode-map): Bind it to C-c C-u, like in comint. (slime-repl-easy-menu): Include it in the REPL menu. (slime-repl-mode-hook): Show the SLIME menu in the REPL too. * swank-backend.lisp (make-weak-key-hash-table) (make-weak-value-hash-table): New interfaces. * swank-cmucl.lisp (make-weak-key-hash-table): Implement it. * swank-sbcl.lisp (make-weak-key-hash-table): Implement it. * swank-openmcl.lisp (make-weak-key-hash-table) (make-weak-value-hash-table): Implement it. * swank.lisp (*object-to-presentation-id*) (*presentation-id-to-object*): Use new functions make-weak-key-hash-table, make-weak-value-hash-table. * slime.el (slime-enable-evaluate-in-emacs): New variable. (evaluate-in-emacs): Security improvement: If slime-enable-evaluate-in-emacs is nil (the default), don't evaluate forms sent by the Lisp. * swank.lisp (send-to-socket-io): Handle :evaluate-in-emacs. 2005-08-27 Matthias Koeppe * slime.el (slime-presentation-menu): When an object is no longer recorded, remove text properties from the presentation. 2005-08-15 Alan Ruttenberg * swank-openmcl.lisp (condition-source-position) ccl::compiler-warning-stream-position is sometimes nil, so placate this function by making it (or .. 0). Wrong but I don't have enough time now to figure out what the right thing is. 2005-08-24 Marco Baringer * swank.lisp (fuzzy-find-matching-symbols): When completing the string "package:" present a list of all the external symbols in package (completing "package::" lists internal symbols as well). (inspect-for-emacs standard-class): List all the slots in the class (as per standard-object). The previous method of hard coding the slots in the inspector's code made inspecting custom meta-classes useless. 2005-08-24 Christophe Rhodes * swank-sbcl.lisp (method-definitions): present qualifiers (if any). 2005-08-23 Taylor R. Campbell * slime.el (slime-goto-location-position): Added a second regexp for the :function-name case which matches "(def... ((function-name ..." (with N opening parens preceding the function name). This is to allow scheme48 style function names and definitions. 2005-08-22 Wolfgang Jenkner * swank-clisp.lisp (fspec-pathname): Cope with CVS CLISP's (documentation symbol 'sys::file) returning a list. Return either a list of start and end line positions or nil as second value. (fspec-location): Use it. Also, if we have to guess the name of a source file make sure that it actually exists. (with-blocked-signals, call-without-interrupts): Don't add :linux to *features* since this changes the return value of unique-directory-name in swank-loader.lisp. Comment out with-blocked-signals. Update some comments at the top of the file. State the licence in the same terms as slime.el does. 2005-08-21 Matthias Koeppe * present.lisp (menu-choices-for-presentation-id): Check against the gensym in *not-present* instead of :non-present. 2005-08-20 Christophe Rhodes * swank-sbcl.lisp (preferred-communication-style): guard against non-Linux non-linkage-table platforms (and assume that they won't have dodgy threads) with #+linux. 2005-08-20 Matthias Koeppe Enable nested presentations. * slime.el (slime-presentation): Remove slots start-p, stop-p. (slime-add-presentation-properties): Use a new text property layout. Also add an overlay to enable nested highlighting. (slime-remove-presentation-properties): New. (slime-presentation-whole-p): Changed interface. (slime-presentations-around-point): New. (slime-same-presentation-p): Removed. (slime-presentation-start-p, slime-presentation-stop-p): New. (slime-presentation-start, slime-presentation-end): Changed to use new text property layout. (slime-presentation-bounds): New. (slime-presentation-around-point): Reimplemented to handle nested presentations. (slime-for-each-presentation-in-region): New. (slime-after-change-function): Use slime-remove-presentation-properties and slime-for-each-presentation-in-region. (slime-copy-presentation-at-point): Complain if no presentation. (slime-repl-insert-prompt): Don't put rear-nonsticky text property. (slime-reify-old-output): Handle nested presentations. (slime-repl-return): Use slime-presentation-around-or-before-point. Enable reification of presentations in non-REPL buffers. * slime.el (slime-buffer-substring-with-reified-output): New, factored out from slime-repl-current-input. (slime-repl-current-input): Use it here. (slime-last-expression): Use it here. (slime-add-presentation-properties): Add text properties modification-hooks et al. to enable self-destruction of incomplete or edited presentations in non-REPL buffers. 2005-08-15 Alan Ruttenberg * slime.el (slime-goto-location-position) fix so the :method locator regexp so that it can find eql specializers, (setf foo) methods, and to allow (a single) newline between arguments in the arglist. * swank-openmcl.lisp (specializer-name) patch from Gary Byers and Bryan O'Conner to fix complaint about certain classes slipping through the etypecase 2005-08-14 Matthias Koeppe * slime.el (slime-mark-presentation-end): Really remove the presentation-start entry from the hash table. Merge some code from present.lisp, removing code duplication. Minor code clean-up. * swank.lisp (*object-to-presentation-id*) (*presentation-id-to-object*, clear-presentation-tables) (*presentation-counter*, lookup-presented-object): Move here from present.lisp. (save-presented-object): Likewise. Assign negative numbers only, so as not to clash with continuation ids. * swank.lisp (*repl-results*): Removed. * swank.lisp (get-repl-result, clear-repl-results): Use new implementations from present.lisp. (add-repl-result): Likewise, don't take the negative of the id. (*last-repl-result-id*): New variable. (clear-last-repl-result): Use it here. * slime.el (slime-repl-insert-prompt): Don't take the negative of the id. (slime-presentation-expression): New, take care to handle arbitrary *read-base* settings. (reify-old-output): Use it here. (slime-read-object): Use it here. 2005-08-12 Matthias Koeppe * slime.el (substring-no-properties): Fix to handle non-zero start argument correctly. Patch to remove use of the slime-repl-old-output text property in favor of the slime-repl-presentation text property, in order to simplify the code. * slime.el (slime-presentation-whole-p): Generalize to work with strings too. (slime-presentation-start, slime-presentation-end): Likewise. (slime-presentation-around-point): Likewise. (slime-presentation-around-or-before-point): New. * slime.el (reify-old-output): Use slime-repl-presentation property and slime-presentation-around-point function rather than slime-repl-old-output property. (slime-repl-return): Use slime-repl-presentation rather than slime-repl-old-output. (slime-repl-grab-old-output): Use slime-presentation-around-or-before-point. (slime-read-object): Use slime-presentation-around-point. * slime.el (toplevel): Don't handle slime-repl-old-output text property. (slime-add-presentation-properties): Likewise. (slime-after-change-function): Likewise. 2005-08-12 Yaroslav Kavenchuk * swank-clisp.lisp (fspec-pathname): Use the documentation function instead of accessing clisp internals. 2005-08-11 Edi Weitz * swank.lisp (transpose-lists): Fixed it. 2005-08-10 Alan Ruttenberg * slime.el move slime-repl-add-to-input-history to slime-repl-send-input so we can see the presentations we copied to input when we reuse history rather than #.(blah...) [Thanks Matthias! - was very busy and just returned to see your changes merged. Most excellent.] 2005-08-10 Matthias Koeppe * slime.el (slime-presentation-around-point): Change interface, return presentation as primary return value. (slime-copy-presentation-at-point): Use slime-presentation-around-point. Copying now also works when the first character is clicked and when the REPL buffer is not current. (slime-presentation-menu): Use slime-presentation-around-point. 2005-08-10 Martin Simmons * swank-lispworks.lisp (defadvice compile-file): Return all values from the real compile-file. 2005-08-10 Edi Weitz * swank.lisp (transpose-lists): Replaced with much nicer function by Helmut Eller. 2005-08-09 Matthias Koeppe * slime.el (slime-read-object): Handle ids that are conses. Patch by "Thas" on #lisp. 2005-08-09 Edi Weitz * swank.lisp (transpose-lists): Reimplemented without APPLY so we don't have problems with CALL-ARGUMENTS-LIMIT. 2005-08-08 Matthias Koeppe * slime.el (undo-in-progress): Define for XEmacs compatibility. Reported by Friedrich Dominicus. 2005-08-07 Matthias Koeppe Fix for the presentations menu. Reported by Aleksandar Bakic. * present.lisp (lookup-presented-object): Handle ids that are conses. (execute-menu-choice-for-presentation-id): Use equal for comparing ids, to handle the cons case. (menu-choices-for-presentation): Quote the presentation id, as it can be a cons. * slime.el (slime-presentation-menu, slime-presentation-menu) (slime-inspect-presented-object): Quote the presentation id. 2005-08-06 Matthias Koeppe * swank.lisp (form-completion): New generic function, factored out from complete-form. (complete-form): Factor out form-completion. (form-completion): Specialize on defmethod forms to insert arglist of generic function. * doc/slime.texi (Programming Helpers): Document C-c C-s, slime-complete-form. 2005-08-04 Matthias Koeppe Improvements to the presentations feature. Parts of presentations can be copied reliably using all available Emacs facilities (not just kill-ring-save), and they are no longer "semi-readonly" (in the sense that keypresses are silently ignored). Whenever a user attempts to edit a presentation, it now simply turns into plain text (which is indicated by changing the face); this can be undone. Presentations are now also supported if *use-dedicated-output-stream* is nil. It is now possible to access the individual values of multiple-value results. For some systems (Allegro CL and upcoming CMUCL snapshots), presentations can be reliably printed through pretty-printing streams. * present.lisp (slime-stream-p) [allegro]: Allow printing presentations through pretty printing streams. [cmu]: Allow printing presentations through pretty printing streams, if CMUCL has annotations support and we are using the bridge-less protocol. [sbcl]: Allow printing presentations through indenting streams. * present.lisp (write-annotation): New function. (presentation-record): New structure. (presentation-start, presentation-end): New functions, supporting both bridge protocol and bridge-less protocol. (presenting-object-1): Use them here. * present.lisp [sbcl, allegro]: Add printer hooks for unreadable objects and pathnames. * swank.lisp (*can-print-presentation*): New variable, moved here from present.lisp. * swank.lisp (interactive-eval, listener-eval, backtrace) (swank-compiler, compile-file-for-emacs, load-file) (init-inspector): Bind *can-print-presentation* to an appropriate value. * present.lisp: Remove code duplication with swank.lisp for the functions above. * swank.lisp (encode-message): Don't use the pretty printer for printing the message length. * slime.el (slime-dispatch-event): New events :presentation-start, :presentation-end for bridge-less presentation markup. * swank.lisp (dispatch-event, send-to-socket-io): Likewise. * swank.lisp (listener-eval): Store the whole values-list with add-repl-result. * slime.el (slime-repl-insert-prompt): Accept a list of strings, representing individual values of a multiple-value result. Mark them up as separate presentations. (reify-old-output): Support reifying individual values of a multiple-value result. * slime.el (slime-pre-command-hook): Don't call slime-presentation-command-hook. (slime-post-command-hook): Don't call slime-presentation-post-command-hook. (slime-presentation-command-hook): Removed. (slime-presentation-post-command-hook): Removed. * slime.el (slime-presentation-whole-p): New. (slime-same-presentation-p): New. (slime-presentation-start, slime-presentation-end): New. (slime-presentation-around-point): New. (slime-after-change-function): New. (slime-setup-command-hooks): Install slime-after-change-function as an after-change-function. * slime.el (slime-repl-enable-presentations): Make slime-repl-presentation nonsticky. (slime-mark-presentation-start, slime-mark-presentation-end): New functions. (slime-mark-presentation-start-handler): Renamed from slime-mark-presentation-start. (slime-mark-presentation-end-handler): Renamed from slime-mark-presentation-end. (slime-presentation): New structure. (slime-add-presentation-properties): New function. (slime-insert-presentation): New function. 2005-08-03 Zach Beane * swank-sbcl.lisp (swank-compile-string): Restore honoring of *trap-load-time-warnings*. 2005-08-03 Juho Snellman * swank-sbcl.lisp: Remove SBCL 0.9.1 support. (swank-compile-string): Funcall the compiled function outside with-compilation-hooks to prevent runtime warnings from popping up a *compiler-notes* buffer. 2005-07-29 Marco Baringer * doc/slime.texi (Other configurables): Document *dedicated-output-stream-port*. * swank.lisp (*dedicated-output-stream-port*): New variable. (open-dedicated-output-stream): Open the stream on the port *dedicated-output-stream-port*. * slime.el (slime-set-default-directory): Fix typo in doc string. 2005-07-26 Matthias Koeppe * swank.lisp (inspect-for-emacs): Don't make whitespace surrounding :action buttons part of the highlighted region. * slime.el (slime-goto-location-buffer): Put "SLIME Source Form" buffer into Lisp mode. 2005-07-26 Helmut Eller * swank.lisp (compile-file-for-emacs): Accept optional external-format arg. I frogot to commit this file on 2005-07-05. * slime.el (slime-input-complete-p): Skip over strings too. 2005-07-26 Zach Beane * swank-sbcl.lisp (swank-compile-string): Revert to old string compilation behavior to fix compiler note annotations. Code from Juho Snellman. 2005-07-24 Tom Pierce * swank.lisp (format-iso8601-time): New functions. Properly formats a universal-time as an iso8601 string. (inspect-for-emacs integer): Use the new format-iso8601 function when printing an integer as a date. 2005-07-22 Marco Baringer * swank-openmcl.lisp (frame-catch-tags): Remove some debugging forms which were "polluting" the repl buffer when viewing an sldb buffer. (function-source-location): Make :error messages have the proper form (exactly one string argument). This fix also removes the issues with sending unreadble lists (containing #<...> to emacs). 2005-07-14 Helmut Eller * swank-allegro.lisp (find-external-format): Fix typo. 2005-07-06 Helmut Eller * slime.el (slime-send-sigint): Use the symbol SIGINT stead of the signal number. Suggested by Joerg Hoehle. (slime-compile-file): XEmacs needs the buffer as argument to local-variable-p. Reported by Andy Sloane. 2005-07-05 Helmut Eller The file variable slime-coding can now be used to specify the coding system to use for C-c C-k. E.g., if the file contains -*- slime-coding: utf-8-unix -*- Emacs will tell the Lisp side to call COMPILE-FILE with an external-format argument. * slime.el (slime-compile-file): Send the coding system if the buffer local variable `slime-coding' is bound. * swank-backend.lisp, swank-sbcl.lisp, swank-clisp.lisp, swank-lispworks.lisp, swank-cmucl, swank-allegro.lisp, swank-abcl.lisp, swank-corman.lisp (swank-compile-file): New optional argument `external-format'. * swank-clisp.lisp (getpid): Undo the last change. * swank-corman.lisp (spawn, thread-alive-p): More thread tweaking. 2005-07-03 Joerg Hoehle * swank-clisp (describe-symbol-for-emacs): Report :setf and :type where appropriate. 2005-07-03 Helmut Eller * slime.el (next-single-char-property-change) (previous-single-char-property-change) [xemacs]: Only define them if not present. (next-char-property-change, previous-char-property-change): Define if needed. * README: Show examples for the filenames instead of the general "/the/path/to/this/directory". Suggested by Brandon J. Van Every. * swank-corman.lisp (default-directory): Return a namestring instead of the pathname. (inspect-for-emacs, inspect-structure): Teach the inspector how to deal with structures. (spawn, send, receive): Implement rudimentary threading support. It's now possible to connect with the :spawn communication style and to bring up a listener. Unfortunately, debugging the non-primary threads doesn't work at all. Still no support for interrupt-thread. * slime.el (slime-start-swank-server): Send an extra newline before the "(swank:start-server ...". I don't know why, but this seems to fix the problem when starting CLISP/Win32. Interrupting CLISP/W32 is still horribly broken. * swank-loader.lisp (compile-files-if-needed-serially) [corman]: force-output after each file. 2005-07-02 Marco Baringer * slime.el (save-some-lisp-buffers): New Function. (slime-repl-only-save-lisp-buffers): New customizable variable. (slime-repl-compile-and-load): Use save-some-lisp-buffers. (slime-oos): Use save-some-lisp-buffers. 2005-07-01 Gabor Melis * swank-sbcl.lisp (threaded stuff): make SBCL 0.9.2.9+ work while retaining support for 0.9.2 2005-06-28 Gabor Melis * swank-sbcl.lisp (threaded stuff): horrible hack to make threaded SBCL 0.9.2 work. (also, Happy Birthday Christophe!) 2005-06-21 Edi Weitz * swank.lisp (find-matching-packages): Also use nicknames. 2005-06-13 Edi Weitz * swank.lisp (list-all-systems-in-central-registry): Delete duplicates. * swank-lispworks.lisp (unmangle-unfun): If you rename a package you should rename it everywhere... 2005-06-12 Alexey Dejneka * slime.el (slime-with-xref-buffer): fix "pgk" typo. 2005-06-12 Christophe Rhodes * swank.lisp (ed-in-emacs): allow strings as well as pathnames; don't call emacs for things that the emacs editor doesn't know how to deal with. Return T if we called emacs and NIL if not. * slime.el (slime-ed): Change a listp to consp, so that NIL arguments are correctly handled. 2005-06-11 Nikodemus Siivola * swank-sbcl.lisp: Patched for SBCL HEAD: utilize the new :source-plist functionality; maintain compatibility with 0.9.1 till 0.9.2 is out. Removed cruft left over from previous excercises in supporting both HEAD and latest release. * doc/slime.texi: Document Slime as supporting the latest official release of SBCL, as opposed to a specific version number which would need to be updated monthly. 2005-06-10 Helmut Eller * nregex.lisp (slime-nregex): Rename package to avoid name clashes with other version of this file. * swank.lisp (compiled-regex): Use the new package name. * slime.el (slime-with-xref-buffer): Gensym package too, to avoid problems when switching to buffers with -*- package: ... -*- file variables. From Antonio Menezes Leitao. (slime-property-bounds): Use the prop argument instead of the hardcoded 'slime-repl-old-output. From Andras Simon. 2005-06-07 Espen Wiborg * swank-corman.lisp: Convert to Unix line-endings. (create-socket): Pass through the port argument unmodified, gettting a random port if 0. Requires supporting change in /modules/sockets.lisp. (inspect-for-emacs): defimplementation instead of defmethod. 2005-06-06 Espen Wiborg * doc/slime.texi, PROBLEMS: Added notes about CCL. 2005-06-03 Helmut Eller * slime.el (slime-background-activities-enabled-p): Allow background stuff in repl-mode buffers too. * swank-cmucl.lisp (sis/misc): Return t for :interactive-p. 2005-06-01 Helmut Eller * slime.el (slime-load-system, slime-oos): Fix bug related to file locking. Don't bind the variable system-name. system-name is a predefined Emacs variable and is used among other things for lock filenames. 2005-06-01 Joerg Hoehle * swank-clisp (getpid): Updates for current CLISP versions. Use defimplementation. Define always (slime needs it). 2005-06-01 Helmut Eller * slime.el (slime-background-activities-enabled-p): Return nil instead of signalling an error if there is a open but no default connection. (slime-current-connection): New helper function. (slime-connection): Use it. (slime-first-change-hook): Only run when slime-background-activities-enabled-p. 2005-06-01 Joerg Hoehle * swank-cmucl.lisp, swank-sbcl.lisp, swank-clisp.lisp (describe-symbol-for-emacs): Distinguish macro and special operators from functions. * slime.el (slime-print-apropos): Must keep in sync with above, therefore added :macro and :special-operator properties. * swank.lisp (present-symbol-before-p): Make it conform to its specification -- sort first by package and then by symbol name. * swank-clisp.lisp (describe-symbol-for-emacs): Report :alien-type when the name is known as foreign type. 2005-06-01 Espen Wiborg * swank-loader.lisp: Redefine compile-files-if-needed-serially for Corman Lisp to load everything from source. 2005-05-27 Espen Wiborg * swank-corman.lisp: New file, swank for Corman Lisp. * swank.lisp (simple-announce-function): force-output after announcing. (symbol-external-p): Be extra paranoid about the symbol's package; find-symbol barfs on a nil package in Corman Lisp. * swank-loader.lisp: Add Corman Lisp support. 2005-05-24 Alan Ruttenberg * slime.el text-property-default-nonsticky not defined in xemacs. oops. 2005-05-24 Alan Ruttenberg * slime.el meta-w now removes properties before insertion if you cut just a portion of the presentation. Added xemacs support. Enabled in xemacs. 2005-05-23 Alan Ruttenberg * slime.el slime-presentation-menu - use with-current-buffer, so that menus work even if you are not in the buffer with the presentation. * present.lisp More menu items for pathnames. Remember last slime-stream-p value. *can-print-presentation* t during swank-compiler and during presentation menu action. 2005-05-22 Alan Ruttenberg * present.lisp. (slime-stream-p) check if a stream is destined for output in a slime listener. (checks *connections* looks into pretty-print streams in openmcl and cmucl) Don't present unless (slime-stream-p stream). Variable *enable-presenting-readable-objects* The only readable object which is presented are pathnames (e.g. pathnames printed when loading and *load-verbose* is t). Try the useful menu :) More to come if this doesn't cause problems. (nil this if it does) *can-print-presentation* t around compile-string-for-emacs, load-file, interactive-eval. In cmucl, use fwrappers to modify behaviour rather than redefinition. 2005-05-22 Alan Ruttenberg * present.lisp. mouse-3 now gives a menu for actions on the presentation. See documentation in file for information about how to define menus. Also, disable presentations in inspector. Initial bits of dealing with the possibility of presenting readable objects. * slime.el support menu. Xemacs users beware this uses x-popup-menu, which may be fsf specific. 2005-05-20 Alan Ruttenberg * swank.lisp make repl output presentation work even if present.lisp not loaded 2005-05-20 Luke Gorrie * slime.el (slime-repl-enable-presentations): Default is enabled in GNU Emacs but disabled in XEmacs. Feature is not portable yet. Brutally 80-column'ified alanr's latest changes :-) 2005-05-20 Alan Ruttenberg * bridge.el new file. from ilisp cvs distribution to collect in-band messages using process filter mechanisms. One edit which calls bridge-insert with process argument as well as output * present.lisp new file. Enough code to do the following: (swank::presenting-object object stream (print "This is really object")). This makes the string "This is really object" behave like old repl input for the object. Sample code for openmcl and cmucl that hooks this into the printing of unreadable objects This should be part of swank.lisp (and lisp specific files) but I am too chicken to merge yet. For now you have to load this file manually. * slime.el changes to support above: slime-repl-enable-presentations: customize to enable this stuff. Default value t. Set to nil to turn it off. slime-presentation-start-to-point: map object ids to the (point) where they start to print out. slime-mark-presentation-start, slime-mark-presentation-end. handlers for the bridge messages. slime-open-stream-to-lisp: When enabled start the bridge and define the handlers. 2005-05-19 Alan Ruttenberg * slime.el slime-presentation-map 2005-05-20 Luke Gorrie * swank.lisp (clear-repl-results): Fixed unbalanced parens. Thanks Lawrence Mitchell. 2005-05-19 Alan Ruttenberg * slime.el (slime-presentation-command-hook) new function for nicer behaviour for presentations. (slime-pre-command-hook) do slime-presentation-command-hook (slime-post-command-hook) put pre-command-hook back if goes away (slime-copy-presentation-at-point) mouse-2 copies previous output to point slime-repl-output-mouseover-face what the old output looks like when the mouse moves over it default: box around it like on lispm (slime-repl-insert-prompt) add mouseover face, mouse action. newline after output not propertized. (slime-property-bounds) adjust for lack of propertized newline to fix: presentation region behaviour should be attach to generic property like (:acts-as-token t ) rather than tying to repl-output property 2005-05-19 Luke Gorrie * swank.lisp (*record-repl-results*): Variable to enable/disable recording of REPL results. True by default. (*repl-results*): Renamed from ****. * slime.el (slime-property-bounds): Factored out this common part of slime-repl-grab-old-{input,output}. (slime-read-object): Avoid inline CL code. 2005-05-18 Antonio Menezes Leitao * slime.el (slime-repl-inputed-output-face): new face. (slime-current-output-id): New variable. (slime-dispatch-event): Bind slime-current-output-id when neccessary. (slime-repl-insert-prompt): Add the neccessary text properties to the result. (reify-old-output): New function which makes sure swank sees \(swank::get-**** ...) while the user sees the printed representation of the object. (slime-repl-return): When called on a old output (as per the slime-repl-old-output text property, call slime-repl-grab-old-output. (slime-repl-send-input): Added the slime-repl-old-input text property. (slime-repl-grab-old-input): Keep the old input's text properties (unwanted text properties are removed later). (slime-repl-grab-old-output): New function. (slime-repl-clear-buffer): Added call to swank::clear-**** (slime-repl-clear-output): Added call to swank::clear-**** and bind inhibit-read-only to nil. (slime-inspect): Call slime-read-object to get the value to inspect. (slime-read-object): New function which either reads an object from the minibuffer or returns the object at point if it has the slime-repl-old-output text property. * swank.lisp (*current-id*, ****): New variables. (add-****, get-****, clear-last-****, clear-****): New functions for manipulating the repl history. (listener-eval): Add * to ****. 2005-05-12 Alan Ruttenberg * swank.lisp Add ability to customize behavior of the repl. To do so, add a function to the list swank::*slime-repl-eval-hooks*. This function is passed the form typed into the repl. The function should decide whether it wants to handle evaluation of the form. If not, call (repl-eval-hook-pass) and the next hook is tried. Otherwise the values the function returns are used instead of calling eval. Inside the body of the function you can also suppress having the repl print the result by calling (repl-suppress-output) and/or suppress the advancement of the history variables (*** ** * /// // /) by calling (repl-suppress-advance-history). 2005-05-11 Tim Daly Jr. * swank-source-path-parser.lisp (read-and-record-source-map): Ensure that at least the toplevel form is in the source-map. 2005-05-11 Helmut Eller * slime.el (slime-remove-old-overlays): Remove overlays in all slime buffers not only in the current buffer. (slime-filter-buffers): New helper. (slime-display-completion-list): Take the completed prefix as additional argument to initialize completion-base-size. This is apparently needed to make mouse-selection working. (slime-maybe-complete-as-filename): Factor for common code in slime-complete-symbol* and slime-simple-complete-symbol. 2005-05-06 Alan Ruttenberg * swank-openmcl.lisp specializer-name didn't handle structure-class which caused meta-. of methods specialized on defstruct arguments to fail. 2005-05-06 Helmut Eller * swank-cmucl.lisp (post-gc-hook): Include the elapsed time and the size distribution. 2005-05-05 Edi Weitz * swank-lispworks.lisp (unmangle-unfun): New function to convert strange symbols in SETF package to SETF function names. (signal-undefined-functions): Use it. 2005-05-04 Edi Weitz * swank-lispworks.lisp (call-with-compilation-hooks): Provide better implementation. (compile-file-and-collect-notes): Advice for COMPILE-FILE so pathname information for undefined functions can be recorded. (*within-call-with-compilation-hooks*): New special variable used by CALL-WITH-COMPILATION-HOOKS. (*undefined-functions-hash*): New special variable to record pathname information for undefined functions. (signal-error-database): Make LOCATION parameter optional, use FILENAME info from error database if not provided. (signal-undefined-functions): Make LOCATION parameter optional, use info from *UNDEFINED-FUNCTIONS-HASH* if not provided. 2005-05-03 Luke Gorrie * swank.lisp (slime-secret): Removed #+unix conditional, suggested by Edi Weitz. 2005-05-02 Mark Wooding * swank.lisp: If ~/.slime-secret exists then insist that Emacs sends the contents (as a password) during initial handshaking. (announce-server-port): Use :IF-EXISTS :ERROR to prevent bad guys from slipping a symlink into /tmp and reading what port Lisp is listening on. * slime.el: If ~/.slime-secret exists then send it, as per above. 2005-05-01 Marco Baringer * slime.el (slime-inspector-reinspect): New function which reinspects the current object. (slime-inspector-mode-map): Bind slime-inspector-reinspect to g. 2005-04-29 Dan Pierson * slime.el (slime-parse-context): Fix method parsing so that pressing, say, C-c C-t when point is on a '-' in a symbol name won't break. (slime-browser-map): New variable. Add support for the common 'q' keystroke to quit out of the xref. (slime-fetch-browsable-xrefs): New function. Remove the (FLET ...) entries which appear on at least CMUCL. I don't believe you can actually expand them on any current implementation and they just mess up the browse tree. Use only the method name when looking up (METHOD ...) entries on CMUCL. This really shouldn't be here, but I can't see how to avoid the error thrown by swank:xref. (slime-expand-xrefs): Use it. (slime-call-with-browser-setup): Initialize slime-buffer-package properly. Previously, lisp-mode was called after setting it, but lisp-mode clears all local variables, use lisp-mode-variables instead. * swank-cmucl.lisp (toggle-trace): Be more carefully when tracing methods: try both (METHOD ...) and (PCL:FAST-METHOD ...). 2005-04-27 Helmut Eller * swank-cmucl.lisp (+header-type-symbols+): Drop the third arg to apropos-list; it's no longer supported in recent CMUCLs. 2005-04-21 Luke Gorrie * swank.lisp (arglist-to-string): Rolled back the previous change because it interferred with values appearing in parameter lists. 2005-04-20 Luke Gorrie * swank.lisp (arglist-to-string): Bind *PRINT-ESCAPE* to NIL. This way symbols in arglists are printed as with PRINC, i.e. without package qualifier. * swank-sbcl.lisp (preferred-communication-style): Use `linux_no_threads_p' alien variable to decide whether to use :SPAWN. From dan_b for compatibility with new SBCLs. 2005-04-19 Helmut Eller * PROBLEMS: Warn about old kernels. * swank-backend.lisp: Fix some typos. * swank-sbcl.lisp (preferred-communication-style): Don't test for sb-futex, it has lost its meaning in 0.8.21. 2005-04-18 Helmut Eller * slime.el (inferior-lisp-program): Defvar it here, in case it is not defined in loaddefs and inf-lisp is not loaded. (That's the case in XEmacs.) * mkdist.sh: update version number. * doc/slime.texi: Update version numbers for SBCL and ACL. 2005-04-17 Peter Seibel * swank-loader.lisp (*implementation-features*): Added features for GCL and ECL ... (lisp-version-string): ... and code to compute version string. (Supplied by someone who's email I've misplaced.) 2005-04-14 Helmut Eller * slime.el (slime-selector): Discard input after sleeping. 2005-04-09 Helmut Eller * slime.el (sldb-get-buffer): Create a fresh buffer if there's no buffer for the connection (and don't reuse an existing buffer even if it has a matching name). (slime-buffer-visible-p, slime-ir1-expand): Delete unused functions. Mark some others as unused, but leave them there because they are potentially useful. * swank.lisp (with-io-redirection, with-connection) (with-buffer-syntax): Implement macros with `call-with' functions to avoid some code bloat. (call-with-connection, maybe-call-with-io-redirection) (call-with-buffer-syntax): New functions. (interactive-eval): Use from-string instead of read-from-string to avoid problems whit *read-suppress*. * swank-sbcl.lisp: Add a few comments. * swank-abcl.lisp (print-frame): Trim whitespace to make the backtrace look a bit terser. 2005-04-07 Helmut Eller * slime.el (slime-net-coding-system): More fixes for non-mule-XEmacsen. (slime-net-coding-system): Even more fixes to make it for mule-XEmacs. 2005-04-05 Juergen Gmeiner * swank-lisworks.lisp (find-top-frame): If we can't find an invoke-debugger frame we take any old frame at the top. 2005-04-04 James McIlree * slime.el (find-coding-system, check-coding-system) (process-coding-system, set-process-coding-system): Dummy functions for no-mule-XEmacsen. 2005-04-04 Helmut Eller * slime.el (slime-repl-show-maximum-output): New function. Immitate the scrolling behavior of a terminal. (slime-with-output-end-mark, slime-repl-return) (slime-repl-send-input, slime-display-output-buffer): Use it (slime-lisp-implementation-version, slime-machine-instance): New connection variables. Suggested by Eduardo Muñoz. (slime-set-connection-info): Initialize them. * swank.lisp (connection-info): Include version and hostname in the result. * swank-cmucl.lisp (breakpoint-values): Fixes for CMUCL-2005-03 snapshot. * doc/slime.texi: Fix spelling errors. * cl-indent.el: Remove the file. Let the Emacs developers maintain it. 2005-04-01 Helmut Eller * slime.el (sldb-get-buffer): Initialize the buffer local variables slime-buffer-connection and slime-current-thread when creating a fresh buffer. * swank.lisp (spawn-repl-thread): Use *default-worker-thread-bindings* just like spawn-worker-thread. (wrap-sldb-vars): New function. Rebind *sldb-level* to avoid confusion with recursive errors during eval-in-frame. (eval-string-in-frame, pprint-eval-string-in-frame): Use it. * swank-allegro.lisp (eval-in-frame): Allegro's eval-form-in-context does nothing special with lexical variables in the frame. Wrap an explicit LET around the form to get similar behavior as in the other Lisps. (inspect-for-emacs (structure-object)): Remove structure related methods. It's already covered by the general case with allegro-inspect. (common-seperated-spec): Deleted 2005-04-01 Luke Gorrie * slime.el (slime-xref-mode): Summarise the most important bindings in the mode description. * metering.lisp: Now supports only CLISP and OpenMCL. Removed a lot of really ugly reader-conditionalized code, much of it for archaic lisps (#+cltl2, #+lcl3.0, #+mcl1.3.2, etc). * swank-source-path-parser.lisp (check-source-path): Signal an error if a source path is malformed. SBCL sometimes gives (NIL). (source-path-stream-position): Use it. * slime.el (slime-goto-definition): Handle :error locations here before any window/buffer changes are made. 2005-04-01 Matthias Koeppe * slime.el (slime-keys): Bind slime-edit-definition-other-window to `C-x 4 .' and slime-edit-definition-other-frame to `C-x 5 .', shadowing the equivalent find-tag... bindings. (slime-goto-definition): In the other-window and other-frame cases, make sure point does not move in the originating window, even when the definition is found in the same buffer. 2005-03-31 Luke Gorrie * doc/slime.texi (slime-selector): New section. (Inspector): Updated for the post-1.0 inspector. * slime.el (slime-selector): Removed unneeded "the" prefixes in descriptions of what the selector methods do. 2005-03-27 Helmut Eller * PROBLEMS, NEWS, doc/slime.texi: Some updates for the upcoming release. 2005-03-27 Russell McManus * swank-clisp.lisp (getpid): Try sys::process-id if sys::program-id doesn't exist. 2005-03-23 Marco Baringer * swank.lisp (commit-edited-value): Read a backquated string, instead of quating the result of read. This allows one to put ,(form) into edit-value buffers. 2005-03-22 Helmut Eller * swank-lispworks.lisp (swank-compile-string): Bind *print-radix* to t, to avoid problems if somebody uses different values for *print-base* and *read-base*. Reported by Alain Picard. (emacs-connected): Add default methods for environment-display-notifier and environment-display-debugger. 2005-03-21 Helmut Eller * swank-sbcl.lisp (locate-compiler-note): Handle errors in macros better. (source-file-source-location): Read the snippet at the right position. * swank-source-file-cache.lisp (read-snippet): Take the start position as optional argument. 2005-03-21 Helmut Eller * swank-sbcl.lisp (quit-lisp): If we are running multithreaded, terminate all other threads too. (still broken in 0.8.20.27; used to work in ~0.8.20.2.) (with-debootstrapping, call-with-debootstrapping): Remove ugly backward compatibility code. (sbcl-source-file-p, guess-readtable-for-filename): New utilities. (function-source-location): Handle work off to helper functions. (find-function-source-location): New function. Use the shebang-readtable for SBCL source files. (function-source-position, function-source-filename) (function-source-write-date, function-toplevel-form-number) (function-hint-snippet, function-has-start-location-p) (function-start-location): New helpers. (safe-source-location-for-emacs): Don't catch errors if *debug-definition-finding* is true. (inspect-for-emacs): Minor beautifications. * swank.lisp (commit-edited-value): Use buffer syntax. (compile-file-for-emacs, compile-string-for-emacs): Bind *compile-print* to nil. * swank-cmucl.lisp (call-with-debugging-environment): Rebind kernel:*current-level* 0. Useful for debugging pretty printer code. (inspect-for-emacs): Show details of interpreted functions. 2005-03-21 Luke Gorrie * swank-sbcl.lisp (function-source-location): For definitions compiled in Emacs buffers, include the :emacs-string as a :snippet hint for search-based M-. lookup. 2005-03-21 Edi Weitz * swank-loader-lisp (*implementation-features*, *os-features*, *architecture-features*): LispWorks was completely missing. 2005-03-18 Luke Gorrie * slime.el (slime-complete-symbol*-fancy): Now nil by default. 2005-03-18 Helmut Eller * swank-source-path-parser.lisp (make-source-recording-readtable): Ignore non-ascii chars. * swank-sbcl.lisp (swank-compile-string): Re-implemented. This time with temp-files and proper source-location tracking. (install-debug-source-patch, debug-source-for-info-advice): Patch SBCL's debug-source-for-info so that we can dump our own bits of debug info. (function-source-location, code-location-source-path): Rewritten to handle C-c C-c functions. Also use the source-path to locate the position. (locate-compiler-note): Renamed from resolve-note-location. (temp-file-name, call/temp-file): New utilities. (file-source-location, lisp-source-location) (temp-file-source-location, source-file-source-location) (string-source-position, code-location-debug-source-info) (code-location-debug-source-name, code-location-debug-source-created,) (code-location-debug-fun-fun, code-location-from-emacs-buffer-p) (function-from-emacs-buffer-p, function-debug-source-info) (info-from-emacs-buffer-p, code-location-has-debug-block-info-p) (stream-source-position): Lots of new helper functions. (with-debootstrapping): Moved upwards so that it can be used for source location searching. (source-location-for-emacs): Deleted 2005-03-16 Helmut Eller * slime/swank.lisp (*macroexpand-printer-bindings*): New user variable. (apply-macro-expander): Use it. (call-with-bindings): Bind variables in reverse order. Thit makes it easer to cons or push a new binding at the front the list. (with-bindings): New macro. * slime.el (slime-run-when-idle): New function to hide Emacs/XEmacs differences. (slime-process-available-input): Use it. * swank-loader.lisp (unique-directory-name): Rewritten to avoid the rather irritating warning that (warn "Don't know ...") is unreachable. 2005-03-13 Luke Gorrie * slime.el (slime-dispatch-event): Use `slime-busy-p' to control the "; pipelined request" message. This way it takes requests blocked in the debugger into account and avoids spurious messages. * swank.lisp (inspect-for-emacs symbol): Add an "unintern it" action for symbols. * swank-source-file-cache.lisp (read-snippet): Skip comments and whitespace in SBCL. The source-positions reported by SBCL are not adjusted to skip over whitespace before the definition. * swank-sbcl.lisp (function-source-location): Updated for revised sb-introspect patch: s/DEFINITION-SOURCE-CREATED/DEFINITION-SOURCE-WRITE-DATE/ * swank-loader.lisp (*os-features*): Added :mswindows. Thanks Will Glozer. 2005-03-12 Luke Gorrie * slime.el (slime-edit-value): New function on `C-c E'. Prompts for a Lisp expression, evaluates and displays the result in a new buffer for editing, and then setf's the edited value in Lisp after you press C-c C-c. Usage example: `C-c E asdf:*central-registry*' Minor docstring and pull-down-menu changes. * swank.lisp (value-for-editing, commit-edited-value): New functions for slime-edit-value. * swank-allegro.lisp (toggle-trace): Fix from Antonio Menezes Leitao. * swank-sbcl.lisp: Use swank-source-file-cache to find snippets of definitions. M-. is now much more robust to modifications in the source file. NOTE: To be effective requires a patch to sb-introspect that I have posted to sbcl-devel. * swank-source-file-cache.lisp: Factored this into its own file, from swank-cmucl.lisp. * swank-loader.lisp, swank-cmucl.lisp: Updated for the above. 2005-03-10 Antonio Menezes Leitao * slime.el (slime-toggle-trace-fdefinition): If there is no symbol at point then prompt for one. 2005-03-09 Peter Seibel * swank-loader.lisp (*architecture-features*): Added :pc386 for CLISP. (unique-directory-name): Change ERROR to WARN. * slime.el (slime-register-lisp-implementation): Add facility for registering lisp implementations with symbolic names that can be passed to C-u M-x slime. 2005-03-08 Peter Seibel * doc/Makefile (clean): added clean and really_clean targets. (all): and added slime.pdf to all prerequisites. * swank-loader.lisp (*implementation-features*): Whoops. Forgot CLISP. (*architecture-features*): Added :x86-64 for SBCL on AMD64 (thanks Vincent Arkesteijn) 2005-03-07 Peter Seibel * swank-loader.lisp (unique-directory-name): Replaced *lisp-name* variable with more sophisticated version that accounts for impl, impl version, os, and hardware architecture. 2005-03-07 Edi Weitz * swank.lisp: Fixed parenthesis-balancing problem. 2005-03-06 Matthias Koeppe * slime.el (slime-easy-menu): Add menu item for slime-complete-form. * swank.lisp (format-arglist-for-echo-area): Use extra-keywords to enrich the list of keywords. (arglist-to-string): Remove extraneous whitespace. (keyword-arg, optional-arg): New structures. (decode-keyword-arg, decode-optional-arg): Return structure objects rather than multiple values. (encode-keyword-arg, encode-optional-arg, encode-arglist): New functions. (arglist): New slot key-p. (decode-arglist): Handle &whole, &environment. Store more information on optional and keyword args, set arglist.key-p. (values-equal?): Removed. (print-decoded-arglist-as-template): If keyword is not a keyword symbol, quote it in the template. (extra-keywords): Return a secondary value (allow-other-keys). For make-instance, try to finalize the class if it is not finalized yet (fix for Allegro CL 6.2). If class is not finalizable, use direct slots instead of slots and indicate that the keywords are not complete. (enrich-decoded-arglist-with-extra-keywords): New function, use the secondary value of extra-keywords. (arglist-for-insertion, complete-form): Use it here. (remove-keywords-alist): New variable. (remove-actual-args): When the keyword :test is provided, don't suggest :test-not and vice versa. * swank-backend.lisp (:swank-mop package): Export finalize-inheritance. 2005-03-06 Luke Gorrie * swank.lisp: Export *LOG-OUTPUT*. 2005-03-05 Helmut Eller * slime.el (slime-net-sentinel): Always print a message when the lisp disconnects. (slime-inferior-lisp): Don't display the buffer. Let callers do that. (slime): Display the inferior buffer here. (slime-quit-lisp, slime-quit-sentinel): Use set a special sentinel and do most of the cleanups there. (slime-repl-sayoonara): Use slime-quit-lisp. (slime-restart-inferior-lisp, slime-restart-inferior-lisp-aux) (slime-restart-sentinel): Use a special sentinel to restart processes. (slime-hide-inferior-lisp-buffer): Do the windows arrangement a bit differently. Related to restart-lisp. (slime-repl-buffer): Take the connection as second optional argument. Useful for rearranging windows for dead processes. * swank-allegro.lisp (call-with-debugging-environment) (find-topframe): Hide the first 2 frames. Those are created by swank-internal functions. 2005-03-04 Antonio Menezes Leitao * swank-allegro.lisp (process-fspec-for-allegro, toggle-trace): Handle setf functions. (tracedp): Fix free variable. * slime.el (slime-trace-query): The :defgeneric query was bogus. (slime-extract-context): Don't skip over the method name if we are already at the end of the name. 2005-03-03 Nikodemus Siivola * swank-sbcl.lisp: Fixed for latest SBCL HEAD revision and temporarily backwards-compatible with the current release. 2005-03-02 Marco Baringer * swank-loader.lisp Look for a file in the same directory as swank-loader.lisp called site-init.lisp. If it exists we load that instead of attempting to load ~/.swank.lisp. (user-init-file): Superseded by load-user-init-file. (load-user-init-file): New function. (load-site-init-file): New function. 2005-03-01 Helmut Eller * slime.el (slime-who-bindings): Bind who-specializes to C-c W a. (slime-extract-context): Renamed from name-context-at-point. (slime-beginning-of-list): Renamed from out-first. (slime-slime-parse-toplevel-form): Renamed from definition-name. (slime-arglist-specializers): Renamed from parameter-specializers. (slime-toggle-trace-function, slime-toggle-trace-defgeneric) (slime-toggle-trace-defmethod, slime-toggle-trace-maybe-wherein) (slime-toggle-trace-within): Deleted. Everything is now handled by slime-trace-query. (slime-calls-who): For symmetry with silme-who-calls. (slime-edit-definition-with-etags): Better intergration with TAGS. (slime-edit-definition-fallback-function): Mention it in the docstring. * swank-backend (calls-who, toggle-trace): New functions. (toggle-trace-function, toggle-trace-generic-function-methods, (toggle-trace-method, toggle-trace-fdefinition-wherein): Replaced by toggle-trace. * swank.lisp (*sldb-printer-bindings*, *swank-pprint-bindings*): New variables. The alists replace the variables which where previously hidden with the define-printer-variables macro. (define-printer-variables, with-printer-settings): Deleted, because the variable names where not visible in the source code. (swank-toggle-trace): Renamed from toggle-trace-fdefinition. * swank-cmucl.lisp, swank-lispworks, swank-sbcl.lisp, swank-allegro.lisp (toggle-trace): Update tracing code for new interface. 2005-02-24 Helmut Eller * slime.el (slime-dispatch-event): Add :eval-no-wait and :eval events. (slime-eval-for-lisp): New function. (sldb-buffers): Delete the variable. Use buffer-list instead. * swank.lisp: (eval-for-emacs): Use the new backend function call-with-debugger-hook. (eval-in-emacs): Cleaned up. Add support for synchronous RPCs. (receive-eval-result): New function. (dispatch-event, read-from-socket-io, send-to-socket-io): New :eval event. Rename :%apply to :eval-no-wait. (read-user-input-from-emacs, evaluate-in-emacs): Increment *read-input-catch-tag* instead of re-binding it. Reduces the danger of throwing to the wrong tag a bit. * swank-backend.lisp (call-with-debugger-hook): New function. Useful if the backend needs special incantations for BREAK. (toggle-trace-function): Add a default implementation for simple symbols. * swank-lispworks.lisp (slime-env): New class. (call-with-debugger-hook): Use env:with-environment to pop up our debugger on a BREAK. (toggle-trace-method, parse-fspec, tracedp, toggle-trace): Implement method tracing. * swank-sbcl.lisp (call-with-debugger-hook): Bind sb-ext:*invoke-debugger-hook* instead of setting it in emacs-connected. (emacs-connected): Deleted. * swank-loader.lisp (compile-files-if-needed-serially): Reduce verbosity by setting the :print argument for compile-file to nil. 2005-02-23 Helmut Eller * slime.el (slime-startup-animation, slime-repl-update-banner): Put the animation back in to keep the kids quiet. (slime-kill-without-query-p): Change default to nil. (slime-eval-describe, slime-eval-region) (slime-pprint-eval-last-expression): Fix typos in docstrings. (slime-eval/compile-defun-dwim): Deleted. We never had a key binding anyway. 2005-02-22 Helmut Eller * slime.el (slime-complete-form): Emacs 20 compatibility fix. (slime-repl-update-banner): Remove animation stuff. (slime-startup-animation): Deleted. * swank-lispworks.lisp (compute-applicable-methods-using-classes): Implement it. 2005-02-20 Matthias Koeppe Supersede the command slime-insert-arglist with the new command slime-complete-form and bind it to C-c C-s. The command completes an incomplete form with a template for the missing arguments. There is special code for discovering extra keywords of generic functions and for handling make-instance. Examples: (subseq "abc" --inserts--> start [end]) (find 17 --inserts--> sequence :from-end from-end :test test :test-not test-not :start start :end end :key key) (find 17 '(17 18 19) :test #'= --inserts--> :from-end from-end :test-not test-not :start start :end end :key key) (defclass foo () ((bar :initarg :bar))) (defmethod initialize-instance :after ((object foo) &key blub)) (make-instance 'foo --inserts--> :bar bar :blub blub initargs...) * swank.lisp (arglist): New struct for storing decoded arglists. (decode-arglist): New function. (arglist-keywords, methods-keywords, generic-function-keywords, applicable-methods-keywords): New functions. (decoded-arglist-to-template-string, print-decoded-arglist-as-template): New functions. (arglist-to-template-string): Rewrite using above functions. (remove-actual-args): New function. (complete-form): New slimefun. * swank.lisp (extra-keywords): New generic function. * swank-backend.lisp (:swank-mop package): Export compute-applicable-methods-using-classes. * swank.lisp (arglist-for-insertion): Use extra-keywords to enrich the list of keywords. * swank.lisp (valid-operator-symbol-p): New function. (valid-operator-name-p): Use valid-operator-symbol-p. * slime.el (slime-complete-form): New command. (slime-keys): Bind C-c C-s to slime-complete-form rather than slime-insert-arglist. 2005-02-18 Antonio Menezes Leitao Improve the trace mechanism (on lisps that support it). SLIME is now able to trace/untrace flet/labels functions, methods and, of course, regular and generic functions. In the process support for sending code to emacs form the lisp was added. The code, elisp forms, is sent over the wire like normal lisp code, evaluated in emacs and the return value is returned back to the lisp. * slime.el (slime-dispatch-event): Added the :evaluale-in-emacs dispatch state which simply parses the message and class evaluate-in-emacs. (evaluate-in-emacs): New function. (complete-name-context-at-point, name-context-at-point, out-first, definition-name, parameter-specializers, slime-toggle-trace-fdefinition, slime-toggle-trace-function, slime-toggle-trace-defgeneric, slime-toggle-trace-defmethod, slime-toggle-trace-maybe-wherein, slime-toggle-trace-within): New functions implementing the new intelligent slime trace. * swank-backend.lisp (toggle-trace-function, toggle-trace-generic-function-methods, toggle-trace-method, toggle-trace-fdefinition-wherein, toggle-trace-fdefinition-within): New backend functions for the new trace facility. * swank.lisp (dispatch-event): Handle the :evaluate-in-emacs message type. (evaluate-in-emacs): New function. * swank-allegro.lisp (toggle-trace-generic-function-methods, toggle-trace, toggle-trace-function, toggle-trace-method, toggle-trace-fdefinition-wherein, toggle-trace-fdefinition-within): Implement. (process-fspec-for-allegro): New function. * swank-cmucl.lisp (toggle-trace-generic-function-methods, toggle-trace-function, toggle-trace-method, toggle-trace-fdefinition-wherein): Implement. (toggle-trace, process-fspec): New functions. * swank-sbcl.lisp (toggle-trace-generic-function-methods, toggle-trace-function, toggle-trace-method, toggle-trace-fdefinition-wherein): Implement. (toggle-trace, process-fspec): New functions. 2005-02-02 Helmut Eller * slime.el: Require the timer package explicitly. 2005-02-02 Luke Gorrie * slime.el (slime-repl-send-input): Move some properties of old REPL input (e.g. read-only) from text properties into an overlay, so that kill/yank will leave them behind. Left `slime-repl-old-input' as a text properties because it's more convenient to lookup that way. (slime-repl-return): Ignore `slime-repl-old-input' property if the point is in front of the current REPL prompt, i.e. if the user has copy&pasted some old REPL input into the current input area. 2005-01-30 Bryan O'Connor * slime.el (slime-goto-location-position): Changed the regexp to require the function-name to be followed by a non-symbol-constituent character \S_. Previously, a function-name of "find" first matched find-if-not if it occured earlier in the file. 2005-01-27 Helmut Eller * slime.el (slime-busy-p): Ignore debugged continuations to enable arglist lookup while debugging. Suggested by Lynn Quam. (sldb-continuations): New buffer local variable in sldb buffers to keep track of debugged continuations. (sldb-debugged-continuations): New function. (sldb-buffers): Renamed from sldb-remove-killed-buffers. (slime-eval-print): New function to insert the stream output and the result of an evaluation in the current buffer. (slime-eval-print-last-expression): Use it. (slime-interactive-eval): Use slime-eval-print when a prefix argument was given. * swank.lisp (*pending-continuations*, eval-in-emacs) (debugger-info-for-emacs): Keep track of debugged continuation the new variable *pending-continuations* and include the list of active continuations in the debugger info for Emacs. (eval-and-grab-output): New function. Used by slime-eval-print. (*log-output*): Renamed from *log-io*. Use *standard-error* as initial value instead of *terminal-io*. CMUCL opens its own tty and that makes it hard to redirect to output with a shell. *standard-error* writes its output to file descriptor 2. (*canonical-package-nicknames*): Fix typo. 2005-01-20 Helmut Eller * swank.lisp (parse-symbol): Don't break if the package doesn't exist. Reported by Lynn Quam. 2005-01-20 Ian Eslick * swank-allegro.lisp (restart-frame): Handle frames with arguments better. 2005-01-20 Edi Weitz * swank-allegro.lisp (handle-undefined-functions-warning): Prevent breakage if the undefined function is called at multiple locations. 2005-01-19 Helmut Eller * swank-gray.lisp (stream-unread-char): If the char argument doesn't match the contents in the buffer, ignore it and emit a warning instead. 2005-01-19 Utz-Uwe Haus * swank-cmucl.lisp (breakpoint): Add a slot for return values to make return values inspectable in the debugger. (signal-breakpoint): Initialize the new slot. 2005-01-19 Matthias Koeppe * slime.el (slime-insert-arglist): Inserts a template for a function call instead of the plain arglist; this makes a difference for functions with optional and keyword arguments. * swank.lisp (arglist-to-template-string): New function. (arglist-for-insertion): Use it (decode-keyword-arg, decode-optional-arg): New functions. 2005-01-19 Lars Magne Ingebrigtsen * slime.el (slime-header-line-p): Customize variable to enable/disable the header-line in the REPL. 2005-01-18 Luke Gorrie * slime.el (slime-complete-symbol*-fancy): New variable to enable extra bells and whistles with slime-complete-symbol*. Currently controls whether to use arglists semantically. Default is t. (slime-complete-symbol*-fancy-bit): Factored out this function. Only do "semantic" completion when the symbol is in function-position, avoid interning argument names in Emacs, and don't display arglists if the minibuffer is active. 2005-01-14 Luke Gorrie * slime.el (slime-repl-send-input): Make old input read-only using an overlay instead of a text property. This way if you copy&paste the input elsewhere it will become editable (overlay is associated with the buffer region and not the text). 2005-01-14 Edi Weitz * slime.el (slime-complete-symbol*): Maybe insert closing parenthesis or space (depending on arglist) after symbol completion has finished. Optionally also show arglist. 2005-01-13 Helmut Eller * swank-cmucl.lisp (create-socket): The byte-order of the :host argument for CREATE-INET-LISTENER was changed in the Jan 2005 snapshot. Test whether the symbol 'ext:socket-error exists to decide if we are in a older version. (resolve-hostname): Return the address in host byte-order. 2005-01-12 Robert Lehr * slime.el (slime-changelog-date): Return nil if the ChangLog file doesn't exits. (slime-repl-update-banner): Write "ChangeLog file not found" if the ChangeLog doesn't exist. 2005-01-12 Matthias Koeppe * slime.el (slime-inspector-operate-on-click): New command for inspecting the value value at the clicked-at position or invoking an inspector action. (slime-inspector-mode-map): Bind it to mouse-2. (slime-inspector-insert-ispec): Add mouse-face properties for clickable values and action buttons. 2005-01-12 Helmut Eller * swank.lisp (*default-worker-thread-bindings*): New variable to initialize dynamic variables in worker threads. (spawn-worker-thread, call-with-bindings): New helper functions. (thread-for-evaluation): Use them. 2005-01-10 Utz-Uwe Haus * swank-sbcl.lisp (profile-package): Add implementation for SBCL. 2005-01-10 Eduardo Muñoz * swank.lisp (inspect-for-emacs-list): LispWorks has a low args limit for apply: use reduce instead of apply. 2005-01-10 Helmut Eller * slime.el (slime-conservative-indentation): The default is now nil. Suggested by Travis Cross. 2005-01-10 Matthias Koeppe * slime.el (slime-inspector-next-inspectable-object): Accept a prefix argument and make wrapping around more reliable. The code is adapted from `widget-move'. (slime-inspector-previous-inspectable-object): New command. (slime-inspector-mode-map): Bind to S-TAB. 2004-12-16 Martin Simmons * swank-lispworks.lisp (create-socket): Work around bug in comm::create-tcp-socket-for-service on Mac OS LW 4.3. 2004-12-16 Edi Weitz * slime.el (slime-complete-symbol*): Bind comint-completion-addsuffix so unambiguous or exact completion closes the string automatically. 2004-12-16 Matthias Koeppe * slime.el (slime-keys): Bind M-* to slime-pop-find-definition-stack for compatibility with standard Emacs conventions. 2004-12-16 Helmut Eller * swank-source-path-parser.lisp (read-source-form): New function which uses *read-suppress* properly. Common code from source-path-stream-position and form-number-stream-position. (source-path-stream-position): Use it. * swank-cmucl.lisp (form-number-stream-position): Use read-source-form. * swank.lisp (frame-for-emacs): Print the frame number a little nicer with ~2D. 2004-12-15 Matthias Koeppe * slime.el (slime-lisp-modes): New variable to make C-c C-k customizable and usable in scheme-mode. (slime-compile-file): Use it. 2004-12-15 Helmut Eller * swank-cmucl.lisp, swank-backend.lisp (frame-package): Delete it. Include the package name for local variables because it is utterly confusing if `eval-in-frame' doesn't work due to missing package prefixes. * swank-source-path-parser.lisp (source-path-stream-position): Bind *read-suppress* to nil before calling read-and-record-source-map. * swank-clisp.lisp (*buffer-name*, *buffer-offset*): Move definitions upward before the first use. 2004-12-15 Bryan O'Connor * slime.el (slime-edit-definition): Switch to the other frame if the `where' is 'frame. (slime-edit-definition-other-frame): New function. 2004-12-15 Helmut Eller * slime.el (slime-repl-send-input): Make the input read-only to avoid confusion. (slime-make-region-read-only): New function. 2004-12-13 Helmut Eller * slime.el (slime-repl-mode-map): Bind to slime-repl-bol. Suggested by Chris Capel. (slime-repl-grab-old-input): Remove the 'old-input text-property from the copied text. Reported by Tim Oates. (slime-repl-grab-old-input): Append the old input to the current input by default. If the new `replace' argument is true, replace the current input. Suggested by Antonio Menezes Leitao. (slime-repl-return): Pass the prefix argument to slime-repl-grab-old-input. 2004-12-09 Helmut Eller * swank.lisp (*sldb-print-pretty*, *sldb-print-circle*) (*sldb-print-length*, *sldb-print-level*, *sldb-print-lines*) (*sldb-print-pprint-dispatch*): Export those symbols. 2004-12-05 Helmut Eller * slime.el (slime-global-variable-name-p): Also return true for names of constants like +foo+. Suggested by Christian Lynbech. * swank-allegro.lisp (handle-compiler-warning): Handle undefined-functions warnings by looking the fromat-arguments of the condition. (compiler-undefined-functions-called-warning-p) (location-for-warning, handle-undefined-functions-warning): New functions. * swank-cmucl.lisp (*install-gc-hooks*): New user variable. (sending-safe-p): New predicate. (pre-gc-hook, post-gc-hook): Use it. * swank.lisp (eval-region): Use a simple loop. 2004-12-02 Helmut Eller * swank.lisp: (inspect-for-emacs (symbol)): Handle non-interned symbols. * slime.el (slime-repl-clear-buffer, slime-repl-clear-output): Fix docstrings. 2004-11-29 Lynn Quam * slime.el (slime-global-variable-name-p): Allow optional ":" or "::". 2004-11-29 Chris Capel * swank.lisp (macro-indentation): Ignore &whole, &aux, and &environment args. 2004-11-29 Helmut Eller * slime.el (slime-repl-wrap-history): New user variable. (slime-repl-history-replace): Implement wrap around. (slime-repl-easy-menu): Fix binding for "Next Input". Reported by Surendra Singhi. * swank-lispworks.lisp (list-callers-internal): Return the function if dspec:object-dspec returns nil. (xref-results): Previously, functions for which dspec:dspec-definition-locations returned nil were ignored. Include them with a unknown source-location. * swank-abcl.lisp, swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-openmcl.lisp, swank-sbcl.lisp, swank-lispworks (accept-connection): The :external-format argument defaults now to :iso-latin-1-unix. 2004-11-26 Helmut Eller * swank-cmucl.lisp (read-into-simple-string): Use #-cmu19 instead of #+cmu18e. 2004-11-25 Chris Capel * slime.el (slime-indent-and-complete-symbol): Echo the arglist if there's no symbol before point. Don't complete after parens. (slime-echo-arglist): Factorized from slime-space. (slime-space): Use it. (slime-repl-history-replace): Clear the input at the end of the history. * swank.lisp (arglist-to-string): Don't show &whole, &aux and &environment args. (clean-arglist): New function. 2004-11-25 Helmut Eller * slime.el (slime-net-coding-system): Emacs does funky encoding for `raw-text-unix' use `binary' instead. (slime-safe-encoding-p): New function. (slime-net-send): Use it and don't try to send stuff which can't be decoded by Lisp. (slime-inferior-lisp-program-history): XEmacs compatibility: declare it as a variable. (slime-xref-mode): In Emacs 21, set delayed-mode-hooks to nil because we don't want to run the lisp-mode-hook. Reported by Chris Capel. * swank.lisp (dispatch-loop): Catch errors and close the connection. It's almost impossible to run the debugger inside the control-thread, so let it crash instead. A backtrace would be nice, though. (cleanup-connection-threads): Can now be called in the control-thread. Add a check to avoid thread suicide. (start-swank-server-in-thread): Fix the call to start-server. * swank-sbcl.lisp (%thread-state-slot, %thread-state): Refactored from thread-status. (thread-status): Use it. (all-threads): Exclude zombies. 2004-11-24 Helmut Eller * slime.el (slime-start-and-load): Use vanilla comint instead of inf-lisp. Let's try that for a while. (slime): Ask for the coding system when invoked with C-u C-u. (slime-net-coding-system, slime-net-valid-coding-systems): Add some alternatives for older Emacsen. (slime-find-buffer-package): Skip quotes. Old code looks sometimes like (in-package 'foo). (slime-repl-mode-map): Inhibit C-c C-z. Avoids accidental loading inf-lisp. (slime-net-coding-system): Use find-coding-system in XEmacs. coding-system-p means something different here. (slime-repl-mode-map): XEmacs compatibility: use (kbd "C-") instead of [C-up]. * swank.lisp (inspect-for-emacs-list): subseq on improper lists breaks in Lispworks. Handle that case better. * swank-sbcl.lisp (inspect-for-emacs)[code-component]: Disassemble code-components too. * swank-backend.lisp (import-swank-mop-symbols): Better error message for the assertion. * swank-cmucl.lisp (debug-var-value): Return #:invalid or #:unknown instead of :. (swank-compile-file): Load the fasl file only if load-p is true. (inspect-for-emacs, inspect-alien-record, inspect-alien-pointer): Add inspector support for some alien types. * swank-lispworks.lisp (emacs-connected): Set the sigint handler only for single threaded operation. I.e. when *communication-style* is nil. * swank-allegro.lisp (set-external-format): New function. Use LF as eol mark. (call-with-compilation-hooks): Trap compiler-notes too. 2004-11-24 Luke Gorrie * slime.el (slime-repl-mode-map): Add C-up and C-down to move through history. Consistent with comint-mode. (slime-repl-mode-map): Add slime-load-file on `C-c C-l' and slime-compile-file on `C-c C-k'. This is mostly to override unwanted inf-lisp bindings in lisp-mode-map. (slime-load-file): Handle (buffer-file-name) being nil. 2004-11-20 Helmut Eller * swank-sbcl.lisp (make-socket-io-stream): Add some #+sb-unicode. 2004-11-20 Travis Cross * swank-sbcl.lisp (thread-status): Fix unbalanced parenthesis. 2004-11-20 Marco Baringer * swank-openmcl.lisp (make-stream-interactive): Only add ouptut streams (subclasses of ccl:fundamental-output-stream) to ccl::*auto-flush-streams*. 2004-11-19 Helmut Eller * slime.el (slime-net-coding-system): New variable. Specifies the coding system to use for network communication. The default is iso-latin-1 and should work for all Lisps. Only a small set of coding systems is currently supported. (slime-net-valid-coding-systems): New variable. A list of coding systems which may be used. (slime-check-coding-system, slime-coding-system-mulibyte-p) (slime-coding-system-cl-name): New utility function for coding systems. (slime-net-connect, slime-make-net-buffer, slime-open-stream-to-lisp): Use it. (slime-net-decode-length, slime-net-encode-length): Renamed from slime-net-read3 and slime-net-enc3. The length is now encoded as a 6 char hex string. * swank.lisp (*coding-system*): New variable. (start-server): Accept external-format as argument. (create-server, create-swank-server, setup-server) (serve-connection, open-dedicated-output-stream) (create-connection): Ditto. (defstruct connection): Add external-format slot. (decode-message-length): New function for new length encoding. (decode-message): Use it. (encode-message): Use new encoding. * swank-cmucl.lisp (accept-connection): Accept external-format argument. (inspect-for-emacs): Add CMUCL specific versions for array and vectors. * swank-sbcl.lisp, swank-openmcl.lisp, swank-lispworks.lisp, swank-clisp.lisp, swank-backend.lisp, swank-allegro.lisp, swank-abcl.lisp (accept-connection): Accept :external-format as argument. 2004-11-19 Matthew Danish * swank-allegro.lisp: (count-cr): New function. Convert file-offsets to match Emacs' eol-conventions. (find-definition-in-file): Use it. * slime.el (slime-insert-xrefs): Display the multi-line label much more cleanly. 2004-11-19 Helmut Eller * swank-sbcl.lisp (thread-status): Decode the thread-state-slot instead of returning ???. * swank-allegro.lisp (swank-mop:slot-definition-documentation): ACL 7 says documentation should have 2 args. So, pass t as second argument. (fspec-primary-name): Recurse until we have a symbol. (allegro-inspect): New function. Mostly reverse engineered from ACL's native inspector. (inspect-for-emacs (t), inspect-for-emacs (function)): Use it. * swank.lisp (inspect-for-emacs array): Use row-major-aref instead of a displaced array. I hope that does the same. (inspect-for-emacs integer): Ignore errors in decode-universal-time. Negative values and, in SBCL, also small values cannot be decoded. (list-threads): Include the thread-id. Useful for SLIME debugging. * slime.el (slime-list-threads, slime-thread-insert): Show the thread-id. (slime-thread-control-mode-map): Remove the binding for the no-longer-existent slime-thread-goahead command. 2004-11-18 Alexey Dejneka * swank.lisp (inspect-for-emacs): Fix bug in handling of arrays with fill-pointers. 2004-11-15 Helmut Eller * slime.el: The REPL commands ,quit and ,sayoonara are now distinct. Previously Quit killed all Lisps an all buffers. The new Quit command kills only the current Lisp. (slime-quit-lisp): New function. (repl-command quit): Use it. Don't delete all buffers. (repl-command sayoonara): No longer an alias for ,quit. (slime-connection-list-mode-map): Bind C-k to slime-quit-lisp. (slime-communication-style): New connection variable. (slime-use-sigint-for-interrupt): Is no longer a connection local variable. It's derived from the new slime-communication-style. (slime-inhibit-pipelining): New user option. (slime-background-activities-enabled-p): New predicate to control various background activities like autodoc and arglist fetching. (slime-space, slime-autodoc-message-ok-p): Use it. (slime-search-call-site): Use hints provided to search a call-site in a defun. Useful for the show-frame-source command. (slime-goto-source-location): Use it. (slime-quit): Deleted, as it was broken. May come back later. (slime-inspector-label-face, slime-inspector-value-face) (slime-inspector-action-face, slime-reader-conditional-face): Provide better defaults for Emacsen which don't support :inherited faces. * swank-backend.lisp (emacs-connected): Don't pass the stream as argument. make-stream-interactive is a better place for setting buffering options. * swank-cmucl.lisp (emacs-connected): Install GC hooks to display GC messages in the echo area. (sos/misc :flush-output): There seem to be funny signal safety issues if the dedicated output stream is not used. So, lets first reset the buffer index before sending the buffer to the underlying stream. * swank-lispworks.lisp (frame-source-location-for-emacs): Pass the function name of the next (newer) frame as a hint to Emacs. This way we can highlight the call site in some cases, instead of the entire defun. (frame-location): Renamed from function-name-location. The argument is now a dspec, not only a name. Also include hints for Emacs. (lispworks-inspect): Simplified from old code. (inspect-for-emacs): Use it for also for simple functions. (emacs-connected, make-stream-interactive): Move the soft-force-output stuff to make-stream-interactive. * swank-abcl.lisp (emacs-connected): Deleted. The default implementation should be good enough. * swank-sbcl.lisp (emacs-connected): Updated for new interface. * swank-openmcl.lisp (emacs-connected, make-stream-interactive): Move buffering stuff to make-stream-interactive. * swank.lisp (defstruct connection): Add new slot: communication-style for convenience. (create-connection): Initialize the new slot. (connection-info): Send the communication-style to Emacs. (install-fd-handler, simple-serve-requests): Sending :use-sigint-for-interrupt is no longer necessary. 2004-11-11 Raymond Toy * slime.el (slime-activate-font-lock-magic): Add XEmacs support. (slime-reader-conditional-face): New face. 2004-11-10 Marco Baringer * swank-backend.lisp (definterface): Eliminate unused variable received-args. (emacs-connected, make-stream-interactive, condition-references, condition-extras, buffer-first-change): Add (declare (ignore X)) for unused arguments in default implementations. (inspect-for-emacs): Remove (declare (ignore)) for inexistent variable inspection-mode. Added T qualifiers in method arguments. * swank-openmcl.lisp (inspect-for-emacs): Use definterface so SLIME knows we implement this. (arglist function): Use ccl:arglist, not ccl::arglist-from-map. (inspect-for-emacs): Added support for inspecting the uvector objects under lisp datums. 2004-11-09 Helmut Eller * swank.lisp (features-for-emacs): New function to avoid keyword/string confusion. Case doesn't matter since Emacs will downcase them anyway. (connection-info, sync-features-to-emacs): Use it. Should fix highlighting bug reported by Edi Weitz. * slime.el (slime-eval-feature-conditional): Convert AND, OR, and NOT to lowercase keywords. (slime-net-read3): Silly optimization: give char-after the offset as argument to avoid save-excursion and forward-char. 2004-11-07 Brian Downing * slime.el (slime-fuzzy-explanation): Added line to describe flags (:boundp, :fboundp, :macro, etc), which are now reported in the fuzzy-completion output. (slime-fuzzy-insert-completion-choice): Added flags. (slime-fuzzy-choices-buffer): Added flags header. * swank.lisp (fuzzy-completions): Changed docstring to describe new flags in the completion results. (convert-fuzzy-completion-result): New function to marshall the results from the completion core into something Emacs is expecting. Added flags. (fuzzy-completion-set): Use the above. (compute-completion): Removed. (score-completion): Cleaned up a little bit. (highlight-completion): Use destructive nstring-upcase. 2004-11-01 Helmut Eller * slime.el (slime-easy-menu): Add item for slime-update-indentation. Suggested by Lynn Quam. (slime-severity-faceslime-show-note-counts) (slime-most-severe, slime-choose-overlay-region): Handle read-errors. (slime-show-buffer-position): New function. (slime-show-source-location): Use it. * swank-backend.lisp (deftype severity): Add read-errors. * swank-cmucl.lisp (severity-for-emacs): Special case read-errors. (read-error-location): Add the offset to the buffer start. * swank.lisp (assign-index): Avoid linear search. 2004-10-30 Helmut Eller * swank-source-path-parser.lisp (source-path-stream-position): Bind *read-suppress* only as long as we skip over forms. The last toplevel form in the path is read with *read-suppress* = nil because in newer versions of CMUCL and SBCL read will return nil if *read-suppress* is t. 2004-10-28 Helmut Eller * swank-clisp.lisp: Ups. Undo previous change. * swank-clisp.lisp: Add workaround for CLISP's broken control string parser. * swank-cmucl.lisp (set-step-breakpoints): Handle breakpoints at single-return points in escaped frames better. Previously we tried to set a breakpoint at the current position and consequently was only hit during the next call. (inspect-for-emacs)[function]: Call the next method only for funcallable instances. (profile-report, profile-reset, unprofile-all): We have to use eval because the macro expansion depends on the value of *timed-functions*. Reported by Chisheng Huang. * slime.el (slime-space): Call slime-message in the right buffer, so that after-command hooks are added in the right buffer. Reported by Juho Snellman. (slime-dispatch-event): Accept stepping flag. (sldb-setup): Don't query when entering a recursive edit. (sldb-exit): Don't kill the buffer if we are in stepping mode. (slime-inspector-insert-ispec): New function. (slime-open-inspector): Use it. (slime-inspector-operate-on-point): Simplified. (test interactive-eval): Fix test case. (slime-kill-all-buffers): More regexp kludges. From Bill Clementson. * swank-backend.lisp (activate-stepping): New function. * swank.lisp (*sldb-stepping-p*): New variable. Used to tell emacs that the debugger buffer should not be closed even if we unwind. (debug-in-emacs): Use it. (sldb-step): Moved to the front end. (inspector-princ, method-specializers-for-inspect): Simplified. (methods-by-applicability): Use a simpler algorithm. I doubt there is much difference in practice. (inspect-for-emacs)[symbol, function, standard-generic-function] [standard-method]: Use less than 80 columns. (inspector-call-nth-action): Don't accept &rest args. Was never used. (inspect-for-emacs) [integer]: Fix control string. Thanks to CSR for pointing it out. 2004-10-27 Helmut Eller * swank-sbcl.lisp (signal-compiler-condition): Actually delete one of the reader-conditionalized forms. 2004-10-26 Helmut Eller * cl-indent.el: Add indentation specs for some missing CL symbols. (lisp-prefix-match-indentation): Change default to nil to avoid confusion for people who don't care about the issue. * swank-sbcl.lisp (signal-compiler-condition): Remove reader conditionals as the current code doesn't work in any SBCL before 0.8.13 anyway. * swank-source-path-parser.lisp: Remove workarounds for SBCL bugs. The bugs are fixed in the versions we support. * swank-cmucl.lisp (read-error-location) (signal-compiler-condition): Handle read-errors. (swank-compile-file): Don't load the fasl file if there was an error. * swank.lisp (define-printer-variables): Handle doc strings properly. (*sldb-pprint-dispatch*): Initialize it with the default dispatch table. * slime.el (slime-init-command): New function to send the command to load swank. Having a separate function for the task should make it easier to start a Lips with a preloaded swank. (slime-maybe-start-lisp): Use it. (slime-maybe-start-multiprocessing): Deleted. (slime-repl-buffer): Include the name of the implementation. (slime-set-default-directory) (slime-sync-package-and-default-directory): Translate filenames. 2004-10-25 Marco Baringer * swank.lisp (inspect-for-emacs array): Properly deal with arrays without fill pointers. (inspect-for-emacs function): Show function-lambda-expression when available. * swank-openmcl.lisp (specializer-name): New function. (who-specializes): Use it. (maybe-method-location): Use it. (function-source-location): Use it. * swank-cmucl.lisp (inspect-for-emacs function): Use next method's values and simply add cmucl specific details. * slime.el (slime-repl-defparameter): Change default value to "*". 2004-10-25 Thomas Schilling * swank-allegro.lisp (inspect-for-emacs): Use excl::external-fn_symdef to get the function documentation. * swank.lisp (inspect-for-emacs): Order generic function's methods and show abbreviated docs for methods. (abbrev-doc): New function. (methods-by-applicability): New function. (*gf-method-getter*): New variable. 2004-10-19 Luke Gorrie * slime.el (slime-show-source-location): Call `push-mark' to push the source position onto the global mark ring. 2004-10-19 Helmut Eller * swank.lisp (define-printer-variables): NIL is not a valid docstring. Reported by Alain Picard. (printer-variables sldb-print): Include print-gensym, pprint-dispatch, base, radix, array, and lines. 2004-10-17 Luke Gorrie * slime.el (slime-message): Use slime-typeout-frame if available. 2004-10-17 Helmut Eller * cl-indent.el: Our local copy. Should eventually be merged the file with in the main distribution. * slime.el: (slime-find-buffer-package-function): New variable to allow customization for unusal syntax. (slime-maybe-rearrange-inferior-lisp): Removed unused function. (slime-set-inferior-process): Non-macro version to make byte-compiler happy. Reported by Raymond Wiker. (slime-maybe-start-lisp): Use it. (slime-sync-package-and-default-directory): Synch the default-directory in the REPL buffer too. (slime-goto-connection): Close the connection list window. Suggested by Andras Simon. (slime-repl-clear-buffer): Place point after the prompt. (selector-method ?i): Use slime-process to switch to the right buffer. (slime-background-message): Do nothing if the minibuffer is active. (slime-indent-and-complete-symbol): Don't indent if we at the same line as the prompt. * swank.lisp (*sldb-pprint-frames*): Renamed to *sldb-print-pretty*. (*sldb-print-level*, *sldb-print-length*, *sldb-print-circle*) (*sldb-print-readbly): Group of new variables to customize printing in the debugger. The default values should be safe. (define-printer-variables, with-printer-settings): New macros to make defining and binding groups of printer variables easier. (inspect-for-emacs-list): Fix bug with circular lists and only shows the first 40 elements. (inspect-for-emacs): Various cleanups. (all-qualified-readnames): Removed. It was not needed because common-lisp-indent-function strips of any package prefix and downcases the symbol anyway. (printer-variables sldb-print): Ooops. Better use sldb-print as prefix than sldb alone. *sldb-level* was already defined. * swank-cmucl.lisp (inspect-for-emacs (code-component)): Disassemble the memory region if there's not enough debug info. 2004-10-17 Jan Rychter * swank-cmucl.lisp (return-from-frame): Add it. 2004-10-11 Thomas F. Burdick * swank-sbcl.lisp (function-definitions): Find compiler macros, too. (find-defintions, compiler-definitions) (optimizer-definitions, transform-definitions): Add compiler transformers and optimizers to the list of definitions. 2004-10-07 Peter Seibel * swank.lisp (spawn-threads-for-connection): Bind *debugger-hook* instead of SETF'ing it. 2004-10-06 Luke Gorrie * swank.lisp (update-indentation/delta-for-emacs): Configure Emacs indentation settings not just for the symbol name but for all package-qualified forms of it as well. * doc/slime.texi (Credits): Updated the credits list to include more Lisp implementors who're also SLIME hackers. 2004-10-05 Luke Gorrie * swank.lisp (arglist-for-echo-area): Handle errors and return a message. (parse-symbol): Recognise an empty package name as the KEYWORD package. 2004-10-03 Reini Urban * swank-clisp.lisp (getpid)[win32]: Use win32:|GetCurrentProcessId|. 2004-10-03 Helmut Eller * slime.el: Reduce dependency on inf-lisp internals. Make it possible to start the inferior lisp in a buffer different from "*inferior-lisp*". (slime): Parse the command argument explicitly and don't rely on `inferior-lisp'. Don't close all connections, but only the one for the inferior lisp buffer we are using. (slime-maybe-start-lisp): Take the command and buffer as argument. Decide here whether we should start start a new processwe or just disconnect and reconnect . (slime-start-lisp): Load verbosely. (slime-inferior-lisp): New function. Replaces call to `inferior-lisp'. (slime-inferior-connect, slime-start-swank-server): Take the inferior process as argument (slime-read-port-and-connect): Set the slime-inferior-process variable in the new connection. (slime-inferior-process): New connection local variable. (slime-process): Use it. (slime-restart-inferior-lisp): Don't use inferior lisp stuff. (slime-switch-to-output-buffer): Process interactive arguments properly. * swank-loader.lisp (compile-files-if-needed-serially): Load verbosely. 2004-10-01 Helmut Eller * swank-allegro.lisp (find-fspec-location): excl:source-file can return stuff like (:operator ...); try to handle it. * swank-cmucl.lisp (code-component-entry-points): Only include entry points with "valid" functions names. This excludes internal lambdas which have usually a string as name, like "defun foo". * swank.lisp (parse-symbol): Don't use the reader to avoid interning unknown symbols. The downside is that we no longer handle escaped |symbols| correctly. * slime.el (slime-set-connection-info): Hide the *inferior-lisp* buffer after we know Lisp's pid. Print the words of encouragement here, when all the other asynchronous initialization is completed. (slime-find-buffer-package): We need to preserve the case for things like (:in-package "foo"), so return "\"foo\"". 2004-09-27 Helmut Eller * slime.el (slime-process): New function intended to replace all those references to the *inferior-lisp* buffer. (slime-maybe-start-lisp): Split it up. (slime-start-lisp): New function. (slime-restart-inferior-lisp): Use the command from the existing process to start the new process. 2004-09-27 Christian Lynbech * slime.el (define-slime-dialect): New macro to make starting Lisps with different command line options easier. 2004-09-27 Rui Patrocínio * swank.lisp (mop, mop-helper): Support functions for the class browser. * slime.el (slime-browse-classes, slime-browse-xrefs): New commands to browse class hierarchies and xref graphs in a tree widget. * tree-widget.el: New file. Only needed for older Emacsen. 2004-09-23 Helmut Eller * slime.el (slime-start-and-load): Take arguments so that the function can be called non-interactively. Only start SLIME is if it is not running. (slime-recompile-bytecode): Don't warn about uses of cl-functions. (slime-reset): Kill all sldb buffers. (slime-goto-location-position): Fix syntax for Emacs 20. (sldb-mode-map): Add C-c C-d bindings. (slime-open-inspector): Insert the type in the second line so that we can make longer titles, e.g we should include the princed version of the inspected object. * swank-backend.lisp (frame-package, label-value-line) (label-value-line*): New functions. * swank.lisp (frame-locals-for-emacs): Bind *print-pretty* to *sldb-pprint-frames* to get more compact lines and bind *package* to frame-package to get shorter labels for variables. (format-values-for-echo-area): Include the hex and octal representation for integers. (apply-macro-expander, disassemble-symbol): Use the buffer-package for reading. (inspector-content-for-emacs): Use print-part-to-string so that we see cycles in the data structure. (inspect-for-emacs): Minor beautifications. (load-file-set-package): New function. * swank-cmucl.lisp (frame-package): Implemented. (inspect-for-emacs): Only include stuff that is actually stored in the object itself (see objdef.lisp for exact object layout). Include the disassembly for functions and code components. 2004-09-19 Helmut Eller * swank-gray.lisp (stream-read-char): Treat empty strings as end-of-file. * swank-cmucl.lisp (sis/in): Treat empty strings as end-of-file. (map-allocated-code-components): Inhibit efficiency notes. (arglist)[symbol] Delete unreachable code. (sldb-break-on-return, sldb-break-at-start): Implement it (sldb-step): Some cleanups. * swank.lisp (thread-for-evaluation): Restart the listener thread if it was dead for some reason. (debugger-condition-for-emacs): Include "extra" stuff. Currenlty only used to pop up the source buffer at breakpoints. (sldb-break): New function. (interrupt-worker-thread): Interrupt the repl thread if there is no other active thread. * swank-backend.lisp (import-swank-mop-symbols): New function. Useful if the implementation has most of the mop symbols in the same package. (sldb-break-on-return, sldb-break-at-start, condition-extras): New functions. * slime.el (sldb-break-on-return, sldb-break): New commands. (slime-repl-return-string): Allow empty strings. That's our way to send end-of-file. (sldb-insert-condition): Add "extra" slot for random thing that don't fit nicely somewhere else. (sldb-dispatch-extras): New function. (sldb-show-frame-source): New non-interactive version of sldb-show-source. (sldb-show-source): Use it. (slime-beginning-of-symbol, slime-end-of-symbol): New functions which don't include the character after a hash '#'. (slime-symbol-name-at-point): Use them. (slime-symbol-start-pos, slime-symbol-end-pos): Ditto. 2004-09-17 Marco Baringer * swank.lisp: Don't print "Documentation:" if none is available; add support for classes specializer-direct-methods; deal with eql-specializers in methods. (inspector-princ): New function. (method-specializers-for-inspect): New function. (method-for-inspect-value): New function. (inspect-for-emacs): Use inspector-princ instead of princ-to-string. * swank-backend.lisp (swank-mop): Require eql-specializer, eql-specializer-object and specializer-direct-methods in swank-mop package. * swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-openmcl.lisp, swank-sbcl.lisp (swank-mop): Export eql-specializer, eql-specializer-object and specializer-direct-methods from swank-mop. * swank-cmucl.lisp (inspect-for-emacs): Thinko fix. * swank-lispworks.lisp (swank-mop): Export specializer-direct-methods. (eql-specializer): Implement. (eql-specializer-object): Implement. * swank-sbcl.lisp (inspect-for-emacs): Fix broken ignore declaration. * doc/slime.texi: Update inspector documentation. 2004-09-16 Marco Baringer * swank-clisp.lisp (swank-mop, inspect-for-emacs): Only define the CLOS parts of the inspector if the underlying lisp provides the required functionality. If not enough MOP is present to implement the inspector then we define some very simple replacement methods. 2004-09-16 Marco Baringer * swank-clisp.lisp (swank-mop): Implement the MOP compatability package. (inspect-for-emacs): Update for new inspection API. 2004-09-15 Alan Ruttenberg * swank-openmcl: typo in who-references. Fix frame-var-value 2004-09-15 Marco Baringer * slime.el (slime-inspector-label-face, slime-inspector-value-face, slime-inspector-action-face, slime-inspector-type-face): These faces now inherit from similar font-lock- faces. (slime-open-inspector): Use slime-inspector-value-face for values. * swank.lisp (inspect-for-emacs): Add function and compiler-macro documentation when inspecting symbols. View the truename of logical pathnames where they exist. Fix typos in package inspector (fix by Torsten Poulin ). * swank-sbcl.lisp, swank-cmucl.lisp (inspect-for-emacs): Insert function object's documentation when it's available. 2004-09-15 Eduardo Muñoz * .cvsignore: Added *.elc * hyperspec.el: Fixed syntax error. 2004-09-15 Alan Caulkins * swank.lisp (cleanp-connection-threads): Kill all Swank threads for a connection when it terminates. 2004-09-14 Thomas Schilling * swank-allegro.lisp (inspect-for-emacs): Fixes to previous patch. 2004-09-14 Marco Baringer * swank-backend.lisp (inspector, make-default-inspector): Add an INSPECTOR object argument to the inspector protocol. This allows implementations to provide more information regarding cretain objects which can't be, or simply aren't, inspected using the generic inspector implementation. also export inspect-for-emacs and related symbols from the backend package. (make-default-inspector): New function. * swank.lisp (inspected-parts): Rename to inspect-for-emacs and add an inspector argument. Move inspect-for-emacs to swank-backend.lisp, leave only the default implementations. * swank-openml.lisp, swank-sbcl.lisp, swank-allegro.lisp, swank-cmucl.lisp, swank-lispworks.lisp (inspected-parts): Rename and change argument list. Many of the inspected-parts methods were being clobbered by the inspected-parts in swank.lisp, now that they're being used the return values have been updated for the new inspect-for-emacs API. 2004-09-14 Thomas Schilling * swank-allegro.lisp (inspected-parts): Implement inspector for structs. 2004-09-13 Helmut Eller * swank.lisp (intern-catch-tag): New function. (read-user-input-from-emacs, take-input): Use it. 2004-09-13 John Paul Wallington * swank.lisp (define-special): Make the doc-type `variable' rather than `symbol'. Don't quote `doc'. Doc fix. 2004-09-09 Martin Simmons * swank-lispworks.lisp: Set up the swank-mop package. Implement swank-mop:slot-definition-documentation and function-name. 2004-09-13 Marco Baringer * swank.lisp (inspected-parts): Added inspectors for pathnames, logical pathnames, standard-objects and numbers (float, ratio, integer and complex). * swank-backend.lisp: Define import-to-swank-mop. * swank-openmcl.lisp, swank-sbcl.lisp, swank-allegro.lisp: Don't define the import-to-swank-mop function (now defined in swank-backend.lisp). * swank-cmucl.lisp (swank-mop, function-name): Implement backend for inspector. (arglist): Add support for extracting arglists from function objects. (create-socket): Don't specify the host on PPC. 2004-09-13 Alan Ruttenberg * slime.el slime-goto-location-position: New location specifiers: (:method name specializers . qualifiers) all are strings. Looks for defxxx name then the qualifiers as words, in order then the specializers as words, in order (except for "T", which is optional). Pass the symbols names for specializers and qualifiers (no packages). Used by openmcl but might be useful for others (:text-anchored ) Got to position, then search for string, then move delta. To support upcoming source recording for openmcl debugging. * swank-openmcl multiple changes: - fix support for *sldb-top* (formerly *swank-debugger-stack-frame*) Was not thread safe. Now (application-error), and (interrupt-thread) records the error pointer in a table associated with thread and map-backtrace picks up the appropriate pointer. *process-to-stack-top*, (grab-stack-top), (record-stack-top). - Other adjustments for changes to multiprocessing: remove (force-break-in-listener) no longer necessary since we use process-interrupt instead of ccl::*interactive-abort-process* Adjust break-in-sldb to do so for swank repl connections (abstraction breaking reference to swank::*connections*, but nicely via intern) - changes to (find-definitions) (function-source-location), addition of (maybe-method-location) (remove-filename-quoting). To support editing definitions of methods. To fix bug with pathnames with quoted characters (like "\\.swank.lisp"). To remove bogus source recording of l1-boot-3 in functions that didn't have a source file noted. - Implementation of xref functions: (xref-locations) uses xref implementation added to openmcl recently. Note that you have to (ccl::start-xref) for it to work for other than who-calls, and that xref information is not currently persisted in fasl files (I will release a patch for this soon) Backend functions (who-binds) (who-macroexpands) (who-references) (who-sets) (who-calls) (list-callees) (who-specializes) - Lifted profile backend functions from swank-clisp which use "metering.lisp" - (openmcl-set-debug-switches) turns on the various variables I. know about that have the lisp record extra debugging information(including starting xref). I suggest you call it. Should it be called by default? - (frame-arguments) use builtin ccl::frame-supplied-args since the current version was sometimes missing the first argument to the function. (I think this was when it was passed by register. If you don't want to lose it in the frame locals in backtrace, call (openmcl-set-debug-switches) specifically, set ccl::*ppc2-compiler-register-save-label* to t - implement frame-var-value backend * metering.lisp: Minor changes to #+ #- to recognize openmcl * swank-loader.lisp: Load "metering.lisp" 2004-09-13 Marco Baringer * swank.lisp (inspected-parts): Deal with unfinalized classes in standard-class inspector. (Patch from Thomas Schilling) 2004-09-13 Marco Baringer * swank.lisp: New inspector protocol. The lisp side now returns a specially formated list of "things" to format which are then passed to emacs and rendered in the inspector buffer. Things can be either text, recursivly inspectable values, or functions to call. (inspected-parts): Redefine for new inspector protocol. (*inspectee-parts*): Redefine as array. (*inspectee-actions*): New array, similar to *inspectee-parts*. (reset-inspector): Update for new implementation of *inspectee-parts* and new variable *inspectee-actions*. (inspector-contents-for-emacs): New function. (inspect-object): Update for new inspector protocol. (inspector-nth-part): Update for new *inspectee-parts* implementation. (inspector-call-nth-action): New function. * slime.el (slime-inspector-action-face): New face. (slime-open-inspector): Adapt to new inspector protocol. (slime-inspector-operate-on-point): New function, subsumes slime-inspector-inspect-object-at-point. (slime-inspector-next-inspectable-object): Skip to next object, not just end of current object; wrap around buffer. (slime-inspector-mode-map): change bindings of [return] and "\C-m" * swank-bacend.lisp (swank-mop): New package. Simply defines all the MOP related symbols we need from an implementation. (arglist): Update doc string. Provide default implementation. (function-name): New backend function. * swank-allegro.lisp (swank-mop, slot-definition-documentation): Implement. (Patch from Thomas Schilling) * swank-sbcl.lisp (swank-mop, slot-definition-documentation, function-name): Implement. * swank-openmcl.lisp (swank-mop, function-name): Implement. (arglist): Implement for function objects. 2004-09-12 Helmut Eller * swank.lisp (compile-file-for-emacs): Use with-buffer-syntax so that SBCL source files can be compiled. From Christophe Rhodes. 2004-09-09 Martin Simmons * swank-loader.lisp (make-swank-pathname): Preserve the host component (important for LispWorks on Windows). 2004-09-08 Martin Simmons * swank-lispworks.lisp: Implement call-with-compilation-hooks. 2004-09-03 Helmut Eller * NEWS: Summarize changes since August. * slime.el: Add some docstrings. * mkdist.sh: Add PROBLEMS file. We're no longer alpha. * swank.lisp: Remove debugging code in comment. * swank-sbcl.lisp: Delete dead code. * swank-lispworks.lisp (defimplementation): define-dspec-alias seems to more apropriate than define-form-parser. * swank-cmucl.lisp (print-frame): Catch errors during printing. * README: Fix typo. 2004-09-02 Wolfgang Mederle * swank-loader.lisp (*lisp-name*): Replace / with - in CMUCL version strings. 2004-09-01 John Paul Wallington * slime.el (slime-oneliner): Don't use free variable. (slime-recenter-window, slime-set-connection-info) (slime-pprint-event, slime-compiler-notes-quit) (slime-apropos-summary): Likewise. (slime-connect): Tidy up handshake `message' call. 2004-09-01 Helmut Eller * slime.el (slime-repl-push-directory): Fix interactive spec. (sldb-reference-properties): Take a the reference object as argument instead of its parts. Fix callers accordingly. (slime-fuzzy-choices-buffer): Remove assignment to unused variable slime-fuzzy-target-mtime. (slime-ed): Replace call to new-frame with make-frame. (sldb-find-buffer): Cleanup. (sldb-highlight-sexp): Fix regexp. It's now almost a full line. * swank.lisp (completion-set, tokenize-symbol-designator) (tokenize-completion, fuzzy-completion-set) (briefly-describe-symbol-for-emacs): Remove simple-base-string declarations. 2004-08-30 Helmut Eller * PROBLEMS: We require SBCL 0.8.13. 0.8.12 is no longer supported. * swank-allegro.lisp (find-fspec-location): Catch errors in excl:source-file. * swank.lisp (send-to-socket-io): Add some ignore declarations. * slime.el (sldb-fetch-all-frames, sldb-end-of-backtrace) (sldb-beginning-of-backtrace): New commands. (slime-search-suppressed-forms): Change the start regexp so that reader conditionals in single line comments, like "; #+foo", are ignored. 2004-08-27 Peter Seibel * swank-backend.lisp (swank-compile-string): Add directory argument which is used by Allegro backend to improve source recording for definitions compiled with C-c C-c. 2004-08-23 John Paul Wallington * slime.el (slime-pretty-package-name): Fix last cond clause. 2004-08-21 Luke Gorrie * swank.lisp (*global-debugger*): New configurable to globally install swank-debugger-hook as *debugger-hook*. True by default. 2004-08-19 Luke Gorrie * doc/slime.texi: C-c C-c C-a, C-c C-u C-e. Thanks Barry Fishman for reporting incorrect indexing. 2004-08-18 Matthew Danish * swank-allegro.lisp (swank-compile-string): Use #\; instead of #\: to separate the position from the buffer-name. This avoids troubles on Windows. 2004-08-16 Luke Gorrie * doc/slime.texi: Random updates. * slime.el (slime-space): Use slime-message instead of slime-background-message. This displays multi-line arglists. (sldb-mode-map): Bind 'C' to sldb-inspect-condition. 2004-08-14 Helmut Eller * slime.el (slime-find-buffer-package): Use "%s", not "%S", to avoid ugly escape characters, if the package name contains dots. 2004-08-13 Luke Gorrie * slime.el (sldb-eval-in-frame): Print result to the REPL when a prefix argument is given. Added pull-down menus for SLDB and the REPL. * swank-source-path-parser.lisp: Removed caching of readtables and the source-map hashtable. Fresh creation is ultra-cheap (<1ms). The caching didn't handle modifications to readtables and generally made me feel uneasy while tracking down an obscure bug in a reader macro. The cached source-map hashtable also wasn't thread-safe (ho hum). 2004-08-13 Helmut Eller * slime.el (slime-merge-notes, slime-tree-for-note): Use the short note message for annotation in the source buffer and the long message in the tree widget. Used to be the other way around. (sldb-insert-frames): Set the `start-open' property for XEmacs. Without `start-open', the `point-entered' property is inherited when we insert something before the "--more--" marker. Reported by Sundar Narasimhan. * swank.lisp (variable-desc-for-echo-area): Bind some printer variables to limit the length of the output. 2004-08-05 Luke Gorrie * slime.el (slime-setup): Added typeout-frame keyword argument. (slime-thread-attach): Fixed misnamed function call. 2004-08-04 Luke Gorrie * swank-allegro.lisp (find-fspec-location): Fixed to work for more types of definition than just functions. So M-. now works for e.g. classes in Allegro. From Matthew Danish. (find-fspec-location): Include the type of the definition in the designator sent to Emacs. From Matthew Danish. 2004-08-04 Martin Simmons * swank-lispworks.lisp (frame-actual-args): Correct syntax for handler-case. 2004-08-04 Helmut Eller * slime.el: (slime-mode-map, slime-repl-mode-map) (slime-repl-read-mode-map): Remove the binding for C-c C-g. C-c C-b is now the default interrupt key. (slime-list-repl-short-cuts): Don't trash the shortcut-table: copy it before sorting. (Thanks to Mark Simpson.) 2004-08-02 Luke Gorrie * slime.el (slime-connect): Shorten the welcome message by leaving out the port number (which is displayed in the REPL anyway). This avoids line-wrapping some messages of encouragement. * swank.lisp (with-buffer-syntax): Don't bind *readtable* to *buffer-readtable* if they are already EQ. When we shadow this binding the user can't assign *readtable* from the REPL so it's best avoided when possible. * swank-allegro.lisp: Removed fwrapper-based code for inheriting "swankiness" to newly spawned threads. This was fighting the system and not the right thing. * slime.el (slime-choose-overlay-region): Tweaked the multiline-annotation-avoidance code to work with forms not starting with an open-paren, e.g. `(..) or #'(..). (slime-update-modeline-package): New configurable. Non-nil (the default) means update the Lisp package in the modeline using an idle timer. (slime-repl-send-input): Make the `slime-repl-old-input' property cover the whole input (including newline) so that pressing RET on the end of an input line works. Use a unique integer as the value of this property to distinguish adjacent inputs. (slime-current-package): Deal with narrowing. 2004-08-01 Helmut Eller * swank-allegro.lisp (swank-compile-string): Use a temporary file and set excl::*source-pathname* manually. This way we can find the source buffer of functions compiled with C-c C-c. (call-with-temp-file, compile-from-temp-file): New functions. (list-callers, function-callers, in-constants-p) (map-function-constants): Implements list callers by groveling through the constants pools of named functions. * swank-lispworks.lisp: Minor refactoring. 2004-07-30 Helmut Eller * slime.el (slime-connection): Say "No default connection selected" if there are open connections but no default connection. (slime-tree-indent-item): Point wasn't updated correctly if the last line was empty. Use insert-before-markers instead of insert to do it properly. (slime-draw-connection-list): Don't break if there is no default connection. * swank-cmucl.lisp (call-with-debugging-environment): Only handle DI::UNHANDLED-CONDITION not all DI:DEBUG-CONDITIONs. * swank-backend.lisp (sldb-condition): Show the original condition in the message. 2004-07-28 Helmut Eller * slime.el (slime-eval-feature-conditional): Treat uppercase operators NOT, AND, OR correctly. (sldb-find-buffer): Remove killed buffers. (sldb-quit): Raise an error if the RPC returns. (slime-expected-failures): Delete unused function. (complete-symbol): Test completion of swank::compile-file. LispWorks has extra completions for cl::compile-file. (arglist): Test arglist of method cl:class-name. Add enough regexpery to pass the test in most implementations. * swank-sbcl.lisp (list-callers, list-callees): Implemented. 2004-07-26 Luke Gorrie * slime.el (slime-first-change-hook): Add `save-match-data' to avoid breaking e.g. query-replace. Also added `save-excursion' just to be safe. * README: s/setup-slime/slime-setup/ in the .emacs snippet. 2004-07-23 Luke Gorrie * slime.el (slime-set-state): Show the message in the modeline in the case where we aren't connected. Otherwise the "not connected" status is ignored. (slime-net-sentinel): Close the connection before changing the status message. The old behaviour of this combined with the old behaviour of `slime-set-state' could generally cause spurious errors after a connection was closed. 2004-07-22 Luke Gorrie * swank.lisp (carefully-find-package): Return *BUFFER-PACKAGE* if no other package can be found. This is reverting a previous change that broke completion in buffers with no known package. * slime.el (slime-maybe-start-lisp): Check that *inferior-lisp* exists /and/ has a running process. Fixes a startup problem if your inferior-lisp has died and you want to restart SLIME. 2004-07-21 Luke Gorrie * slime.el (slime-sync-package-and-default-directory): Sync `default-directory' in the REPL buffer too. (slime-set-state): Convenience function for setting a connection's state-name and updating the modeline if appropriate. This function is called in the right places. (slime-to-lisp-filename): Use `expand-file-name'. 2004-07-20 Luke Gorrie * slime.el (slime-repl-update-banner): Restore old behaviour of using an asynchronous evaluation to setup the REPL. This works around a problem I'd reintroduced where the first REPL command uses the wrong keymap. 2004-07-20 Andreas Fuchs * swank-sbcl.lisp (call-with-compilation-hooks): Trap and report errors that cause compilation to fail, e.g. read errors. 2004-07-19 Luke Gorrie * HACKING: Updated. Some notes about Emacs features. * slime.el: More major refactoring. Restructured and documented the networking and protocol code. (slime-rex-continuations): Now connection-local. 2004-07-18 Luke Gorrie * slime.el: Major refactoring. Mostly resectioning and reordering definitions to try and improve readability. (slime-get-temp-buffer-create): New utility function to popup a temporary buffer that automatically has a binding on `q' to intelligently restore window configuration. Handy, but currently not applicable to all of our temporary buffers. (slime-with-chosen-connection): Removed this macro. Consequently the compilation commands no longer prompt for which connection to use when given a prefix argument. `slime-switch-to-output-buffer' still works like that, but for other cases I think the connection-list buffer is sufficient. (slime-eval-async): New arglist: (form &optional cont pkg). If the continuation is unspecified then the evaluation result is ignored, and if the package is unspecified then (slime-buffer-package) is used. (slime-eval): Package arg now defaults to (slime-buffer-package). (slime-current-package): New name for (slime-buffer-package). No more caching: returns the buffer-local `slime-buffer-package' if set, otherwise searches for an `in-package' form. A consequence of non-caching is that the package name doesn't appear in the modeline anymore. The simplification is worthwhile in my opinion. 2004-07-17 Luke Gorrie * slime.el (slime-autodoc): If there is a global variable name at point then show its value. (slime-autodoc-cache-type): Cache type 'full is no longer supported. (slime-background-message): Truncate messages to fit on a single echo area line. (slime-repl-update-banner-p, slime-dont-prompt) (slime-swank-connection-retries): Removed these unused or unuseful configuration variables. Rearranged organised "customize" groups. * swank.lisp (variable-desc-for-echo-area): New function. (arglist-for-echo-area): Return nil if symbol can't be found. (close-connection): Close connection before printing error message. This avoids it getting lost in closed I/O redirection. * README, doc/slime.texi: Updated setup instructions. 2004-07-16 Luke Gorrie * slime.el (slime-conservative-indentation): New variable. When true (the default) don't auto-learn indentation of def* and with-* macros. Set to nil if you want to learn them. (slime-handle-indentation-update): Use it. * swank.lisp (known-to-emacs-p): Removed filtering of def* and with-*. Now handled by Emacs. * slime.el (slime-interactive-eval): Changed display of results. By default the result goes to `slime-message', which leads either to echo area, temporary buffer, or typeout frame. With a prefix argument the result is printed to the REPL. This goes for all commands based on slime-interactive-eval, e.g. `C-x C-e' and `C-c M-:'. 2004-07-16 Peter Seibel * slime.el (package-updating): Fixing this and other tests I broke with my change to how emacs keeps track of the package prompt string. (arglist): Fix an test failure under Allegro due to a slight difference in the way EXCL:ARGLIST returns arglist (no default values of &optional parameters) 2004-07-16 Luke Gorrie * swank.lisp (print-connection): print-function for connection objects. Dumping the indentation-cache was damned ugly with non-truncated lines (e.g. bug reports on slime-devel). * slime.el (slime-setup): New function for installing a lisp-mode-hook. You can call this from ~/.emacs to setup SLIME. Takes a `autodoc' keyword argument to enable slime-autodoc-mode. We can add more keywords in future. (slime-keys): Moved `slime-reindent-defun' from C-M-q to C-cM-q. This avoids overriding the standard binding of C-M-q to index-sexp. (slime-typeout-frame-properties): Removed some properties: `name', because it interacts badly with X properties, `left' and `top' because they don't put the frame anywhere terribly convenient, and (width . 40) because it makes the frame narrower than the usual word-wrapping width. 2004-07-14 Peter Seibel * slime.el (slime-lisp-package-prompt-string): Separate SLIME's notion of package into two parts, an actual package name and the name used in the prompt since the latter isn't necessarily an actual package nickname any more. 2004-07-13 Luke Gorrie * slime.el (slime-restart-inferior-lisp): Renamed shortcut to "restart-inferior-lisp" from "restart-lisp". The name better suggests what it does: kill *inferior-lisp* and rerun SLIME. 2004-07-13 Eric Blood (slime-inspector-next-inspectable-object): New inspector command to goto the next inspectable object (slot). Bound to TAB. 2004-07-13 Christophe Rhodes * slime.el: add support for actionable references in the *slime-compiler-notes* buffer. (slime-merge-notes): merge references if applicable. (slime-compiler-notes-mode-map): use new functions defaulting to show-details, but overrideable by text properties. (slime-tree-default-printer): destroy generality by assuming a tree of conditions, and insert references if applicable. (sldb-format-reference-source): add :amop * swank-sbcl.lisp (signal-compiler-condition, brief-compiler-message-for-emacs, long-compiler-message-for-emacs): handle references in compiler conditions. * swank.lisp (make-compiler-note): propagate references. * swank-backend.lisp (compiler-condition): add references slot. 2004-07-12 Luke Gorrie * slime.el (slime-easy-menu): Added "Apropos all" menu item. (slime-restart-lisp): Added `restart-lisp' shortcut. Doesn't do the right thing if you have multiple Lisps up. * swank.lisp: Added some docstrings. Rearranged completion code and somewhat SLDB trying to layout functions above their subfunctions in a tree-like way. (slime-protocol-error): Renamed from slime-read-error. (carefully-find-package): Now returns NIL if package can't be determined, rather than *BUFFER-PACKAGE*. Correct? I didn't see why it should return *BUFFER-PACKAGE*. (xref): Find symbol in *BUFFER-PACKAGE*. 2004-07-09 Peter Seibel * swank.lisp (package-string-for-prompt): Change the way package name in prompt is computed. N.B. after this change the name displayed will not necsarily be either an actual name or nickname of the package: if the name contains dots by default the prompt will only display the last element, i.e. COM.GIGAMONKEYS.SPAM will be shown as SPAM. This change also makes CL-USER the canonical name for COMMON-LISP-USER even in implementations that provide a shorter nickname such as USER. 2004-07-09 Christophe Rhodes * slime.el (sldb-lookup-reference): substitute hyphens for spaces in the url. 2004-07-07 Thomas Schilling * swank.lisp (arglist-for-insertion): Changed formatting to use arglist-to-string. That results in proper cases for slime-insert-arglist. 2004-07-07 Luke Gorrie * swank-loader.lisp (*lisp-name*): Include the version number in ACL. * slime.el (slime-alistify): Preserve order. This keeps the *compiler-notes* right. Pointed out by Christophe Rhodes. (slime-repl-update-banner-p): Renamed from slime-reply-.. (slime-changelog-date): Reintroduced for informational purposes. (slime-repl-update-banner): Show ChangeLog date in the animation. (slime-space): Do arglist lookup before inserting the space. Otherwise we get a funky race condition: entering the space may trigger `first-change-hook', which would send an async notification to Lisp, which would put us in the 'busy' state and thus we wouldn't lookup the arglist! Detective work by Edi Weitz. (sldb-prune-initial-frames): More regexp fudgery :-(. (read-directory-name): Use `file-name-as-directory' to ensure we have the trailing / on the directory name. (byte-compile-warnings): Bye-compile slime-alistify. Its inputs can be pretty big. 2004-07-04 Luke Gorrie * slime.el, swank-backend.lisp, swank.lisp: Added a new backend function `buffer-first-change' which is called via Emacs's `first-change-hook' in slime-mode buffers. This gives Lisp a chance to do something with source files before you change them on disk. * swank-cmucl.lisp (buffer-first-change): Suck the source file into the cache unless already present. This is for M-. to increase the chances of our having a copy of the sources corresponding with the loaded code. Should help with the case where a user edits and saves a file (without recompiling it) and then M-.'s for one of its definitions. * swank-allegro.lisp (make-process/inherit): Changed reader conditionals to use fwrappers for #+(version>= 6). * swank-backend.lisp (make-stream-interactive): This backend function is called with each stream that will be used for user-interaction, i.e. the redirected stdio streams. Can be used to setup special output-flushing or similar. * swank.lisp (open-streams): Call make-stream-interactive on the redirected io streams. * swank-allegro.lisp (make-stream-interactive): Set interactive-stream-p slot on the stream to make it auto-flush. (*swank-thread*, *inherited-bindings*): New variables. (spawn): Bind *swank-thread* to T. (make-process/inherit): Fwrapper (advice) for mp:make-process. When *swank-thread* is T then make the new thread inherit "sliminess": debugger hook, I/O streams, and also *swank-thread* so that its children will inherit too. 2004-07-03 Luke Gorrie * hyperspec.el (common-lisp-hyperspec-section-4.0): Bugfix from Lennart Staflin. * slime.el (slime-repl-clear-output): Avoid clearing the previous REPL expression too. Patch from Andras Simon. * swank-backend.lisp (definterface): Don't use NO-APPLICABLE-METHOD for default methods. Instead just define them as regular methods with all argument types being T. Defimplementation will then replace them by using the same signature. N-A-M was a stupid idea! 2004-07-02 Brian Downing * slime.el (slime-reindent-defun): Added a check for (boundp 'slime-repl-input-start-mark) before checking the variable, as XEmacs leaves variables unbound when `make-variable-buffer-local' is run, while GNU Emacs binds them to NIL. 2004-07-02 Martin Simmons * swank-lispworks.lisp (dspec-stream-position, make-dspec-location): Fix typo in features for LW 4.1 and 4.2. 2004-07-01 Helmut Eller * swank-lispworks.lisp (frame-actual-args): Bind *break-on-signals* to nil and special case &rest, &optional, and &key. 2004-07-01 Luke Gorrie * slime.el (sldb-lookup-reference): Preserve case in SBCL node names. Previously they were downcased, but the HTML manual's filenames seem to have changed. * NEWS: Added security note about the TCP server. Added notes for ACL and ABCL. * doc/slime.texi: General updatings for an alpha release. 2004-06-30 Helmut Eller * slime.el (slime-display-compilation-output): New customizable variable. * swank.lisp: Minor cleanups. (find-symbol-designator, find-symbol-or-lose) (case-convert-input): Deleted. Replaced with calls to parse-symbol{-or-lose}. * swank-lispworks.lisp (describe-symbol-for-emacs): Include information about setf-functions. (emacs-connected): Add a default method to env-internals:environment-display-debugger. 2004-06-30 Luke Gorrie * slime.el (slime-read-port-and-connect-to-running-swank) (slime-connect, slime-open-stream-to-lisp): Replace "localhost" with "127.0.0.1". This is believed to avoid unwanted DNS lookups on certain operating systems. The lookups can become crippling if the DNS server isn't available. (line-beginning-position, line-end-position): Simple bugfix suggested by Richard Klinda. * swank-sbcl.lisp (preferred-communication-style): Choose :fd-handler instead of :sigio when threads aren't available. A lot of people seem to have had problems with :sigio on SBCL. 2004-06-30 Luke Gorrie * NEWS: Wrote preliminary release notes for alpha-1. 2004-06-29 Luke Gorrie * mkdist.sh: New shell script for creating a tarball for distribution. 2004-06-29 Bill Clementson * slime.el (slime-who-map): Add extra bindings for the XREF commands as with the documentation commands. Now `C-c C-w C-c' is `slime-who-calls' in addition to `C-c C-w c', etc. 2004-06-29 Luke Gorrie * slime.el (sldb-prune-initial-frames): Tweaked regexp for matching SWANK's own stack frames for effectiveness in SBCL. (slime-keys): Shadow remaining inf-lisp keys (C-c C-a, C-c C-v) with a null `slime-nop' command until we put them to a real use. * swank.lisp (open-streams): Renamed the restart around reads from the user-input stream from ABORT to ABORT-READ. Invoking this restart seems kinda dangerous, so better for 'a' in SLDB not to do so. 2004-06-28 Thomas F. Burdick * swank.lisp (inspector-nth-part): * slime.el (slime-inspector-copy-down, slime-inspector-mode-map): Added copy-down command (M-RET) to easily move an object from the inspector to the repl. 2004-06-28 Luke Gorrie * slime.el (slime-doc-map): New keymap for documentation commands. These all use the `C-c C-d' prefix, followed by: a - apropos p - apropos-package z - apropos-all d - describe-symbol f - describe-function h - hyperspec lookup ~ - hyperspec lookup of a format character The final keystroke is bound both unmodified and with control, so both `C-c C-d a' and `C-c C-d C-a' will make an apropos search. The exception is hyperspec-lookup, because it's nice to leave C-h unbound so that `C-c C-d C-h' will summarise the documentation bindings. 2004-06-28 Helmut Eller * swank-allegro.lisp (nth-frame): Skip frames where frame-visible-p is false. * slime.el (slime-buffer-package): Return the cached package if we can't find something more sensible; this reverts a previous change. The Lisp side will now fall back to an existing package if the one supplied by Emacs doesn't exist. Using the cached version is also necessary for some commands in the apropos buffer. (sldb-insert-frame): Set the default-action property; pressing RET on frame lines now shows/hides details. (sldb-toggle-details): Preserve the current column. (slime-inspector-buffer, slime-saved-window-config) (slime-inspector-quit): Save and restore the window configuration. (slime-highlight-suppressed-forms, slime-search-suppressed-forms): Display expressions with reader conditionals (#+/#-) in font-lock-comment-face if the test is false. Not implemented for XEmacs. (repl-return): New test. 2004-06-28 Luke Gorrie * slime.el: Events in the *slime-events* buffer are now exact on-the-wire messages, without including e.g. Elisp continuation functions. This is easier for debugging I think. * swank-allegro.lisp (compute-backtrace): Only include frames satisfying `debugger:frame-visible-p'. I did this as a lame workaround for a problem where `output-frame' was segfaulting on certain frames, and those frames happened not to be visible-p. I don't know if it really fixes anything. * hyperspec.el (common-lisp-hyperspec-format): This command now works at the end of the buffer, fixed `char-after' usage as suggested by Johan Bockgård. 2004-06-28 Christophe Rhodes * hyperspec.el: add support for issue cross-reference lookups, strongly inspired by hyperspec symbol lookup. (common-lisp-hyperspec-issuex-table, common-lisp-hyperspec-issuex-symbols): new variables (common-lisp-issuex): new function * slime.el (sldb-format-reference-node, sldb-lookup-reference): (sldb-reference-properties): use new support for issue lookups to support :ansi-cl :issue reference types. * hyperspec.el: add support for glossary lookups. (common-lisp-glossary-fun): new variable (common-lisp-glossary-4.0, common-lisp-glossary-6.0): new functions * slime.el (sldb-format-reference-node, sldb-lookup-reference): (sldb-reference-properties): use new support for glossary lookupts to support :ansi-cl :glossary reference types. 2004-06-27 Helmut Eller * doc/slime.texi: Remove macros from chapter and section headings to avoid texi2pdf breakage. * swank-source-path-parser.lisp (cmucl-style-get-macro-character): Add tests for #\space and #\\. Suggested by Christophe Rhodes. * swank-sbcl.lisp, swank-openmcl.lisp, swank-lispworks.lisp, swank-cmucl.lisp, swank-backend.lisp, swank-allegro.lisp, swank-abcl.lisp (thread-id, find-thread): New backend functions. * swank.lisp (dispatch-event): Quitting from the debugger was seriously broken. Fix it. Move generation of thread ids to the backends. (encode-message, send-to-socket-io): Use WITHOUT-INTERRUPTS in send-to-socket-io. The multithreaded version of encode-message doesn't need it. (nth-thread): Renamed from lookup-thread-by-id. (debug-nth-thread): Renamed from debug-thread-by-id: (kill-nth-thread): Renamed from kill-thread-by-id. * slime.el (sldb-get-buffer): Add support for sldb buffers for multiple threads. 2004-06-25 Thomas F. Burdick * swank-sbcl.lisp (call-with-syntax-hooks, with-debootstrapping): Preserve compatability with fairly recent SBCLs by checking for the presense of the debootstrapping facilities at macroexpansion time. * slime.el (sldb-insert-condition): Initialize sldb-default-action so that pressing RET inspects the condition. 2004-06-25 Helmut Eller * slime.el (slime-repl-insert-prompt): Set defun-prompt-regexp. beginning-of-defun can be very slow in the repl buffer if the defun-prompt-regexp is not set. (sldb-insert-locals): Initialize sldb-default-action. (sldb-var-number-at-point, sldb-inspect-var): New function. * swank.lisp (inspect-frame-var): New function. * swank-backend, swank-cmucl.lisp, swank-sbcl.lisp, swank-allegro.lisp, swank-lispworks.lisp, swank-clisp.lisp (frame-var-value): New backend function. 2004-06-24 Christophe Rhodes * slime.el (sldb-format-reference-node): fix for when `what' is a list. (sldb-lookup-reference,sldb-reference-properties): support :ansi-cl :section reference types. * hyperspec.el (common-lisp-hyperspec-6.0): generalize to work with section numbers lower than 10. 2004-06-24 Brian Downing * slime.el (slime-repl-send-input): Fixed a subtle difference in sending input to the Lisp introduced in 1.316. The newline was not getting sent, resulting in the Lisp constantly asking for more read data. I believe the code has been adjusted to behave the same as 1.315 with regard to sending newlines. Also adjusted the `slime-repl-old-input' text property to end just before the newline, not just after. This causes a gap between inputs even if no Lisp output appeared in between, so that putting point on an old line and hitting RET will only call up that line, and hitting RET in the middle of the current line will send it and not bring up a confusing combination of all previous input. Many thanks to Loyd Fueston for pinpointing the date and exact patch for when this problem was introduced. 2004-06-23 Brian Downing * slime.el: Re-added most of Luke's patches from yesterday. It has the shortened names, uses markers instead of stored `(point)' values, and `slime-fuzzy-complete-symbol' is an option for `slime-complete-symbol-function'. It still string compares the target buffer instead of using `(buffer-modified-tick)'. I left the `C-c M-i' keybinding in, as it allows use of the regular completion as well. If there's an objection to this it can be removed. `window-configuration-change-hook' is used if the variable is present, and ignored it not. This neatly sidesteps its absence in XEmacs while not killing the functionality for GNU Emacs. * doc/slime.texi: Added a command entry and short description for `C-c M-I, slime-fuzzy-complete-symbol', and added its existence to the `slime-complete-symbol-function' documentation. 2004-06-22 Luke Gorrie * doc/slime.texi: Noted ABCL support. * slime.el: Backed out all of my changes to fuzzy completion. I was too hasty and didn't do good things. Now it's back in pristine state from Brian's patch -- use `C-c M-i' to fuzzy-complete. * doc/Makefile (contributors.texi): The contributors list in the manual is now sorted by most number of ChangeLog entries. Patch from Michael Weber. * slime.el: Some minor hacking to fuzzy completion: Use the shorter `slime-fuzzy-' symbol prefix. Use markers instead of numbers to remember where the completion is being done. This way they are self-updating. Use `buffer-modified-tick' to detect modifications instead of text comparison. Always restore window configuration when a completion is chosen. For this completion style I think this will work okay [famous last words], and the existing code wasn't XEmacs-compatible for want of window-configuration-change-hook. Now there is no separate keybinding for fuzzy completion, but it's included as a customize option for `slime-complete-symbol-function' 2004-06-22 Brian Downing * slime.el, swank.lisp: Added "fuzzy completion." 2004-06-22 Matthew Danish * swank-backend.lisp (unbound-slot-filler): New structure for representing an unbound slot in the inspector functions. * swank.lisp, swank-allegro.lisp: Use it. 2004-06-22 Luke Gorrie * slime.el (slime-output-filter): Choose connection based on process-buffer, not current buffer. This fixes a bug where output from multiple Lisp sessions could get mixed up. (slime-kill-all-buffers): Include all *inferior-lisp*[] buffers. Split the customize settings into more subgroups. * swank.lisp (prefixed-var): Intern *REAL-STANDARD-INPUT* etc in the SWANK package instead of the COMMON-LISP package. 2004-06-21 Luke Gorrie * swank-loader.lisp (*lisp-name*): Add version number to Lispwork's fasl directory. We should do this for ACL and OpenMCL too, but for some reason my ACL 5.0 gets an error when trying to create a directory with a version number in its name, and I don't have OpenMCL to test with. * swank-backend.lisp, swank.lisp (add-hook, run-hook): Moved the hook mechanism and all hooks to swank.lisp (from swank-backend.lisp). There is no compelling use for the hooks in backends yet and I want to pass swank.lisp-internal data structures in the existing hooks. (notify-backend-of-connection): Call `emacs-connected' with the user-io stream for its argument. Should fix previous breakage where the connection structure was passed instead. (*globally-redirect-io*): New configurable: when true the standard streams are globally redirected to Emacs. That way even e.g. SERVE-EVENT handlers will print to Emacs. Currently does not handle standard input -- that is trickier since the Lisp's native REPL can be trying to read from that. * slime.el (slime-complete-maybe-restore-window-configuration): Only restore the window configuration if the completions buffer is currently visible in the window that we popped it up in. (slime-complete-maybe-save-window-configuration): Don't save the window configuration if the completions buffer is already visible. (slime-repl-return): Make sure the newline goes at the end of the input, not at point. (slime-complete-restore-window-configuration): Wrap the `set-window-configuration' call in (run-at-time 0 ..). XEmacs does not allow us to set the window configuration from inside pre-command-hook. 2004-06-20 Helmut Eller * swank-sbcl.lisp (emacs-connected): Set *invoke-debugger-hook* to our debugger hook. Not optimal, but at least BREAK will then invoke our debugger. (*trap-load-time-warnings*): New variable. If it is true, conditions, most notably redefinition warnings, signalled at load time are not trapped. (swank-compile-file, swank-compile-string): Use it. * swank.lisp (guess-buffer-package): Don't signal a continuable error if the package doesn't exists; that's too annoying. * slime.el: Fix outline structure. (slime-maybe-list-compiler-notes): Fix thinko. (break): New test. Reorganize the test-suite a bit to support "expected failures". (slime-eval-feature-conditional, slime-to-feature-keyword): Add a ?: to the symbol-name if needed. 2004-06-20 Luke Gorrie * swank.lisp (changelog-date): Removed unneeded function. (connection-info): No more version field in result. * slime.el: Audited to remove namespace slipups. Tracking a really horrible clashing-with-some-user-configuration bug and want to eliminate potential symbol conflicts. (sldb-get-buffer): Renamed from `get-sldb-buffer'. (slime-emacs-20-p): Renamed from `emacs-20-p'. (slime-defun-if-undefined): Renamed from `defun-if-undefined'. (slime-isearch): Small bugfix that could cause M-. to go to the wrong place in CMUCL. (slime-changelog-date, slime-check-protocol-version): Removed unneeded functions. * swank-backend.lisp (add-hook, run-hook): Added an Emacs-like hook mechanism. The hope is that this will make some sections of the code more self-describing by showing where they hook in. (*new-connection-hook*): Hook run when a new connection is established. Initialized to '(swank-backend:emacs-connected). (*pre-reply-hook*): Hook run before sending a reply to Emacs. * swank.lisp: Added some comments and docstrings. (package-external-symbols): Removed unused function. (serve-connection): Call *new-connection-hook*. (eval-for-emacs): Call *pre-reply-hook*. (sync-features-to-emacs, sync-indentation-to-emacs): Added to *pre-reply-hook*. (cl-package, keyword-package): Now defconstant instead of defvar. Removed the *'s accordingly. * slime.el (slime-abort-connection): Renamed from `slime-connection-abort'. The new name is easier to find with completion. * swank-sbcl.lisp: Change sb-posix:: to sb-posix: 2004-06-19 Luke Gorrie * swank.lisp (known-to-emacs-p): Bugfix. Indentation-updates was broken. 2004-06-18 Luke Gorrie * slime.el (slime-buffer-package): If DONT-CACHE is true and no package name can be found, then default to "COMMON-LISP-USER." Previously we just kept using the cached version, but that could lead to error-after-error if it was incorrect. * swank.lisp (throw-to-toplevel): If our top-level catcher isn't on the stack (i.e. we're using the debugger from outside an RPC) then ABORT instead. That makes 'q' DWIM in SLDB. 2004-06-18 Matthew Danish * swank-allegro.lisp (frame-source-location-for-emacs): Implemented. 2004-06-18 Luke Gorrie * slime.el (slime-repl-return): If the user presses return on old REPL input then take it and insert it as the current input. Signal an error if the point is not on any input. (slime-preserve-zmacs-region): Function to ensure that the current command doesn't deactivate zmacs-region (XEmacs only). (slime-repl-bol, slime-repl-eol): Use it. (slime-kill-all-buffers): Changed buffer-name regexps for XEmacs compatibility. The ",quit" shortcut now works in XEmacs. (slime-display-message): Fixed call to `slime-typeout-message' to handle formatting characters. Avoids errors on certain messages. (slime-list-compiler-notes): Save the window configuration earlier. This fixes an error under XEmacs when dismissing the notes buffer. (slime-recenter-window): Avoid moving the point. This keeps the point in the right place when showing debugger-frame locations in Emacs 21. 2004-06-17 Luke Gorrie * swank-loader.lisp (binary-pathname): Place fasl files under ~/.slime/fasl/ instead of the SLIME installation directory. The installation directory can now be read-only. (binary-pathname, user-init-file): Removed Win32 conditionalization. The init file is now called ~/.swank.lisp instead of ~/_swank.lsp. * swank-lispworks.lisp (with-fairly-standard-io-syntax): New macro. Like with-standard-io-syntax, but keeps the existing values of *package* and *readtable*. (dspec-stream-position): Use it. (quit-lisp): Implemented. 2004-06-16 Helmut Eller * slime.el (slime-set-default-directory): Don't call slime-repl-update-banner in Emacs 20. (slime-show-source-location, slime-recenter-window): Use set-window-start instead of recenter; this avoids flickering. (sldb-list-locals): Don't forget about slime-current-thread in the temporary buffer. (Fixes bug reported by Mike Beedle.) (sldb-step): Re-enabled. The CMUCL backend has rudimentary support for stepping. * swank.lisp (*readtable-alist*): Call backend function for initialization. (eval-for-emacs, guess-buffer-package): Signal a continuable error if a package name was supplied but no such package exists. Not sure if this is better than what we did before (i.e. silently use the current package). * swank-cmucl.lisp (default-directory): Add implementation. (sldb-step): Uncomment it and remove references to *swank-debugger-condition*. * swank-backend.lisp (sldb-step, default-readtable-alist): New backend functions. (emacs-connected): Pass the redirected stream as argument, so that the OpenMCL backend can add it to CCL::*AUTO-FLUSH-STREAMS*. * swank-sbcl.lisp (default-readtable-alist): Implement it. * swank-loader.lisp: Move readtable-alist initialization to swank-sbcl.lisp. * swank-allegro.lisp (default-directory, call-with-syntax-hooks): Add implementations as workarounds for ACL5 bugs. 2004-06-16 Lawrence Mitchell * slime.el (slime-maybe-rearrange-inferior-lisp): Call `generate-new-buffer-name' manually, rather than relying on the UNIQUE argument to `rename-buffer' to do so. 2004-06-16 Frederic Brunel * slime.el (slime-startup-animation): Use defcustom to declare the variable. (slime-enable-startup-animation-p): Deleted. 2004-06-16 Robert Lehr * slime.el (slime-backend): This variable can now be set to an absolute filename. 2004-06-15 Luke Gorrie * slime.el (slime-compile-file): Just prompt for saving the current file instead of calling `save-some-buffers'. Based on a patch from Brian Downing. 2004-06-12 Helmut Eller * wank-allegro.lisp (format-sldb-condition, condition-references): Add workarounds for buggy no-applicable-method. * swank.lisp (parse-symbol, parse-package): Handle reader errors. * swank-openmcl.lisp (send, receive): Ensure that messages are never nil. 2004-06-10 Christophe Rhodes * swank-sbcl.lisp (call-with-syntax-hooks): Add hooks to fix "SB!"-style package names. (shebang-readtable): Return a readtable with readermacros needed to parse SBCL sources. * swank.lisp (with-buffer-syntax): New macro. This should be used for code which needs to READ code from Emacs buffers. *package* and *readtable* are bound suitable values. (to-string, format-values-for-echo-area, interactive-eval) (eval-region, interactive-eval-region, re-evaluate-defvar) (swank-pprint, pprint-eval, listener-eval) (compile-string-for-emacs, disassemble-symbol, describe-to-string) (describe-symbol, describe-function) (describe-definition-for-emacs) (documentation-symbol, init-inspector, inspect-nth-part) (inspector-pop, inspector-next, describe-inspectee) (inspect-current-condition): Use it. 2004-06-10 Helmut Eller * swank-loader.lisp: Initialize swank::*readtable-alist* for SBCL. * swank-backend.lisp (default-directory, call-with-syntax-hooks): New functions. * swank.lisp (*readtable-alist*): New configurable. The keys are package name and the values readtables. The readtable will be used to READ code originating from Emacs buffers in the associated slime-buffer-package. (drop-thread): Simplified. (*buffer-readtable*): New variable. (parse-package): New function. (parse-string): Renamed from symbol-from-string. Make it case insensitive. (eval-for-emacs): Initialize the *buffer-readtable*. (symbol-indentation): Don't consider symbols in the CL package. Emacs already knows how to indent them. (compile-file-if-needed): Used for REPL shortcut 'compile-and-load'. * slime.el (pwd): Re-add REPL shortcut. (slime-repl-push-directory, slime-repl-compile-and-load): Simplified. 2004-06-10 Luke Gorrie * slime.el (sldb-step): Command is disabled because the function `swank:sldb-step' that it calls doesn't exist. I don't see any stepping code in our backends. 2004-06-09 Helmut Eller * slime.el (slime-goto-location-position) [:function-name]: The function name can also occur after a ?(, not only after whitespace. * (slime-init-output-buffer): Initialize the package stack. Reported by Rui Patrocínio. * (slime-completions): Make it consistent with slime-simple-completions. The second argument was never supplied. Reported by Rui Patrocínio. 2004-06-09 Eric Blood * slime.el (slime-indent-and-complete-symbol): Renamed from slime-repl-indent-and-complete-symbol. (slime-typeout-frame-properties): Add more default options for the typeout frame--specifically it now has a default width, and moves the typeout frame to the upper right. 2004-06-09 Andras Simon * swank-abcl.lisp: New backend for Armed Bear Common Lisp. * swank-loader.lisp: Add ABCL support. 2004-06-09 Martin Simmons * swank-lispworks.lisp (dspec-stream-position): New function to make source location work for anything complicated e.g. methods. (with-swank-compilation-unit): Refactoring. (who-macroexpands): Implemented. (list-callers): Implemented. * swank-backend.lisp (network-error): Inherit from simple-error to get correct initargs. 2004-06-09 Luke Gorrie * slime.el (sldb-insert-references): Added support for hyperlinked references as part of conditions being debugged. This is a new feature in SBCL to reference appropriate sections of their manual or CLHS from condition objects. The references are clickable. * swank-backend.lisp (format-sldb-condition): New backend function to format conditions for SLDB. (condition-references): New function to return a list of documentation references associated with a condition. * swank.lisp (debugger-condition-for-emacs): Call the above backend functions to add a `references' list for Emacs. * swank-sbcl.lisp (format-sldb-condition, condition-references): Implemented. Requires a recent (latest?) SBCL release. 2004-06-08 Luke Gorrie * swank-cmucl.lisp (close-socket): Remove any SERVE-EVENT handlers for the socket's file descriptor. * swank-sbcl.lisp (close-socket): Same fix. 2004-06-07 Luke Gorrie * swank-cmucl.lisp: Minor refactorings. 2004-06-07 Edi Weitz * swank-allegro.lisp (call-with-compilation-hooks): Implemented. Wrap IMPORT call in EVAL-WHEN. * swank.lisp, swank-backend.lisp: Wrap EXPORT calls in EVAL-WHEN. Fixes many warnings in ACL. 2004-05-25 Luke Gorrie * slime.el (slime-kill-without-query-p): Default to T. (sldb-highlight): Variable to control face-based highlighting of SLDB locations. (In Emacs21 the point is visible even in unselected windows, which is sufficient for me.) (sldb-show-location-recenter-arg): Argument to `recenter' when showing SLDB locations. Default to nil, i.e. location appears in the middle of the window. 2004-05-24 Helmut Eller * slime.el (slime-input-complete-p): Return nil for unbalanced sexps starting with quote ?', backquote ?`, or hash ?#. C-j can be used for more complicated cases. 2004-05-22 Marco Baringer * slime.el (slime-repl-sayoonara): Added "quit" as an alias for sayoonara. 2004-05-22 Helmut Eller * swank-cmucl.lisp (arglist): Catch (reader) errors in READ-ARGLIST. * swank-allegro.lisp (fspec-primary-name): New function. (find-fspec-location): Use it, if the start position cannot be found. * slime.el (slime-pprint-event): New function. (slime-log-event): Use it. (slime-reindent-defun): Indent the form after point, if point is in the first column an immediately before a #\(. 2004-05-21 Bill Clementson * slime.el (slime-switch-to-output-buffer): Use "P" as interactive spec. 2004-05-21 Helmut Eller * slime.el (slime-switch-to-output-buffer): Override the prefix-arg if we are called non-interactively. (slime-repl-current-input): Don't add newlines. (slime-repl-return): Send input if we are in read-mode also if it isn't a complete expression. (repl-read-lines): New test case. (slime-enable-startup-animation-p): New configurable. (slime-repl-update-banner): Use it. (slime-hide-inferior-lisp-buffer): New function. Reuse the *inferior-lisp* buffer window for the SLIME REPL. * swank-allegro.lisp (find-fspec-location): Better handling of methods. From Bill Clementson. 2004-05-17 Luke Gorrie * xref.lisp, swank-clisp.lisp: Renamed XREF package to PXREF (P for portable). This makes it possible to load the package in e.g. CMUCL, which is nice because it's a good package. * swank-cmucl.lisp: Some refactoring and high-level commenting. Mostly just trying to organise things into fairly self-contained sections (my new hobby, sad I know!) * slime.el: Added `C-c C-e' as an alternative binding for `slime-interactive-eval' (usually `C-c :'). This seems slightly more convenient, and has the added bonus of clobbering an unwanted `inf-lisp' binding. 2004-05-14 Marco Baringer * slime.el (slime-with-output-to-temp-buffer): Now takes a package arg specifying what slime-buffer-package should be in the generated buffer. (slime-show-description): actually pass the package arg. (slime-show-apropos): pass the package arg to slime-with-output-to-temp-buffer. (slime-list-repl-shortcuts): pass a package arg. 2004-05-12 Alan Ruttenberg * swank-openmcl.lisp: Fixes to support openmcl 0.14.2 changes in backtrace protocol, from Gary Byers. - Replace string "tcr" to "context". - Change the call to %current-tcr in map-backtrace to get-backtrace-context, defined so as to be back compatible with 0.14.1. - Change the call to %catch-top to explicitly use %current-tcr instead of the passed in tcr-which-is-now-called-context. Users of map-backtrace (outside of slime code) note: The tcr position in the function call is now occupied by the backtrace "context" which is always nil. If you really need the tcr then you need to call %current-tcr yourself now. Gary comments: The part that's a little hard to document about the new "context" stuff - used to walk the stacks of thread A from thread B - is that thread B has to be aware of when a context becomes invalid (a context describing part of thread A's stack is valid while thread A's sitting in a break loop and becomes invalid as soon as it exits that break loop.) A thread sort of announces when a context becomes valid and when it becomes invalid; whether and how SWANK could hook into that isn't yet clear. * swank-openmcl.lisp: Minor changes to backtrace display: Anonymous functions names in function position surrounded by #<>. Use prin1 instead of princ to print function arguments (so strings have "s around them). prefix symbol and list arguments by "'" to make them more look like a valid function call. Let me know if you don't like this... 2004-05-12 Luke Gorrie * slime.el: Fixes for outline-mode in *slime-events* from Edi Weitz. 2004-05-11 Helmut Eller * slime.el (slime-events-buffer): Disable outline-mode by default. (slime-inhibit-ouline-mode-in-events-buffer): New variable. (slime-expected-failures): Reduce the number for SBCL. * swank-sbcl.lisp (resolve-note-location): Resolve the location if we are called by swank-compile-string. The pathname argument is never :stream in SBCL, so the method written for CMUCL was never called. 2004-05-10 Luke Gorrie * swank.lisp (from-string): Bind *READ-SUPPRESS* to NIL. (swank-compiler): Bind a restart to abort compilation but still report the compiler messages already trapped. (string-to-package-designator): Function that uses READ to case-convert package names. (apropos-list-for-emacs): Use it. * slime.el (slime-eval-with-transcript): Don't print the "=>" prefix in messages showing evaluation results. It mucks up alignment in multi-line messages. (sldb-eval-in-frame): Don't print "==>" prefix on evaluation results, for the same reason. (slime-show-source-location): Move the point to the source location in addition to highlighting the matching parens. 2004-05-08 Helmut Eller * swank-cmucl.lisp (find-definitions): Add support for variables and constants. 2004-05-07 Helmut Eller * swank-clisp.lisp (compiler-note-location): Use make-location to instead of `(:location ...). This initializes the new hint slot automatically. 2004-05-07 Barry Fishman * swank.lisp (prin1-to-string-for-emacs, arglist-to-string): CVS CLISP prints NIL as |COMMON-LISP|::|NIL| if *print-readably* is true. Set *print-readably* to nil for a more Emacs friendly printer syntax. 2004-05-06 Helmut Eller * slime.el (slime-maybe-list-compiler-notes): Display the notes listing after C-c C-c only if there are no annotations in the buffer. CMUCL creates usually one warning with an error location and an almost redundant warning without at the end of the compilation unit. Don't display the listing in this common case. (slime-reindent-defun): Pass nil as the third arument to indent-region. 2004-05-06 Marco Baringer * slime.el (slime-repl-sayoonara): Don't attempt to quit the lisp if we're not connected. * swank-openmcl.lisp (*buffer-offset*, *buffer-name*): Supply default values. This avoids unbound value errors when compiling an asdf system signals errors. 2004-05-04 Alan Shutko * slime.el (slime-compiler-notes-show-details/mouse): New command. (slime-compiler-notes-mode-map): Use it. 2004-05-04 Helmut Eller * swank-cmucl.lisp (arglist): Handle byte-code functions better. We don't know much about the actual argument list, only the number of arguments. Return at least something mildly interesting like (arg0 arg1 &optional arg2 ...) (function-location): Special-case byte-code functions. * swank-backend.lisp (with-struct): New macro. 2004-05-04 Thomas F. Burdick * slime.el (slime-reindent-defun): New command on C-M-q. Reindent the current Lisp defun after trying to close any unmatched parenthesis. If used within a comment it just calls fill-paragraph. 2004-05-04 Luke Gorrie * slime.el (slime-goto-location-position): Regexp fix. (slime-reindent-defun): New command on M-q. Reindent the current Lisp defun after trying to close any unmatched parenthesis. * swank.lisp: Remove (declaim (optimize ...)). The side-effect this has on people's environment seems harmful (I saw someone having trouble on the OpenMCL list). * swank-cmucl.lisp (source-location-from-code-location): Fixed a bug where the source-file-cache was not really used. Now always report the location based on source file (cached or not) even if modified -- not falling back on regexps, which was probably a misfeature. * slime.el: Remove `slime-cleanup-definition-refs'. 2004-05-02 Helmut Eller * slime.el (slime-start-and-load): New command. Suggested by Lars Magne Ingebrigtsen. 2004-05-02 Lars Magne Ingebrigtsen * slime.el (slime-kill-without-query-p): New variable. (slime-net-connect): Use it. (slime-open-stream-to-lisp): Ditto. (slime-maybe-start-lisp): Ditto. 2004-05-02 Luke Gorrie * slime.el (slime-goto-source-location): Added support for the :snippet "hint" in a location specifier. If Lisp sends the (initial) source text for the definition then Emacs isearches for it in both directions from the given character position. This makes M-. robust when the Emacs buffer has been edited. Requires backends to provide this snippet information. (slime-goto-location-position): Tightened up the regular expressions for :function-name style location search. (slime-cleanup-definition-refs): New function to do a little post-processing on definition references from Lisp. Mostly this is a hack: if POSITION is NIL then we fill it in with the function name, ready for regexp search. I was in a hurry and it was easier to do here, and it doesn't seem entirely unreasonable. * swank-backend.lisp (:location): Added a 'hints' property list to the location structure. This is for extra information that compliments the buffer/position. * swank-cmucl.lisp (code-location-stream-position): Position the argument stream at the definition before returning. (source-location-from-code-location): Include the :snippet hint for Emacs (see above). The snippet will only be accurate provided that the source file on disk has not been modified. (*source-file-cache*) The contents of all source files consulted for M-. are now cached if they match the version of the running code. This is so that we can accurately lookup source locations even when the file is modified, provided we manage to get the right version (by file timestamp) at least once. (source-location-from-code-location): If the right source version is not available on disk or in our cache then let Emacs fall back on a regular expression search. 2004-05-01 Helmut Eller * swank-lispworks.lisp (find-top-frame): New function used to hide debugger-internal frames. (call-with-debugging-environment): Use it. 2004-05-01 Luke Gorrie * slime.el (sldb-abort): Print a message if the Emacs RPC returns. It shouldn't, if ABORT manages to unwind the stack, but it currently does in OpenMCL due to some bug. (slime-edit-definition-fallback-function): Name of a function to try if the builtin edit-definition finding fails. You can set this to `find-tag' to fall back on TAGS. * swank.lisp (list-all-systems-in-central-registry): Use explicit :wild in pathname for matching (needed in at least SBCL). * swank-openmcl.lisp: Removed obsolete `swank-compile-system'. * swank-sbcl.lisp: Removed obsolete `swank-compile-system'. Removed some stale comments about supported features. 2004-04-30 Helmut Eller * slime.el (slime-repl-update-banner): Don't print the working directory. It rarely fits in a line and was only Emacs' default-directory. M-x pwd is convenient enough. * swank.lisp (symbol-indentation): Don't infer indentation for symbols starting with 'def' or 'with-'. It was wrong most of the time and Emacs' defaults are better. * swank-lispworks.lisp (emacs-connected): Add methods to stream-soft-force-output for socket-streams and slime-output-streams. This flushes those streams automatically (i assume it gets called when Lisp is idle). 2004-04-29 Helmut Eller * slime.el (slime-repl-mode): Set slime-current-thread to :repl-thread. * swank.lisp (thread-for-evaluation, dispatch-event): Accept :repl-thread as thread specifier and dispatch evaluation and interrupt request properly. (repl-thread-eval, repl-eval): Deleted. We do the special casing in thread-for-evaluation. 2004-04-29 Lars Magne Ingebrigtsen * slime.el (slime-event-buffer-name): New variable. (slime-events-buffer): Use it. (slime-space-information-p): Ditto. (slime-space): Use it. (slime-reply-update-banner-p): Ditto. (slime-repl-update-banner): Use it. 2004-04-28 Helmut Eller * swank-loader.lisp (*lisp-name*): Add versioning support for CLISP. * swank-clisp.lisp (arglist): Trap exceptions and return :not-available in that case. * swank.lisp (arglist-for-insertion): Don't use ~< ..~:@>. CLISP's pretty printer can't handle it. 2004-04-28 Luke Gorrie * NEWS: Created a NEWS file for recording changes that we want users to read about. * slime.el (slime-log-event): Use outline-minor-mode in *slime-events* instead of hideshow-mode. It's more reliable. (Patch from Lawrence Mitchell.) 2004-04-28 Helmut Eller * slime.el (slime-net-connect): Bind inhibit-quit to nil, so that we have a chance to interrupt Emacs if open-network-stream blocks. (slime-complete-maybe-restore-window-configuration): Keep trying after slime-repl-indent-and-complete-symbol. (slime-space): Don't close the completion buffer. We don't know the window-config before the completion, so leave the buffer open. * swank.lisp (create-server): New keyword based variant to start the server in background. (setup-server): Add support to keep the socket open for single-threaded Lisps. 2004-04-27 Luke Gorrie * doc/slime.texi (Other configurables): Updated instructions on globally installing SLDB on *debugger-hook*. * slime.el (slime-log-event): Better bug-avoidance with hs-minor-mode. Hopefully XEmacs users can rest safely now. (slime-prin1-to-string): Bind `print-escape-newlines' to nil. (slime-set-connection-info): Commented out call to `slime-check-protocol-version'. Let's see how we do without it. (slime-oneway-eval): Removed unused function. * swank.lisp (oneway-eval-string): Removed unused function. 2004-04-26 Luke Gorrie * swank.lisp: Move definition of `with-io-redirection' above `with-connection' to avoid a CLISP error. This is really weird. (interactive-eval): Bind *package* to *buffer-package*, so that `C-x C-e' and related commands evaluate in the expected package. * slime.el (sldb-insert-frames): Handle empty backtrace (I got one in CLISP). * swank-allegro.lisp (arglist): Return :not-available if arglist lookup fails with an error. * slime.el: Moved snippets of Common Lisp code into swank.lisp from the thread control panel. (Remember, no CL code in slime.el!) * swank-loader.lisp (*lisp-name*): Include a short version number in the Lisp name to separate FASL files for different versions. Only implemented for CMUCL and SBCL sofar. * swank.lisp (ed-in-emacs): Avoid mutating the argument. (spawn-repl-thread): Add a new thread for evaluating REPL expressions. This same thread is used for all REPL evaluation. This fixes some issues with variables like * and ** in at least SBCL. * nregex.lisp: Typo fix (thanks Barry Fishman). * slime.el (slime-events-buffer): Don't use hideshow-mode in XEmacs for the *slime-events* buffer. It causes obscure problems for some users. Still used in GNU Emacs. 2004-04-25 Helmut Eller * swank-backend.lisp (arglist): Return a list or :not-available. Don't return strings or raise exceptions. * swank.lisp (arglist-for-echo-area): Simplified and adapted for the new semantic of ARGLIST. (arglist-for-insertion): Now a separate function. (read-arglist): Deleted. No longer needed. * swank-cmucl.lisp, swank-lispworks.lisp (arglist): Return :not-available if the arglist cannot be determined. * slime.el (slime-set-connection-info): Hide the *inferior-lisp* buffer here, so that we have all the buffer rearrangement in one place. (slime-insert-arglist): Use swank:arglist-for-insertion. 2004-04-24 Helmut Eller * slime.el (slime-init-connection-state): Use an asynchronous RPC instead of slime-eval to reduce the amount of work we do in the timer function. We can remove the workaround for the timer problem. 2004-04-23 Luke Gorrie * slime.el: Updated top comments. Make SLIME faces inherit from their font-lock cousins properly. (slime-connect): Bind `slime-dispatching-connection' to avoid being confused by old buffer-local variables when initializing the connection. This fixes a bug where doing `M-x slime' from the REPL could give a "Not connected" error. 2004-04-22 Edi Weitz * slime.el (slime-read-system-name): Perform completion on all systems in the central registry. * swank.lisp (list-all-systems-in-central-registry): New function. 2004-04-22 Helmut Eller * slime.el (slime-repl-update-banner): Add workaround to force the proper behavior of the the first command in the REPL buffer. (slime-repl-shortcut-history): Define the variable to make XEmacs happy. 2004-04-22 Tiago Maduro-Dias * slime.el (slime-space): Cleanup. (slime-complete-restore-window-configuration): Use slime-close-buffer instead of bury-buffer. 2004-04-21 Helmut Eller * slime.el: Suppress byte-compiler warnings by binding byte-compiler-warnings to nil. (slime-repl-shortcut): Use a structure instead of a list for the short cut info. Update the users accordingly. * swank-cmucl.lisp (arglist): Return a list instead of the string. 2004-04-21 Edi Weitz * slime.el (slime-apropos): Add support for regexp-based apropos. We use nregex, so the regexp syntax is different from Emacs' regexps and bit restricted (alternation '|' and optional groups '(xy)?' are not implemented). (slime-insert-arglist): New command - stolen from ILISP. I always thought this was quite useful. (slime-oos): Fix typo. * swank.lisp (apropos-symbols): Use regexp and support case-sensitive matching. (arglist-for-echo-area): New argument to control if the operator name should be included. * nregex.lisp: New file. * swank-loader.lisp (*sysdep-pathnames*): Load it. 2004-04-21 Helmut Eller * doc/slime.texi (Compilation): slime-remove-notes is bound to C-c M-c not M-c. Noted by Edi Weitz. 2004-04-21 Edi Weitz * swank.lisp (list-all-package-names): Optionally include nicknames in the result. * slime.el (slime-read-package-name): Include nicknames in the completions set. (slime-repl-mode-map): Bind C-c : to slime-interactive-eval just like in most other SLIME buffers. (read-directory-name): Compatibilty defun. 2004-04-20 Tiago Maduro-Dias * slime.el (slime-close-buffer): New utility function. (slime-space): Use it to kill superfluous *Completions* buffers. 2004-04-17 Raymond Toy * swank-cmucl.lisp (source-location-tlf-number) (source-location-form-number): New functions to extract the encoded form-numbers from source locations. (resolve-stream-source-location, resolve-file-source-location): Use them. 2004-04-17 Helmut Eller * slime.el (slime-merge-notes): Use mapconcat instead of (concat (slime-intersperse (mapcar ....))) (slime-intersperse): Handle empty lists. 2004-04-16 Luke Gorrie * doc/Makefile: Added 'install' and 'uninstall' targets for the Info manual. It may be necessary to tweak `infodir' in the Makefile to suit the local system before installing. (Patch from from Richard M Kreuter.) * doc/slime.texi (Top): The Top node is now smaller, with details moved into Introduction. This makes the Info front page easier to navigate. (Patch from Richard M Kreuter.) 2004-04-15 Ivan Boldyrev * slime.el (slime-handle-repl-shortcut): Call `completing-read' with an alist as expected, using `slime-bogus-completion-alist'. 2004-04-14 Luke Gorrie * doc/slime.texi (Shortcuts): Described REPL shortcuts. * slime.el (slime-oos): Generic ASDF interface. (force-compile-system, compile-system, load-system, force-load-system): New REPL commands. * swank-backend.lisp (operate-on-system): More generic interface to ASDF. * swank.lisp (operate-on-system-for-emacs): More generic interface to ASDF. * slime.el (slime-repl-mode-map): Portability fix for definition of the REPL command character. (slime-maybe-rearrange-inferior-lisp): Bugfix for running multiple inferior lisps. 2004-04-13 Marco Baringer * slime.el (slime-handle-repl-shortcut, slime-list-all-repl-shortcuts, slime-lookup-shortcut, defslime-repl-shortcut): Refactor repl shortcut code to provide a more leggible help. 2004-04-09 Lawrence Mitchell * slime.el (slime-same-line-p): Use `line-end-position', rather than searching for a newline manually. (slime-repl-defparameter): Use VALUE, not VALUE-FORM. 2004-04-08 Marco Baringer * slime.el (slime-repl-package-stack): New buffer local variable. (slime-repl-directory-stack): New buffer local variable. (slime-repl-command-input-complete-p): Remove. (slime-repl-update-banner): New function. (slime-init-output-buffer): Use slime-repl-update-banner. (slime-repl-shortcut-dispatch-char): New variable. (slime-repl-return): Don't check for repl commands anymore. (slime-repl-send-repl-command): Remove. (slime-repl-mode-map): Bind slime-repl-shortcut-dispatch-char to slime-handle-repl-shortcut. (slime-set-default-directory): Use read-directory-name, call slime-repl-update-banner. (slime-repl-shortcut-table): New global variable. (slime-handle-repl-shortcut): New function. (defslime-repl-shortcut): New macro for defining repl shortcuts. (slime-repl-shortcut-help, "change-directory", slime-repl-push-directory, slime-repl-pop-directory, "change-package", slime-repl-push-package, slime-repl-pop-package, slime-repl-resend, slime-repl-sayoonara, slime-repl-defparameter, slime-repl-compile-and-load): New repl shortcuts. (slime-kill-all-buffers): Kill sldb buffers as well. * swank.lisp: Remove the repl related functions. (requires-compile-p): New function. 2004-04-07 Lawrence Mitchell * slime.el (slime-repl-prompt-face): New face. (slime-repl-insert-prompt): Use it. (slime-with-chosen-connection, with-struct): Docstring fix for function's arglist display. (when-let, slime-with-chosen-connection, with-struct): Docstring fix for function's arglist display. (slime-read-package-name): Use `slime-bogus-completion-alist' to construct completion table. (slime-maybe-rearrange-inferior-lisp): Use `rename-buffer's optional argument to rename uniquely. (slime-check-connected): Display keybinding for `slime' via `substitute-command-keys'. (slime-repl-send-repl-command): Use whitespace character class in regexp. (slime-autodoc-stop-timer): New function. (slime-autodoc-mode): Add `interactive' spec to specify optional arg. This allows prefix toggling of mode (behaves more like most Emacs modes now). Stop timer if switching mode off with `slime-autodoc-stop-timer'. (slime-autodoc-start-timer, slime-complete-symbol) (slime-complete-saved-window-configuration) (slime-insert-balanced-comments): Docstring fix. (slime-ed): Call `slime-from-lisp-filename' on filename for list case of argument. (slime-insert-transcript-delimiter, slime-thread-insert): Use ?\040 to indicate SPC. (line-beginning-position): `forward-line' always puts us in column 0. (line-end-position): Define if not fboundp (for older XEmacs). 2004-04-07 Peter Seibel * swank-allegro.lisp (set-default-directory): Allegro specific version that also uses excl:chdir. * swank.lisp (swank-pprint): Add swank versions of two missing pretty-printer control variables. 2004-04-07 Luke Gorrie * swank.lisp (completion-set): Also complete package names. (Patch from Sean O'Rourke.) (find-matching-packages): Add a ":" to the end of package names in completion. 2004-04-06 Luke Gorrie * slime.el (slime-bytecode-stale-p): Automatically check if slime.elc is older than slime.el and try to help the user out if so. 2004-04-06 Marco Baringer * slime.el (slime-repl-command-input-complete-p): New function. (slime-repl-send-string): New optional arg specifying what string to put on slime-repl-input-history, usefull when this string differs from what we actually want to eval. (slime-repl-return): Check for repl commands and pass then to slime-repl-send-repl-command. (slime-repl-send-repl-command): New function. (slime-kill-all-buffers): New function. * swank.lisp: Define the various repl command handlers: sayoonara, cd, pwd, pack and cload. * swank-backend.lisp (quit-lisp): Define as part of the backend interface and export. * swank-sbcl.lisp, swank-openmcl.lisp, swank-cmucl.lisp, swank-clisp.lisp, swank-allegro.lisp (quit-lisp): implement. 2004-04-06 Luke Gorrie * swank.lisp (macro-indentation): Check that the arglist is well-formed. This works around a problem with ACL returning arglists that aren't real lambda-lists. 2004-04-05 Lawrence Mitchell * swank.lisp (*swank-pprint-circle*, *swank-pprint-escape*) (*swank-pprint-level*, *swank-pprint-length*): Fix typo in docstring. * slime.el (slime-arglist): Don't `message' arglist directly, in case it contains %-signs. (slime-repl-output-face): Fix quoting. (slime-symbol-at-point): Call `slime-symbol-name-at-point', rather than ourselves. (slime-check-protocol-version): Docstring fix. 2004-04-05 Luke Gorrie * doc/slime.texi (Semantic indentation): Documented new automatically-learn-how-to-indent-macros feature. Added auto version control header in subtitle. * slime.el (slime-close-parens-at-point): New command bound to C-a C-a. Inserts close-parenthesis characters at point until the top-level form becomes well formed. Could perhaps be made fancier. (slime-update-indentation): New command to update indentation information (`common-lisp-indent-function' properties) based on macro information extracted from Lisp. This happens automatically, the command is just to force a full rescan. * swank.lisp (connection): Added slots to track indentation caching. (*connections*): List of all open connections. (default-connection): Function to get a "default" connection. This is intended to support globally using the debugger hook outside the context of a SLIME request, which is broken at present. (with-connection): Don't setup a restart: that must be done separately. (sync-state-to-emacs): Call `update-connection-indentation'. (update-connection-indentation): Automatically discover how to indent macros and tell Emacs. * swank-backend.lisp (arglist): Specify that strings returned from ARGLIST should be READable. 2004-04-02 Helmut Eller * slime.el (slime-maybe-list-compiler-notes): Display the notes for C-c C-c, when there are notes without a good source-location. 2004-04-01 Helmut Eller * swank-sbcl.lisp: Remove the non-working workarounds for non-existent fcntl. Reported by Brian Mastenbrook. (preferred-communication-style): Use multithreading if futexes are available, sigio if fcntl is present, and fd-handlers otherwise. (resolve-note-location): Don't try to construct a source-location if there's no context. Notes without location will be displayed in the note-listing buffer. 2004-04-01 Bill Clementson * swank-allegro.lisp (send): Fix misplaced parens. 2004-03-31 Helmut Eller * swank-cmucl.lisp (debug-function-arglist): Return symbols if possible. (class-location): Support for experimental source-location recording. 2004-03-30 Helmut Eller * slime.el (slime-repl-result-face): New face. (slime-inspector-mode-map): Add a binding for M-. (compile-defun): Add test case for escaped double quotes inside a string. * swank.lisp (ed-in-emacs): New allowed form for argument. (pprint-eval-string-in-frame): Apply arguments in proper order. * swank-cmucl.lisp (method-dspec): Include method-qualifiers. (class-definitions): Renamed from struct-definitions. Try to locate condition-classes and PCL classes (in the future). (debug-function-arglist): Insert &optional, &key, &rest in the right places. (form-number-stream-position): Make it a separate function. 2004-03-29 Lawrence Mitchell * swank.lisp (ed-in-emacs): New allowed form for argument. * slime.el (slime-ed): Deal with list form of argument. For a list (FILENAME LINE [COLUMN]), visit the correct line and column number. 2004-03-29 Helmut Eller * swank-source-path-parser.lisp (cmucl-style-get-macro-character): New function. Workaround for bug(?) in SBCL. (make-source-recording-readtable): Use it. 2004-03-29 Luke Gorrie * HACKING: Some small updates (more needed). * slime.el (slime-inspector-buffer): Enter `slime-inspector-mode' after `slime-mode'. This seems to give priority of keymap to the inspector, so that it can override SPC. (slime-easy-menu): Add slime-switch-to-output-buffer. Enable SLIME menu in the REPL buffer. (slime-symbol-name-at-point): Avoid mistaking the REPL prompt for a symbol. (slime-words-of-encouragement): A few new ones. (slime-insert-xrefs): Removed the final newline from XREF buffers. This helps to avoid unwanted scrolling. * doc/slime.texi: Added a section about user-interface conventions and our relationship with inf-lisp. 2004-03-27 Helmut Eller * slime.el (slime-changelog-date): Reinitialize it at load-time. This avoids the need to restart Emacs (horror!) after an update. * swank-cmucl.lisp (debug-function-arglist): Properly reconstruct the arglist from the debug-info. (Not complete yet.) (arglist): Use it. * swank-lispworks.lisp (spawn): Remove CL symbols from mp:*process-initial-bindings*, to avoid the irritating behavior for requests executed in different threads. E.g., when someone tries to set *package*. * swank.lisp (*log-io*): New variable. Bind it to *terminal-io* at load-time, so we can log to a non-redirected stream. (disassemble-symbol): Allow generalized function names. (apropos-symbols): Handle the PACKAGE argument properly to get useful output for C-c P. * slime.el (slime-repl-indent-and-complete-symbol): New command. Bound to TAB in the REPL mode. First try to indent the current line then try to complete the symbol at point. (slime-dispatch-event): Ignore a unused thread variable to keep XEmacs' byte compiler quiet. * swank-sbcl.lisp (enable-sigio-on-fd): Use sb-posix::fcntl instead of sb-posix:fcntl to avoid the ugly reader hack. SBCL doesn't have package locks and even if they add locks in the future sb-posix::fcntl will still be valid. (getpid): Use defimplementation instead of defmethod. (function-definitions): Take generalized function names ala '(setf car)' as argument. 2004-03-26 Luke Gorrie * slime.el (slime-group-similar): Bugfix: return NIL if the input list is NIL. (slime-inspector-buffer): Enter `slime-inspector-mode' after `slime-mode'. This seems to give priority of keymap to the inspector, so that it can override SPC. 2004-03-26 Bjørn Nordbø * swank.lisp (print-arglist): Updated to handle arglists with string elements, causing arglists for macros to display properly in LW 4.1. 2004-03-26 Marco Baringer * swank-cmucl.lisp (set-default-directory): Define only once; define with defimplementation, not defun. 2004-03-26 Luke Gorrie * slime.el (slime-merge-notes-for-display): New function to merge together compiler notes that refer to the same location. This is an optimization for when there are a lot of compiler notes: `slime-merge-note-into-overlay' concat'd messages together one by one in O(n^2) time/space, and became noticeably slow in practice with ~100 notes or more. (slime-tree-insert): This function is now automatically byte-compiled (good speed gain). Wrap byte-compilation in `save-window-excursion' to avoid showing an unwanted warnings buffer (in XEmacs). 2004-03-25 Bjørn Nordbø * swank-lispworks.lisp: (create-socket, set-sigint-handler) (who-references, who-binds, who-sets): Add backward compatibility for LW 4.1. (dspec-buffer-position): Fix inappropriate use of etypecase. 2004-03-24 Luke Gorrie * swank-sbcl.lisp (getpid): Use sb-posix:getpid. * slime.el (slime-inspector-mode-map): Added SPC as extra binding for slime-inspector-next (like info-mode). * doc/slime.texi: Added completion style and configuration. 2004-03-23 Alan Shutko * swank-clisp.lisp (set-default-directory): New function. 2004-03-23 Helmut Eller * swank-allegro.lisp (send): Wait a bit if there are already many message in the mailbox. * swank-clisp.lisp (xref-results): Use fspec-location instead of the of fspec-source-locations. Reported by Alan Shutko. (break): Be friendly to case-inverting readtables. * swank-lispworks.lisp (emacs-connected): Add default method to environment-display-notifier. Reported by Bjørn Nordbø. (set-default-directory, who-specializes): Implemented for Lispworks. (gfp): New function. (describe-symbol-for-emacs, describe-definition): Distinguish between ordinary and generic functions. (call-with-debugging-environment): Unwind a few frames. Looks better and avoids the problems with the real topframe. (interesting-frame-p): Use Lispworks dbg:*print-xxx* variables to decide which frames are interesting. (frame-actual-args): New function. (print-frame): Use it. * swank.lisp (open-streams, make-output-function): Capture the connection not only the socket. This way the streams can be used from unrelated threads. Reported by Alain Picard. (create-connection): Factorized. Initialize the streams after the connection is created. (initialize-streams-for-connection, spawn-threads-for-connection): New functions. (with-connection): Fix quoting bug and move upwards before first use. (guess-package-from-string): Add kludge for SBCL !-package names. (apropos-list-for-emacs): Lispworks apparently returns duplicates; remove them. (inspect-object): Princ the label to allow strings and symbols. (send-output-to-emacs): Deleted. (defslimefun-unimplemented): Deleted. Was unused. * slime.el (slime-easy-menu): Add some more commands. (slime-changelog-date): New variable. Initialized with the value returned by the function of the same name. This detects incompatible versions if Emacs has not been restarted after an upgrade. (slime-check-protocol-version, slime-init-output-buffer): Use it. (slime-events-buffer, slime-log-event): Use fundamental mode instead of lisp-mode to avoid excessive font-locking for messages with lots of strings. 2004-03-22 Luke Gorrie * doc/slime.texi: New user manual. * swank.lisp (*communication-style*): New name for *swank-in-background*. Exported configuration variables: *communication-style*, *log-events*, *use-dedicated-output-stream*. 2004-03-20 Julian Stecklina * swank-sbcl.lisp (+o_async+, +f_setown+, +f_setfl+): Add correct constants for FreeBSD. 2004-03-19 Alan Shutko * swank.lisp, swank-loader.lisp: Take into account `pathname-device' when deriving paths. A fix for Windows. 2004-03-19 Luke Gorrie * slime.el (slime-connected-hook): New hook called each time SLIME successfully connects to Lisp. This is handy for calling `slime-ensure-typeout-frame', if you want to use that feature. (sldb-print-condition): New command to print the SLDB condition description into the REPL, for reference after SLDB exits. Can be called from `sldb-hook' if you want the condition to always be printed. Bound to 'P' in SLDB. 2004-03-18 Helmut Eller * swank.lisp (format-values-for-echo-area): Bind *package* to *buffer-package*. (load-system-for-emacs): Renamed from swank-load-system. (carefully-find-package): Be friendly to case inverting readtables. (inspect-current-condition): New function. * swank-backend.lisp, swank-cmucl.lisp (set-default-directory): New backend function. * swank-allegro.lisp, swank-clisp.lisp, swank-lispworks.lisp, swank-sbcl.lisp (swank-compile-string): Be friendly to case-inverting readtables. * slime.el (sldb-inspect-condition): Use swank:inspect-current-condition. (slime-inspector-label-face): Make it bold by default. (slime-check-protocol-version, slime-process-available-input): Wait 2 secs after displaying the error message. (sldb-list-catch-tags, sldb-show-frame-details): Display catch tags as symbols not as strings. 2004-03-16 Helmut Eller * slime.el (slime-dispatch-event, slime-rex): Pass a form instead of a string with :emacs-rex. (slime-connection-name): New connection variable. Use it in various places instead of slime-lisp-implementation-type-name. * swank.lisp: Better symbol completion for case-inverting readtables. (Thanks Thomas F. Burdick for suggestions.) (output-case-converter): New function. (find-matching-symbols): Case convert the symbol-name before comparing. (compound-prefix-match, prefix-match-p): Use char= instead of char-equal. (case-convert-input): Renamed from case-convert. (eval-for-emacs): Renamed from eval-string. Take a form instead of a string. (dispatch-event, read-from-socket-io): Update callers. (eval-region, interactive-eval): Use fresh-line to reset the column. 2004-03-13 Helmut Eller * slime.el (slime-space): Send a list of the operator names surrounding point to Lisp. Lisp can use the list to select the most suitable arglist for the echo area. Suggested by Christophe Rhodes and Ivan Boldyrev. (slime-enclosing-operator-names): New function. * swank.lisp (arglist-for-echo-area): Renamed from arglist-string. (format-arglist-for-echo-area, arglist-to-string): New functions. 2004-03-12 Helmut Eller * swank-backend.lisp (find-definitions): Fix docstring. * slime.el (slime-dispatch-event): Re-enable :ed command. (sldb-return-from-frame): Send swank:sldb-return-from-frame. * swank-cmucl.lisp (find-definitions): Allow names like (setf car). * swank.lisp (sldb-return-from-frame): Convert the string to a sexp. (dispatch-event, send-to-socket-io): Allow %apply events. (safe-condition-message): Bind *pretty-print* to t. (set-default-directory): Use the truename. (find-definitions-for-emacs): Allow names like (setf car). 2004-03-12 Wolfgang Jenkner * swank.lisp (:swank): Export startup-multiprocessing, restart-frame, return-from-frame. What about kill-thread and interrupt-thread, which are accessed as internal symbols? 2004-03-10 Helmut Eller * swank-cmucl.lisp (struct-definitions, find-dd) (type-definitions, function-info-definitions) (source-transform-definitions, setf-definitions): New funtions. (find-definitions): Include struct definitions, deftypes, setf defintions, compiler-macros and compiler transforms. 2004-03-10 Andras Simon * swank.lisp (print-arglist): Use with-standard-io-syntax. 2004-03-10 Pawel Ostrowski * swank-cmucl.lisp (unprofile-all): (eval '(profile:unprofile)) instead of just calling it since it is a macro in cmucl. * swank.lisp (:swank): export profile symbols (profiled-functions, profile-report, profile-reset, unprofile-all, profile-package) 2004-03-10 Helmut Eller * swank-allegro.lisp, swank-lispworks.lisp, swank-sbcl.lisp, swank-clisp.lisp, swank-cmucl.lisp (find-definitions): Some tweaking. * swank.lisp (print-arglist): Bind *pretty-circle* to nil to avoid output like "(function . (cons))". Suggested by Michael Livshin. (test-print-arglist): Re-enable the tests. (find-definitions-for-emacs): Renamed from find-function-locations. * slime.el (slime-edit-definition): Renamed from slime-edit-fdefinition. Display the dspec if there are multiple definitions. (slime-symbol-name-at-point): Handle the case when there is no symbol at point. (slime-expected-failures): New function (slime-execute-tests): Use it. 2004-03-09 Helmut Eller * swank.lisp (frame-source-location-for-emacs): Export it. Reported by Jouni K Seppanen (test-print-arglist): Disable the tests until we know what's wrong with print-arglist. Reported by Michael Livshin. * swank-source-path-parser.lisp, swank-gray.lisp (in-package): We are in-package :swank-backend. Thanks to Raymond Wiker. Merge package-split branch into main trunk. * swank-clisp.lisp (find-fspec-location): Handle "No such file" errors. * swank-openmcl.lisp (preferred-communication-style): Implemented. (call-without-interrupts, getpid): Use defimplementation. (arglist, swank-compile-file, swank-compile-string) (swank-compile-system, backtrace): Renamed. (print-frame): New function. (frame-catch-tags): Don't exclude nil source location. (format-restarts-for-emacs, debugger-info-for-emacs, inspect-in-frame). deleted (frame-arguments): Don't use to-string. (find-source-locations, find-function-locations (method-source-location): Deleted. (canonicalize-location, find-definitions, function-source-location, list-callers): Use ccl::edit-definition-p and ccl::get-source-files-with-types&classes. Makes things easier. (return-from-frame): Take a sexp not a string. (describe-definition): Describe more types. * swank-loader.lisp: Change load order. swank.lisp is now the last file. * swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-gray.lisp, swank-lispworks.lisp, swank-sbcl.lisp, swank-source-path-parser.lisp: Implement changed backend interface and remove references to frontend symbols. * swank-backend.lisp (:swank-backend): New package. (definterface): Export the symbol. (:location, :error, :position, :buffer): Define structure of source locations here. (preferred-communication-style, compute-backtrace, print-frame): New functions. (debugger-info-for-emacs): Deleted. Renaming: compile-file-for-emacs -> swank-compile-file compile-string-for-emacs -> swank-compile-string compile-system-for-emacs -> swank-compile-stystem arglist-string -> arglist backrace -> compute-backtrace find-function-locations -> find-definitions * swank.lisp (:swank): Create the package here. (*swank-in-background*): Call the backend function preferred-communication-style to for the initial value. (find-symbol-designator): Handle NIL properly. (arglist-string): Renamed from format-arglist. Call backend function directly. (*sldb-restarts*, swank-debugger-hook, format-restarts-for-emacs) (nth-restart, invoke-nth-restart, sldb-abort): Handle restarts in the front end. (frame-for-emacs): Renamed from print-with-frame-label. (backtrace, debugger-info-for-emacs, pprint-eval-string-in-frame) (set-default-directory): Now in the front end. (frame-locals-for-emacs): Use print not princ for variable names. (compile-file-for-emacs, compile-string-for-emacs): Small wrappers around backend functions. (describe-definition-for-emacs): Handle unknown symbols before calling the backend. (find-function-locations): Wrapper for new backend function find-definitions. (group-xrefs, partition, location-valid-p, xref-buffer, xref): Updated for the new backend functions. * slime.el: (slime-symbol-at-point, slime-symbol-name-at-point): slime-symbol-at-point calls slime-symbol-name-at-point not the other way around. This avoids the mess if the symbol at point is NIL. (slime-compile-file, slime-load-system, slime-compile-region) (slime-call-describer, slime-who-calls, sldb-catch-tags): Updates for renamed lisp functions. (slime-list-callers, slime-list-callees): Unified with other xref commands. (sldb-show-frame-details): Catch tags no longer include the source location. (sldb-insert-locals): Simplified. 2004-03-09 Helmut Eller * swank-cmucl.lisp (read-into-simple-string): Use the correct fix. Reported by Håkon Alstadheim. 2004-03-08 Helmut Eller * slime.el (slime-start-swank-server, slime-maybe-start-lisp): Translate filenames. Reported by Dan Muller. 2004-03-08 Bill Clementson * slime.el (slime-insert-balanced-comments) (slime-remove-balanced-comments, slime-pretty-lambdas): New functions. 2004-03-07 Jouni K Seppanen * slime.el (sldb-help-summary): New function. (sldb-mode): Add docstring so that describe-mode is useful. (sldb-mode-map): Add bindings for sldb-help-summary and describe-mode. (define-sldb-invoke-restart-key): Generate docstrings. (sldb-default-action/mouse, sldb-default-action) (sldb-eval-in-frame, sldb-pprint-eval-in-frame) (sldb-inspect-in-frame, sldb-down, sldb-up, sldb-details-up) (sldb-details-down, sldb-list-locals, sldb-quit, sldb-continue) (sldb-abort, sldb-invoke-restart, sldb-break-with-default-debugger) (sldb-step): Add rudimentary docstrings. 2004-03-07 Helmut Eller * slime.el (slime-complete-symbol*, slime-simple-complete-symbol): Use the correct block name when returning. (slime-display-completion-list): Fix typo. * swank-cmucl.lisp (frame-locals): Use #:not-available instead of "". 2004-03-05 Bill Clementson * swank-lispworks.lisp (getpid, emacs-connected): Conditionalize for Windows. 2004-03-05 Helmut Eller * swank.lisp (frame-locals-for-emacs): Bind *print-readably* to nil. 2004-03-05 Marco Baringer * swank.lisp (frame-locals-for-emacs): New function. * slime.el (sldb-frame-locals): Use swank::frame-locals-for-emacs not swank::frame-locals. (sldb-insert-locals): use the :value property, not the :value-string property. * swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-lispworks.lisp, swank-sbcl.lisp (frame-locals): Return lisp objects, not strings. Use the :value property and not the :value-string property. 2004-03-04 Helmut Eller * slime.el (slime-display-comletion-list): New function. Set syntax table properly. (slime-complete-symbol*, slime-simple-complete-symbol): Use it. (slime-update-connection-list): New function. (slime-draw-connection-list): Simplified. (slime-connection-list-mode-map): Bind g to update-connection-list. (slime-open-inspector): Print the primitive type in brackets. (slime-test-arglist): Add test for empty arglist. * swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-lispworks.lisp, swank-sbcl.lisp, swank-backend.lisp (thread-alive-p): Add default implementation. (describe-primitive-type): Add default implementation. (inspected-parts): Implemented for Allegro and CLISP. * swank.lisp (remove-dead-threads): New function. (lookup-thread): Use it. (print-arglist): New function. This time without a custom pretty print dispatch table. (format-arglist): Use it. (inspected-parts): Add method for hash-tables. 2004-03-03 Helmut Eller * swank.lisp: Use *emacs-connection*, *active-threads*, and *thread-counter* as thread local dynamic variables. (init-emacs-connection): Don't set *emacs-connection*. (create-connection, dispatch-event): Pass the connection object to newly created threads. (with-connection): New macro (handle-request, install-fd-handler, debug-thread): Use it. * swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-openmcl.lisp, swank-sbcl.lisp (call-with-compilation-hooks): Bind fewer variables. Most of them are already bound in swank.lisp. * swank.lisp (setup-server, serve-connection): New dont-close argument to keep the socket open after the first connection. (start-server, create-swank-server): Update callers. Reported by Bill Clementson. * swank-cmucl.lisp (resolve-note-location): Don't be too clever, if there is no context available. The compiler notes buffer is probably more adequate in this situation. (compile-file-for-emacs): Use the :load argument to compile-file. (inspect-in-frame): Deleted. * slime.el (slime-compilation-finished-hook): Use slime-maybe-list-compiler-notes as default. (slime-maybe-list-compiler-notes): New function. (slime-list-compiler-notes): Insert "[no notes]" if there aren't any. Pop to the buffer. (slime-complete-symbol*, slime-simple-complete-symbol): Set the lisp-mode-syntax-table in the completion buffer. (check-parens): Compatibility function for XEmacs and Emacs 20. * swank.lisp (find-completions): Deleted. (simple-completions): Use longest-common-prefix instead of longest-completion. (inspect-in-frame): Moved here from swank-cmucl.lisp. * swank-lispworks.lisp (call-with-debugging-environment): Bind *sldb-top-frame*. (nth-frame): Use *sldb-top-frame*. (name-source-location, name-source-locations): Renamed from dspec-source-location, dspec-source-locations. The result now includes methods for generic functions. (eval-in-frame, return-from-frame, restart-frame): Implemented. (compile-string-for-emacs): Set dspec::*location* to the buffer location. (signal-undefined-functions, signal-error-data-base) (make-dspec-location): Remove temp-file kludges. (patch-source-locations, replace-source-file): Deleted. 2004-03-01 Marco Baringer * swank.lisp (format-arglist): deal with nil arglists. 2004-03-01 Helmut Eller * swank-lispworks.lisp (compile-string-for-emacs): Patch the recorded source locations. (replace-source-file, patch-source-locations): New function. (dspec-buffer-position): Handle defgeneric. (make-dspec-location): Handle (patched) emacs-buffer locations. (emacs-buffer-location-p): New function. (describe-primitive-type, inspected-parts): Implemented. (kill-thread): Implemented. * swank-sbcl.lisp, swank-cmucl.lisp, swank-allegro.lisp (kill-thread): Implemented. 2004-02-29 Helmut Eller * slime.el (slime-complete-symbol): Make slime-complete-symbol customizable. I don't understand how the ILISP style completion is supposed to work and find it unintuitive. (slime-complete-symbol-function): New variable. (slime-complete-symbol*): Renamed from slime-complete-symbol. (slime-simple-complete-symbol, slime-simple-completions): New function. (slime-compiler-notes-to-tree): Return a list of trees, not a single tree. * swank.lisp (format-arglist): Don't use a custom pprint table. Didn't work with CLISP and the behavior was different in SBCL and Lispworks. (completions): Factorize. (parse-completion-arguments, format-completion-set, (completion-set, find-matching-symbols, find-completions): New functions. (simple-completions): New function. (prefix-match-p) New function. 2004-02-28 Helmut Eller * slime.el (slime-compilation-finished-hook): New hook variable. (slime-compilation-finished): Call it. (slime-maybe-show-xrefs-for-notes): New function. (slime-make-default-connection): Use the current connection. (slime-connection-at-point): New function. (slime-goto-connection, slime-connection-list-make-default): Use it. (slime-draw-connection-list): Minor cleanups. Define selectors for t and c for thread and connection list. * swank.lisp: (*initial-pprint-dispatch-table*) (*arglist-pprint-dispatch-table*): Workaround for bug in CLISP. Don't supply nil as argument to copy-pprint-dispatch. (print-cons-argument): Insert a space after the car. 2004-02-27 Marco Baringer * slime.el (slime-read-port-and-connect, slime-read-port-and-connect-to-running-swank): Refactor slime-read-port-and-connect into two functions so that slime-thread-attach can use the logic in slime-read-port-and-connect. (slime-thread-control-mode-map): Added key bindings for slime-thread-kill, slime-thread-attach, slime-thread-debug and slime-list-threads. (slime-thread-kill, slime-thread-attach, slime-thread-debug): New functions. * swank-backend.lisp (kill-thread): Added to swank interface. * swank-openmcl.lisp (kill-thread): Implement. * swank.lisp (start-server): Add optional background argument, defaults to *swank-background*. (lookup-thread-by-id): New function. (debug-thread): New function. 2004-02-26 Peter Seibel * slime.el (slime-draw-connection-list): Use text-properties to associate the connections each line of the connections list buffer. 2004-02-26 Peter Seibel * slime.el (slime-list-connections): Make the buffer created by this function do a bit more: Can use it to switch to different connections and change the default. 2004-02-26 Marco Baringer * swank-openmcl.lisp (ccl::force-break-in-listener): Pass a condition object to invoke-debugger. Patch by Bryan O'Connor 2004-02-26 Helmut Eller * swank-backend.lisp (:swank): export connection-info. * swank-allegro.lisp (lisp-implementation-type-name): Implement it. * swank-sbcl.lisp (compile-file-for-emacs): Load the fasl file regardless of f-p. * swank.lisp (swank-pprint): Bind *package* to *buffer-package*. Reported by Alan Picard. * swank-lispworks.lisp (dspec-buffer-position): Renamed from dspec-buffer-buffer-position. Handle dspecs of the form (defmacro foo). Reported by Alan Picard. (arglist-string): Handle unknown arglists properly. 2004-02-25 Helmut Eller * swank-cmucl.lisp (arglist-string): Delay the call to di::function-debug-function until it is actually needed. (compile-file-for-emacs): Load the fasl file irrespective of COMILE-FILE's third return value. * swank.lisp (connection-info): New function. (open-streams): Don't send the :check-protocol-version message. Now handled with CONNECTION-INFO. * slime.el (slime-symbol-at-point): Don't skip backwards across whitespace when we are at the first character of a symbol. To handle this case: skip symbol constituents forward before skipping whitespace backwards. Reported by Jan Richter. (slime-connection-close-hook, slime-next-connection) (slime-make-default-connection): Remove extra call to format. (slime-init-connection-state): Use only a single RPC instead of 4. 2004-02-25 Helmut Eller * slime.el (slime-with-chosen-connection): Bind slime-dispatching-connection and not slime-buffer-connection. slime-buffer-connection is a buffer local variable not a dynamic variable. (slime-find-connection-by-type-name) (slime-read-lisp-implementation-type-name): Were lost during the merge. (sldb-fetch-more-frames): Use (goto-char (point-max)) instead of end-of-buffer. 2004-02-25 Peter Seibel * slime.el: Various bits of support for maintaining multiple SLIME connections to different Lisp implementations simultaneously. * swank-backend.lisp (lisp-implementation-type-name): Add function to return simple name of lisp implementation; used by new multi-connection functionality in slime.el. 2004-02-25 Helmut Eller * swank.lisp (format-arglist): Use a special pprint-dispatch table. 2004-02-22 Lawrence Mitchell * swank.lisp (format-arglist): Bind *PRINT-PRETTY* to NIL. (eval-in-emacs): Fix typo in docstring. * swank-cmucl.lisp (arglist-string): Bind *PRINT-PRETTY* to NIL. 2004-02-21 Helmut Eller Add support for SERVE-EVENT based communication. * swank-sbcl.lisp (add-sigio-handler, remove-sigio-handlers): Renamed. (add-fd-handler, remove-fd-handlers): Implement interface. * swank-cmucl.lisp (fcntl): New function. (add-sigio-handler, remove-sigio-handlers): Renamed. (add-fd-handler, remove-fd-handlers): Implement interface. * swank.lisp (create-connection): Add support for fd-handlers. (install-fd-handler, deinstall-fd-handler): New functions. * swank-backend.lisp (add-sigio-handler): Renamed from add-input-handler. (remove-sigio-handlers): Renamed from remove-input-handlers. (add-fd-handler, remove-fd-handlers): New interface functions. * slime.el (slime-batch-test): Use sit-for instead of accept-process-output, so that we see something when swank gets compiled. May be problematic in real batch mode. (loop-interrupt-continue-interrupt-quit): Wait a second before interrupting. The signal seems to arrive before the evaluation request if don't wait => the endless loop is executed inside the debugger and sldb-quit will not be processed with fd-handlers. * swank.lisp (process-available-input): Move auxiliary function to toplevel. Test if the stream is open. (install-sigio-handler): Handle the first request after installing the signal handler. * slime.el (slime-keys): Bind C-c C-x t to slime-list-threads and C-c C-x c to slime-list-connections. (slime): Disconnect before reconnecting if the inferior-lisp buffer wasn't renamed. (slime-connect): Use the host argument and not "localhost". (slime-compilation-finished): Undo last change. Switch to the buffer to remove old annotations. (slime-choose-overlay-region): Ignore errors in slime-forward-sexp. 2004-02-18 Helmut Eller * slime.el (slime): Just close the connection when called without prefix-argument. Keeping the connection open doesn't make sense. We could ask if the Lisp process should be killed, though. (slime-maybe-close-old-connections): Delete unused function. (slime-start-swank-server): Use comint-send-string instead of comint-proc-query, 'cause I don't like Olin "100%" Shivers' code. (slime-init-output-buffer): Show some animations. (slime-repl-clear-output): Fixed. (slime-compilation-finished): It's not necessary to switch to the original buffer, because the buffer is encoded in the source-locations. (sldb-show-source): Don't raise an error if the source cannot be located. Print a message instead, because errors in process-filters cause a 1 second delay. * swank-cmucl.lisp (read-into-simple-string): Workaround for read-sequence bug in 18e. 2004-02-18 Peter Seibel * swank-loader.lisp: Place the fasl files of different implementations in different directories. 2004-02-18 Helmut Eller * swank-clisp.lisp: Update comments about metering package. * metering.lisp: Imported from CLOCC. Suggested by Peter Seibel. 2004-02-17 Helmut Eller * swank.lisp, slime.el (make-compiler-note): Don't send the short-message across the wire if the slot is nil. * swank-cmucl.lisp (clear-xref-info): Compare the truenames with equalp instead of the unix-truenames. The old version was very inefficient (clearing the tables with about 1000 entries required serveral seconds). (xref-context-derived-from-p, pathname=): Delete unused functions. * swank-clisp.lisp (remove-input-handlers): socket:socket-stream-handle is not available on Windows. Reported by Alan Shutko. * slime.el (slime-length>): New function. (slime-compiler-notes-to-tree): Don't collapse if there is only one kind of notes. 2004-02-16 Helmut Eller * swank.lisp (make-compiler-note): Include short-message. * swank-sbcl.lisp (signal-compiler-condition): Initialize short-message slot. (long-compiler-message-for-emacs): New function. * swank-cmucl.lisp (handle-notification-condition): Don't use the context of the previous message. (signal-compiler-condition): Set short message slot. (long-compiler-message-for-emacs): New function. (sigio-handler): Ignore arguments. * swank-clisp.lisp (set-sigio-handler, add-input-handler): Conditionalize for linux. * swank-backend.lisp (compile-system-for-emacs): Add default implementation. (compiler-condition): New slot short-message. * slime.el (slime-compilation-finished): Display compiler notes grouped by severity in a separate buffer. (slime-compilation-finished-continuation, slime-compile-file) (slime-load-system, slime-compile-string): Update callers. (slime-list-compiler-notes, slime-alistify, slime-tree-for-note) (slime-tree-for-severity, slime-compiler-notes-to-tree) (slime-compiler-notes-mode, slime-compiler-notes-quit): New functions. (with-struct, slime-tree): New code for pseudo tree widget. (slime-init-connection-state): Set slime-state-name to "". 2004-02-08 Helmut Eller * swank-cmucl.lisp (create-socket): Fix last fix. Use the proper port argument. * swank-allegro.lisp, swank-backend.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-sbcl.lisp (create-socket): Take interface as argument. * slime.el (sldb-show-frame-details): Fix typos. (slime-print-apropos): Don't bind action. (slime-reset): Kill sldb-buffers. (slime-test-find-definition, slime-test-complete-symbol) (slime-test-arglist): Add more slime-check-top-level calls. * swank.lisp (setup-server): Pass loopback-interface to create-socket. Reported by Dirk Gerrits. (*loopback-interface*): New parameter. (sldb-loop): Send :debug event inside unwind-protect, so we never lose the corresponding :debug-return event. 2004-02-08 Marco Baringer * swank-openmcl.lisp (find-source-locations): Eliminate unused variable warning. * swank.lisp (swank-pprint): Bind pretty print vars to *swank-pprint-X* counter parts. (*swank-pprint-circle*, *swank-pprint-escape*, *swank-pprint-level*, *swank-pprint-length*): Swank counterparts to *print-X* variables used when swank needs to pretty print a form. (apply-macro-expander): Use swank-pprint. 2004-02-07 Helmut Eller * swank-cmucl.lisp (send, receive, interrupt-thread): Implement more threading functions. * swank-sbcl.lisp (inspected-parts): Implemented. * slime.el (slime-rex): Mention thread argument in docstring. (sldb-break-with-default-debugger): Use slime-rex and don't switch to the output buffer (happens automatically). (slime-list-threads): Renamed from slime-thread-control-panel. (slime-thread-insert): Use slightly different layout. (slime-give-goahead, slime-waiting-threads) (slime-popup-thread-control-panel, slime-register-waiting-thread) (slime-thread-goahead): Deleted. (slime-maybe-start-multiprocessing): Call swank:startup-multiprocessing. Reported by Paolo Amoroso. * swank.lisp (dispatch-event): :debug, :debug-condition, :debug-activate events were all encoded as :debug events, which means the debugger never worked! Fix it. I guess no one uses SLIME with a multithreaded Lisp. (read-user-input-from-emacs): Flush the output before reading. (sldb-loop): Add a sldb-enter-default-debugger tag, so we can enter the default debugger by throwing to it. (sldb-break-with-default-debugger): Throw to sldb-enter-default-debugger. (*thread-list*): New variable. (list-threads): New function. * swank-backend.lisp (thread-name): Take a thread object as argument. (thread-status, all-threads, thread-alive-p): New function. (thread-id): Deleted. * swank-allegro.lisp, swank-cmucl.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-sbcl.lisp: Update for modified thread interface. * swank-sbcl.lisp (enable-sigio-on-fd): New function. Use fallback if sb-posix:fcntl isn't fbound. * swank-cmucl.lisp (gf-definition-location): Return an error when pathname for the GF is nil (this happens if the GF is not compiled from a file). * swank.lisp (undefine-function): New function. (print-with-frame-label, print-part-to-string): Bind *print-circle* to t, to avoid unbound recursion when printing cyclic data structures. * slime.el (slime-undefine-function): New command. Bound to C-c C-u. 2004-02-06 Helmut Eller * slime.el (sldb-setup): Offer to enter a recursive edit if there are pending continuations. (slime-eval): Unwind the stack, thereby exititing recursive edits, before signaling the error. 2004-02-05 Helmut Eller * swank-openmcl.lisp (compile-system-for-emacs): Remove compile time dependency on ASDF. 2004-02-05 Wolfgang Jenkner * swank-clisp.lisp, swank-loader.lisp: Add profiling support via Kantrowitz's metering package. Reporting needs to be refined (profile-package currently ignores callers-p and methods). 2004-02-04 Bryan O'Connor * swank-openmcl.lisp (mailbox): Use a semaphore instead of process-wait. Works better with native threads. 2004-02-04 Helmut Eller * swank-backend.lisp (debugger-info-for-emacs): Export it. * swank-sbcl.lisp (add-input-handler): Use fcntl from the sb-posix package. * swank.lisp (sldb-loop, dispatch-event, send-to-socket-io): Send a :debug-activate event instead of a :debug event (to avoid sending a potentially long backtrace each time). (handle-sldb-condition): Include the thread-id in the message. * slime.el (slime-path): Use load-file-name as fallback. Suggested by Lawrence Mitchell. (slime-dispatch-event): Add support for :debug-activate event. (sldb-activate): New function. (sldb-mode): make-local-hook doesn't seem to work in Emacs 20. Use a buffer local variable instead. (slime-list-connections): Don't print Lisp's state. (slime-short-state-name): Deleted. 2004-02-02 Helmut Eller * slime.el (slime-debugger): The customization group is called 'slime-debugger', fix referrers. Reported by Jouni K Seppanen. * swank.lisp (simple-break): Bind *debugger-hook* before invoking the debugger. Reported by Michael Livshin. 2004-01-31 Robert E. Brown * swank-sbcl.lisp, swank.lisp: Add more type declarations and detect missing initargs for the connection struct. 2004-01-31 Jouni K Seppanen * slime.el (slime-path): Placed inside an eval-and-compile. Works around some problems when byte-compiling slime-changelog-date. 2004-01-31 Marco Baringer * swank-openmcl.lisp: remove defslimefun-unimplemented forms. (call-with-compilation-hooks, compile-system-for-emacs): Implement them. (compile-file-for-emacs, compile-string-for-emacs): Use with-compilation-hooks. (list-callers): Define with defimplementation and not defslimefun. * swank-backend.lisp (compile-system-for-emacs): Declare method as part of the interface. * slime.el (slime-find-asd): Handle files whose directory does not contain an asdf system definition. 2004-01-31 Helmut Eller Merge stateless-emacs branch into main trunk. We use now signal driven IO for CMUCL and one thread per request for multithreaded Lisps. 2004-01-31 Robert E. Brown * swank-backend.lisp, swank-sbcl.lisp, swank-source-path-parser.lisp, swank.lisp: Add type declarations to keep SBCL quiet. 2004-01-29 Michael Weber * slime.el, swank-backend.lisp, swank-cmucl.lisp, swank-sbcl.lisp, swank.lisp: Profiler support. 2004-01-23 Alan Ruttenberg * swank-openmcl.lisp: Bind ccl::*signal-printing-errors* to nil inside debugger so that error while printing error take us down. 2004-01-23 Helmut Eller * swank-sbcl.lisp (eval-in-frame, return-from-frame): Implemented. (sb-debug-catch-tag-p): New auxiliary predicate. (source-path<): Delete unused function. 2004-01-23 Michael Weber * slime.el (slime-keys): Bind C-c M-p to slime-repl-set-package. (slime-easy-menu): Add entry for slime-repl-set-package. 2004-01-23 Michael Weber * slime.el (slime-repl-set-package): New command to set the package in the REPL buffer. * swank.lisp (set-package): Return the shortest nickname. 2004-01-23 Helmut Eller * slime.el (sldb-disassemble): Was lost somewhere. 2004-01-22 Wolfgang Jenkner * swank-clisp.lisp: Replace defmethod by defimplementation where appropriate. (return-from-frame, restart-frame): Implement them. 2004-01-22 Helmut Eller * test.sh: Copy the ChangeLog file too. * swank-cmucl.lisp: Replace some defmethods with defimplementation. * swank-allegro.lisp (return-from-frame, restart-name): Implement interface (partly). * swank-openmcl.lisp (restart-frame, return-from-frame): Remove sldb-prefix. * swank-backend.lisp (return-from-frame, restart-frame): Are now interface functions. * swank.asd: Remove dependency on :sb-bsd-sockets. Is already done in swank-sbcl. * swank-loader.lisp: Don't reference the swank package at read-time. * swank.lisp (completions): Never bind *package* to nil. That's a type error in SBCL. (swank-debugger-hook): Flush the output streams and be careful when accessing *buffer-package*. (create-swank-server): Return the port of the serve socket. * swank-lispworks.lisp (interesting-frame-p): Don't print catch frames. (make-sigint-handler): New function. (emacs-connected): Use it. * slime.el (slime-lisp-implementation-type): New per connection variable. (slime-handle-oob): Handle debug-condition event. Can be signaled CMUCL when cannot produce a backtrace. (slime-debugging-state): Don't pop up the debugger buffer an activate events. Annoying. (sldb-break-with-default-debugger): Switch to the output buffer before returning to the tty-debugger. (sldb-return-from-frame, sldb-restart-frame): Use slime-rex. (slime-list-connections, slime-short-state-name): New functions. 2004-01-20 Helmut Eller * slime.el (slime-complete-symbol): Insert the completed-prefix before deleting the original text to avoid troubles with left inserting markers. (slime-symbol-start-pos): Skip backward across symbol constituents. (slime-evaluating-state): [:read-sring] Save the window configuration. (slime-read-string-state): Don't handle activate events (troublesome if, e.g, complete-symbol is used from another buffer). Restore the window configuration. (slime-repl-read-string): Goto the end of buffer. (slime-debugging-state): [:activate] Display the debugger buffer if not visible. (slime-to-lisp-filename, slime-from-lisp-filename) (slime-translate-to-lisp-filename-function) (slime-translate-from-lisp-filename-function, slime-compile-file) (slime-goto-location-buffer, slime-ed, slime-load-file): Support for remote filename translation (untested). * swank.lisp (create-swank-server): Take announce-fn as optional argument. * swank-allegro.lisp: Replace defmethod with defimplementation. (eval-in-frame): Implemented. 2004-01-20 Lasse Rasinen * slime.el (slime-prin1-to-string): Replacement for prin1-to-string that avoids escaping non-ascii characters in a way that the CL reader doesn't understand. Allows use of 8-bit characters in Lisp expressions with Emacs in unibyte-mode. 2004-01-20 Luke Gorrie * slime.el (slime-eval-print-last-expression): Insert a newline before and after the result. (slime-easy-menu): Added menu items: "Eval Region", "Scratch Buffer", "Apropos Package..." Added some bold to default SLDB faces. 2004-01-19 Alan Ruttenberg *swank-openmcl.lisp in frame-catch-tags, ppc32::catch-frame.catch-tag-cell -> 0, ppc32::catch-frame.csp-cell -> 3. FIXME when this code is more stable in openMCL. 2004-01-19 Michael Weber * slime.el (slime-close-all-sexp): New command to close all unmatched parens in the current defun. Bound to `C-c C-]'. With prefix argument, only operate in the region (for closing subforms). 2004-01-19 Luke Gorrie * swank-openmcl.lisp (thread-id, thread-name): Fixed silly bugs (thanks Marco Baringer). * swank-loader.lisp: Call (swank:warn-unimplemented-interfaces). * swank.lisp (ed-in-emacs): New command with the same interface as CL:ED. * swank-cmucl.lisp, swank-sbcl.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-allegro.lisp, swank-clisp.lisp: Updated to use `defimplementation'. * swank-backend.lisp (definterface, defimplementation): New macros as sugar around defgeneric/defmethod. This supports conveniently supplying a default (on NO-APPLICABLE-METHOD). Because the underly mechanism is still generic functions this doesn't break code that isn't updated. (warn-unimplemented-interfaces): Print a list of backend functions that are not implemented. (xref and list-callers): Defined interfaces for these functions. (describe-definition): New function that takes over from the many other describe-* functions called from apropos listing. Takes the type of definition (as returned by describe-symbol-for-emacs) as an argument. * slime.el (sldb-enable-styled-backtrace): This is now true by default. (slime-keys): Bound `slime-inspect' to `C-c I'. (slime): `M-x slime' now offers to keep existing connections alive (else disconnect them). If you disconnect them, the new connection gets to reuse the existing REPL. (slime-connection): Error if the connection is closed. (slime-handle-oob): New message (:ED WHAT) for `slime-ed'. (slime-display-output-buffer): Don't pop up the REPL if it is already visible in any frame. (slime-find-asd): Handle case where (buffer-file-name) is nil. (slime-ed): Elisp backend for (CL:ED WHAT). (slime-apropos): Add a summary line to apropos listings. (slime-print-apropos): Replaced `action' property (name of lisp describe function) with `type' (argument to pass to unified swank:describe-definition function). (slime-apropos-package): New command on `C-c P'. Presents apropos listing for all external (with prefix also internal) symbols in a package. 2004-01-18 Helmut Eller * swank-lispworks.lisp (sigint-handler): Bind a continue restart. (make-dspec-location): Handle strings like pathnames. Some multithreading support. * slime.el (compile-defun): Don't use keywords. The keyword package is locked in Lispworks and causes the test-suite to hang. (slime-eval-with-transcript): Fix bug triggered when 'package' is a buffer local variable. Reported by Janis Dzerins. (slime-batch-test): Wait until the connection is ready. 2004-01-18 Alan Ruttenberg * swank-openmcl: Implement frame-catch-tags. Added debugger functions sldb-restart-frame, sldb-return-from-frame. Should probably be added to backend.lisp but let's discuss first. Do other lisps support this? * slime.el sldb-restart-frame, sldb-return-from-frame 2004-01-18 Wolfgang Jenkner * swank-clisp.lisp (call-without-interrupts): Evaluate linux:SIGFOO at read time since the macro with-blocked-signals expects a fixnum. (compile-file-for-emacs): Comment fix. 2004-01-18 Helmut Eller * swank-sbcl.lisp (make-fn-streams): Deleted. Already defined in swank-gray.lisp. * swank.lisp (find-symbol-or-lose, format-arglist): New functions. (without-interrupts): New macro. (send-to-emacs): Use it. * swank-backend.lisp, swank-clisp.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-sbcl.lisp, swank-allegro.lisp: (arglist-string): Refactor common code to swank.lisp. (call-without-interrupts, getpid): Are now generic functions. * slime.el (arglist): Test slot readers and closures. * swank-cmucl.lisp (arglist-string): Use pcl:generic-function-lambda-list for generic functions. Handle closures. Print arglist in lower case. (inspected-parts-of-value-cell): Was lost during the inspector refactoring. 2004-01-18 Wolfgang Jenkner * swank-clisp.lisp (compile-file-for-emacs, split-compiler-note-line): Revert last change. (handle-notification-condition): Don't signal the condition. (*compiler-note-line-regexp*): Fix and rewrite it as extended regexp. * slime.el (slime-changelog-date): Use file-truename of byte-compile-current-file. 2004-01-17 Helmut Eller * slime.el (slime-format-arglist): Add some sanity checks and print zero argument functions nicer. Suggested by Ivan Boldyrev. (slime-test-expect): Take test predicate as argument. (arglist): Test generic functions. * swank-cmucl.lisp (arglist-string): Handle generic functions better. Reported by Ivan Boldyrev. 2004-01-16 Helmut Eller * swank-allegro.lisp: Multiprocessing support. * swank-openmcl.lisp, swank-cmucl.lisp, swank-backend.lisp, swank.lisp: Refactor inspector code. * swank.lisp (changelog-date): Use *compile-file-truename* instead of *compile-file-pathname*. (with-I/O-lock, with-a-connection): The usual CLISP fixes. (create-swank-server): Patch by Marco Baringer . Bring it back again. (create-connection): Use return the dedicated output stream if available. * slime.el: Numerous REPL related fixes. (slime-update-state-name): Take state as argument. (slime-repl-beginning-of-defun, slime-repl-end-of-defun): Fix typos. (sldb-insert-restarts): Remove duplicate definition. 2004-01-16 Luke Gorrie * swank-openmcl.lisp: Multiprocessing support. * swank.lisp (changelog-date): make-pathname portability fix (from alanr). (with-io-redirection): Use (current-connection) instead of *dispatching-connection* (from alanr). * slime.el (slime-init-output-buffer): XEmacs portability fix, and use header-line-format to show info about Lisp in Emacs21. 2004-01-15 Helmut Eller * swank-sbcl.lisp, swank-cmucl.lisp (remove-input-handlers): New method. * swank-allegro.lisp (excl:stream-read-char-no-hang): Import it. (emacs-connected): Add default method. The method for no-applicable-method doesn't seem to work. ACL bug? * swank-loader.lisp (compile-files-if-needed-serially): Don't handle compilation errors. We must compile everything because changelog-date requires *compile-file-truename*. * slime.el: (slime-changelog-date) (slime-check-protocol-version): New functions. (slime-handle-oob): Handle :check-protocol-version event. (slime-init-output-buffer): Print some info about the remote Lisp. (slime-connect): Use it. (slime-note-transcript-start): Renamed from slime-insert-transcript-delimiter. (slime-note-transcript-end): New function. (slime-with-output-end-mark, slime-repl-insert-prompt) (slime-repl-show-result, slime-compile-file) (slime-show-evaluation-result): Insert output from eval commands after the prompt and asynchronous output before the prompt. Needs documentation. (repl-test, repl-read, interactive-eval-output): New tests. (slime-flush-output): Accept output from all processes. * swank.lisp (serve-requests): New function. (setup-server): Use it. (start-server): Pass backgroud to setup-server. (create-connection): Check the protocol version. (changelog-date): New function. (make-output-function): Use write-string instead of princ. * swank-backend.lisp (remove-input-handlers): New function. 2004-01-15 Luke Gorrie * slime.el (slime-aux-connect, slime-handle-oob): Support for (:open-aux-connection port) message where Lisp requests that Emacs make a connection. These are "auxiliary" connections which don't (or at least shouldn't) have their own REPL etc. * swank.lisp: New support for multiprocessing and multiple connections + commentary. (with-a-connection): Macro to execute some forms "with a connection". This is used in the debugger hook to automatically create a temporary connection if needed (i.e. if the current thread doesn't already have one). (open-aux-connection): Helper function to create an extra connection to Emacs. * swank-sbcl.lisp: Implemented multiprocessing. Not perfect. * swank-cmucl.lisp: Implemented new multiprocessing interface. (create-socket): Make FDs non-blocking when multiprocessing is enabled. (startup-multiprocessing): Set *swank-in-background* to :spawn. * swank-backend.lisp: Changed multiprocessing interface. 2004-01-15 Wolfgang Jenkner * swank-clisp.lisp (with-blocked-signals): New macro. (without-interrupts): Use it. (*use-dedicated-output-stream*, *redirect-output*): Don't set them here, use the default settings. Make :linux one of *features* if we find the "LINUX" package. 2004-01-14 Luke Gorrie * swank-openmcl.lisp (emacs-connected): Typo fix (missing close-paren). 2004-01-13 Helmut Eller * slime.el (slime-input-complete-p): Tolerate extra close parens. (slime-idle-state): Don't active the repl. (slime-insert-transcript-delimiter): Insert output before prompt. (slime-open-stream-to-lisp): Initialize the process-buffer with the connection buffer. (slime-repl-activate): Deleted. (slime-repl-eval-string, slime-repl-show-result) (slime-repl-show-abort): Better handling of abortion. (slime-compile-file): Insert output before prompt. * swank-lispworks.lisp (create-socket): Fix condition message. * swank-openmcl.lisp (*swank-in-background*): Set to :spawn. (emacs-connected): Initialize ccl::*interactive-abort-process*. * swank.lisp (*swank-in-background*): New variable. (start-server): Start swank in background, depending on *swank-in-background*. * swank-cmucl.lisp, swank-sbcl.lisp (*swank-in-background*): Set to :fd-handler. * swank-clisp.lisp (accept-connection): Remove superfluous call to socket-wait. New more direct socket interface. The new interface is closer to the functions provided by the implementations. For Lispworks we use some non-exported functions to get a sane interface. The interface also includes add-input-handler and a spawn function (not used yet). The idea is that most of the logic can be shared between similar backends. * swank-gray.lisp (make-fn-streams): New function. (stream-read-char-no-hang, stream-read-char-will-hang-p): Moved to here from swank-clisp.lisp. * swank-allegro.lisp, swank-clisp.lisp, swank-cmucl.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-sbcl.lisp: (create-socket, local-port, close-socket, accept-connection) (add-input-handler, spawn): Implement new socket interface. * swank.lisp (start-server, open-dedicated-output-stream &etc): Use new socket functions. * swank-backend.lisp (create-socket, local-port, close-socket) (accept-connection, add-input-handler, spawn): New functions. (accept-socket/stream, accept-socket/run): Deleted. 2004-01-13 Luke Gorrie * swank-clisp.lisp: Updated for new network interface but not tested! Probably slightly broken. * swank-lispworks.lisp: Updated for new network interface. (accept-socket/stream): This function is currently broken, so LispWorks can't use the dedicated output channel at the moment. * swank.lisp, swank-cmucl.lisp, swank-sbcl.lisp: Updated for new network interface. * swank-backend.lisp (accept-socket/stream, accept-socket/run): New functions replacing the ancient (over 24 hours!) `create-socket-server'. This interface is much simpler. 2004-01-12 Luke Gorrie * swank-lispworks.lisp: Partially updated for new backend interface, but not actually working. The sockets code is broken, I haven't grokked LispWorks the interface properly. * swank-gray.lisp (slime-input-stream, slime-output-buffer): Added slots to support the new `make-fn-streams' interface from swank-backend.lisp. These slots need to be initialized by the backend, see swank-sbcl.lisp for an example (very easy). * swank-sbcl.lisp (create-socket-server): Implemented new server interface. * slime.el (slime-handle-oob): Added :open-dedicated-output-stream message, previously implemented with :%apply. (slime-repl-read-string, slime-repl-return-string): Pass integer argument to `slime-repl-read-mode' to set rather than toggle. * swank.lisp: Taking over previously non-portable jobs: (start-server): Now only uses sockets code from the backend. (handle-request): Top-level request loop. (open-dedicated-output-stream): Dedicated output socket. (connection): New data structure that bundles together the things that constitute a connection to Emacs: socket-level stream and user-level redirected streams. * swank-cmucl.lisp (create-socket-server): Generic TCP server driven by SERVE-EVENT. (serve-one-request, open-stream-to-emacs): Deleted. Now handled portably in swank.lisp. (make-fn-streams): Implement new stream-redirection interface. (slime-input-stream): New slot referencing output sibling, so it can be forced before input requests. * swank-backend.lisp (create-socket-server): Generic callback-driven TCP server interface. Replaces `create-swank-server', with the higher-level logic moved into swank.lisp. (emacs-connected): Invoked when Emacs initially connects, as a hook for backend implementations. (make-fn-streams): Interface for creating pairs of input/output streams that are backended by callback functions. Used to implement redirected-via-Emacs standard I/O streams. 2004-01-12 Lawrence Mitchell * slime.el (slime-events-buffer): Set `hs-block-start-regexp' before running `hs-minor-mode'. 2004-01-10 Luke Gorrie * slime.el (package-updating): Expected package is now a list (can be any), since the shortest nickname is not standardized. e.g. USER or CL-USER for COMMON-LISP-USER. * swank-cmucl.lisp: Don't enable xref (let the user decide). (set-fd-non-blocking): Removed unused function. Miscellaneous refactoring of the networking code. * slime.el (slime-complete-symbol): Use markers to hold the beginning and end of the completion prefix, in case looking up completions causes insertions (e.g. GC announcements). 2004-01-09 Luke Gorrie * slime.el (slime-activate-state): Only update state name when `slime-default-connection' activates. This fixes an annoying "Selecting deleted buffer" bug that prevented SLIME from being restarted. (slime-next-connection): Fixed a bug where buffer-local connection bindings could get in the way and prevent the connection from actually changing. (slime-complete-restore-window-configuration): Wrap `set-window-configuration' in `save-excursion'. This fixes a problem where the cursor would end up in the wrong place after completion in XEmacs. 2004-01-09 Helmut Eller * slime.el: Place (require 'cl) inside a eval-and-compile. (slime-with-connection-buffer): Move definition upwards before the first use. (package-updateing): New test for package updates in the listeners. * swank.lisp (eval-region): Bind *package* outside the unwind-protect to detect updates. * swank-backend.lisp (debugger-info-for-emacs) (find-function-locations): Doc fix. 2004-01-09 Wolfgang Jenkner * swank-clisp.lisp: Add methods for GRAY:STREAM-READ-CHAR-NO-HANG and for the CLISP specific GRAY:STREAM-READ-CHAR-WILL-HANG-P. This should fix the behaviour of SYS::READ-FORM. 2004-01-08 Luke Gorrie * slime.el (slime-inspector-fontify): Function to insert a string in a particular inspector face. Replaces macro-code-generation function `slime-inspector-expand-fontify'. Fixes a byte-compile problem (macro was calling function not defined at compile-time). 2004-01-07 Luke Gorrie * slime.el: Multisession internal improvements. Now there are three separate connection variables, in order of priority: slime-dispatching-connection (dynamically-bound) slime-buffer-connection (buffer-local) slime-default-connection (global) The most specific one available is used. This is splitting `slime-connection' into multiple variables, so that you can be specific about what you want to assign (i.e. know if you're setting a dynamic binding or a buffer-local one). Fixed some related bugs. (slime-connection-close-hook): If default connection closes, select another connection. (slime-lisp-package): Initially CL-USER nickname instead of COMMON-LISP-USER (for REPL prompt). * slime.el (slime): Multisession support: with prefix argument, gives the option of keeping existing sessions and firing up an additional *inferior-lisp* to connect to. Each connection now has its own *slime-repl[]* buffer. (slime-connection): Should now be read via the function of the same name. The accessor will check if the value is NIL, and if so use `slime-default-connection'. (slime-default-connection): The connection that will be used by default, i.e. unless `slime-connection' is bound. Renamed from `slime-primary-connection'. (slime-init-connection-state): When reconnecting, update the `slime-connection' binding in the REPL to use the new connection. (slime-repl-input-history, ...): REPL variables are now buffer-local. 2004-01-06 Helmut Eller * swank.lisp (eval-string): New argument 'id'. Used to identify the remote continuation. (log-event): New debugging function. (read-from-emacs, send-to-emacs): Use it. * slime.el: The new macro 'slime-rex' can now be used to evaluate sexps remotely. It offers finer control what to do when the evaluation aborts. (slime-rex): New macro (slime-eval, slime-eval-async, sldb-continue) (sldb-invoke-restart): Use it. (slime-continuation-counter, slime-push-evaluating-state): New functions. (slime-output-buffer): Initialize markers. (sldb-mode): XEmacs doesn't like (add-hook (make-local-hook ...)). (slime-init-connection): New optional argument SELECT. (slime-def-connection-var): Workarounds for Emacs 20 reader bugs. Backquote is pretty broken Emacs 20. 2004-01-06 Ignas Mikalajunas * swank-loader.lisp (user-init-file): Use merge-pathames. Fix Windows support. 2004-01-05 Luke Gorrie * slime.el: Multiple session support, i.e. Emacs can open multiple connections to Lisps. The guts is there, but user-interface is currently minimal. (slime-net-process): Replaced with slime-net-processes. (slime-net-send): Take process as argument. (slime-process-available-input): Poll all connections. (slime-connection): Current connection (process) to use for talking to Lisp. Can be bound dynamically or buffer-local. (slime-with-connection-buffer): Macro to enter the process-buffer of `slime-connection' to manipulate the local variables. (slime-stack-stack): Now buffer-local in the process-buffer of each connection. (slime-push-state, slime-pop-state): Operate on the stack inside `slime-connection's process-buffer. (slime-dispatch-event): Take optional process argument, to bind `slime-connection' appropriately when events arrive from the network. (slime-def-connection-var): Macro to define variables that are "connection-local". Such variables are used via (setf'able) accessor functions, and their real bindings exist as local variables in the process-buffers of connections. The accessors automatically work on `slime-connection'. (slime-lisp-features, slime-lisp-package, slime-pid, sldb-level): These variables are now connection-local. (slime-read-from-minibuffer): Inherit `slime-connection' as buffer-local so that we complete towards the right Lisp. (sldb-mode): Inherit `slime-connection' as buffer-local so that we debug towards the right Lisp. (get-sldb-buffer): New function to return (optionally create) the SLDB buffer for the current connection. Since multiple Lisps can be debugged simultaneously, the buffername now includes the connection number. (slime-connection-abort): New command to abort a connection attempt (don't use `slime-disconnect' anymore - that closes all connections). (slime-execute-tests): Honor `slime-test-debug-on-error'. (slime-next-connection): Cycle through open Lisp connections. 2004-01-02 Helmut Eller * slime.el (slime-display-output-buffer): Move the output markers to the end of the buffer. * swank-clisp.lisp (frame-do-venv): Rename the :symbol property to :name. (format-condition-for-emacs): Replaced with debugger-condition-for-emacs. (backtrace): Use print-with-frame-label. * swank-openmcl.lisp (format-condition-for-emacs): Replaced with debugger-condition-for-emacs. (backtrace): Use print-with-frame-label. (frame-locals): Rename the :symbol property to :name. * swank-lispworks.lisp (format-condition-for-emacs): Replaced with debugger-condition-for-emacs. (backtrace): Use print-with-frame-label. (frame-locals): Rename the :symbol property to :name. * swank-allegro.lisp (frame-locals): Rename the :symbol property to :name. (format-condition-for-emacs): Replaced with debugger-condition-for-emacs. (backtrace): Use print-with-frame-label. * swank-sbcl.lisp (tracedp, toggle-trace-fdefinition) (format-condition-for-emacs): Remove unused functions. (format-frame-for-emacs): Use print-with-frame-label. (compute-backtrace): Simplified. (backtrace): Return our frame numbers. (frame-locals): Rename the :symbol property to :name. Remove the :validity property. * swank-cmucl.lisp (accept-loop, safe-definition-finding): Doc fix. (location-buffer=, file-xrefs-for-emacs) (sort-contexts-by-source-path, source-path<) (format-condition-for-emacs): Remove unused functions. (format-frame-for-emacs): Don't include the frame number in the description, but use the frame number for indentation. Update callers. (frame-locals): Rename the :symbol property to :name. * slime.el (slime-add-face): New function. (sldb-add-face): Use it. (sldb-setup): Some refactoring. (sldb-insert-condition): New function. Factorized from sldb-setup. Message and types are now separate. (sldb-insert-restarts): New function. Factorized from sldb-setup. (sldb-insert-frame): Factorized from slime-insert-frames. The frame number in no longer part of the string describing the frame. (sldb-insert-frames): Use it. (sldb-show-frame-details): Print frame numbers. Fix printing of catch tags. Move to the start of the frame before at the beginning to get unfontified text properties. (sldb-inspect-condition): New command. (sldb-insert-locals): The :symbol property is now called :name. Fix locals with :id attribute. (slime-open-inspector): Fix the bugs I introduced last time. * swank.lisp (safe-condition-message): New function. (debugger-condition-for-emacs): Used to be format-condition-for-emacs in each backend. Separate the condition message from the type description. Update all backends accordingly. (print-with-frame-label): New function. * slime.el (slime-hyperspec-lookup): New function. 2004-01-02 Wolfgang Jenkner * swank-clisp.lisp: New file. Merged with Vladimir's version. * xref.lisp: New file. Used by swank-clisp. * swank-loader.lisp (user-init-file): Add CLISP files. * swank.lisp (eval-region, tokenize-completion): Modify loops a bit to make CLISP happy. * swank-backend.lisp (with-compilation-hooks): Replace () with (&rest _) to make CLISP happy. * slime.el (slime-goto-source-location): Support for CLISP style line numbers. Split it up. (slime-goto-location-buffer, slime-goto-location-position): New functions. (slime-load-system): Use slime-display-output-buffer. (slime-repl-mode): Disable conservative scrolling. Not sure if it was a good idea. (sldb-insert-frames, sldb-show-frame-details, sldb-list-locals): Minor fixes. (sldb-insert-locals): Renamed from sldb-princ-locals. (sldb-invoke-restart): Use slime-eval instead of slime-oneway-eval, because interactive restarts may read input. (slime-open-inspector): Minor indentation fixes. (slime-net-output-funcall): Removed. Was unused. 2003-12-19 Alan Ruttenberg * slime.el 1.157 fix bug in sldb-princ-locals I introduced when adding fonts to sldb 2003-12-19 Alan Ruttenberg * swank-openmcl.lisp 1.42 in request-loop register output stream to be periodically slushed per Gary Byer's email. * slime.el 1.156 slime-goto-source-location. Sometimes source information is recorded but it isn't a standard "def" in that case, don't error out, just look for the most likely place for the definition. 2003-12-19 Luke Gorrie * null-swank-impl.lisp: Deleted this old file. See swank-backend.lisp instead. 2003-12-18 Alan Ruttenberg * swank-openmcl.lisp 1.41 in openmcl (break) now goes into slime debugger. (setq swank:*break-in-sldb* nil) to disable that. 2003-12-17 Alan Ruttenberg * slime.el 1.155 Allow font choices for backtrack. Add group for customizing them: sldb. Whole thing is enabled with sldb-enable-styled-backtrace which is off by default, for now. Try '(sldb-condition-face ((t (:foreground "DarkSlateGray" :weight bold)))) '(sldb-detailed-frame-line-face ((t (:foreground "brown" :weight bold :height 1.2)))) '(sldb-local-name-face ((t (:weight bold)))) '(sldb-restart-face ((t (:foreground "DarkBlue" :weight bold)))) '(sldb-restart-number-face ((t (:underline t :weight bold)))) '(sldb-restart-type-face ((t (:foreground "DarkSlateGrey" :weight bold)))) '(sldb-section-face ((t (:weight bold :height 1.2)))) '(sldb-selected-frame-line-face ((t (:foreground "brown" :weight bold :height 1.2)))) '(sldb-topline-face ((t (:foreground "brown" :weight bold :height 1.2)))) 2003-12-17 Alan Ruttenberg * slime.el 1.154 Allow some face choices in the inspector. Try '(slime-inspector-label-face ((t (:weight bold)))) '(slime-inspector-topline-face ((t (:foreground "brown" :weight bold :height 1.2)))) '(slime-inspector-type-face ((t (:foreground "DarkRed" :weight bold)))) You can also set slime-inspector-value-face 2003-12-17 Alan Ruttenberg * swank-openmcl.lisp 1.40 Fix an error with frame-source-location-for-emacs when the function was a method-function. Defined method-source-location that handles this case. You can still end up looking at the wrong definition, as the protocol doesn't allow passing back the qualifiers and specializers to look up the correct one in the file . * swank-openmcl.lisp 1.39 Allow you to continue after interrupting. Properly set *swank-debugger-stack-frame* when interrupting. * slime.el 1.152 sldb-continue now uses slime-oneway-eval 2003-12-17 Helmut Eller * slime.el: Better handling of asynchronous output. (slime-output-end): New variable. Use this marker to insert output. Insert asynchronous output inserted before the "input region" and before the prompt. (slime-show-last-output): Use it. (slime-repl-insert-prompt): Initialize it. (slime-last-output-start): Removed. (slime-flush-output): Increase delay to 20 usecs. (slime-with-output-end-mark): Renamed from slime-with-output-at-eob. Insert a newline if needed. (slime-output-string, slime-repl-activate): Use it. (slime-repl-return): Ensure that slime-repl-input-end-mark points to a reasonable location. 2003-12-17 Luke Gorrie * HACKING: New file summarising our way of working. 2003-12-16 Luke Gorrie * slime.el (slime-lisp-preferred-package-nicknames): Removed. Not very interesting (and slightly broken) now that shortest-nicknames are automatically used. (slime-output-oneway-evaluate-request): New function to evaluate an expression for side-effects (without getting a result). (slime-idle-state): Handle new :emacs-evaluate-oneway. (slime-debugging-state): Handle :emacs-evaluate-oneway. (sldb-invoke-restart): Use slime-oneway-eval. This avoids pushing an evaluating state (which will be aborted, and print an unnecessary message saying so). (sldb-break-with-default-debugger): New command to break into the default TTY debugger. Bound to 'B' in *sldb*. (slime-read-string-state): Added :emacs-evaluate-oneway. * swank.lisp (invoke-nth-restart-for-emacs): Wrapper around INVOKE-NTH-RESTART that checks that Lisp and Emacs agree on the debug level. This detects and ignores old restart requests when several are sent at once (possible because of new oneway-eval feature). (oneway-eval-string): New function to evaluate a string without sending a result, and with *DEBUGGER-HOOK* bound to NIL. (The debugger hook is inhibited to avoid state conflicts.) 2003-12-15 Luke Gorrie * swank-openmcl.lisp (ccl::*warn-if-redefine-kernel*): Support for interrupting the listener (by Alan Ruttenberg). 2003-12-15 Helmut Eller * swank.lisp *start-swank-in-background*: Set to t by default. * slime.el (slime-eval-last-expression-display-output): New command. Bound to C-x M-e. Suggested by Nicolas Neuss. (slime-display-output-buffer): New function. (slime-slime-compile-file): Use it. 2003-12-15 Luke Gorrie * swank.lisp (*processing-rpc*, *multiprocessing-enabled*, *debugger-hook-passback*): New variables. (with-conversation-lock, with-I/O-lock): New macros. (read-next-form): Use with-I/O-lock. (send-to-emacs): Use with-I/O-lock. (swank-debugger-hook): When called asynchronously (i.e. not during RPC) and multiprocessing is enabled, suspend until acknowleged by Emacs. (install-global-debugger-hook): Install a SLIME-DEBUGGER-FUNCTION globally on *DEBUGGER-HOOK*. (startup-multiprocessing-for-emacs): Called to initialize multiprocessing. (eval-string): Dynamically set the *PROCESSING-RPC* flag. (eval-string): Nasty hack with *DEBUGGER-HOOK-PASSBACK* to install debugger hook. Temporary, I swear! (eval-region, shortest-package-nickname): Report the shortest package nickname to Emacs (for the REPL prompt). Patch from Marco Baringer. * swank-backend.lisp: Defined multiprocessing interface. * swank-cmucl.lisp: Implmemented the multiprocessing interface. * slime.el (slime-multiprocessing): When true, use multiprocessing in Lisp if available. (slime-global-debugger-hook): When true, globally set *debugger-hook* to use the SLIME debugger. For use with SERVE-EVENT and multiprocessing. (slime-handle-oob): Handle :AWAITING-GOAHEAD message from threads that have suspended to wait for Emacs's attention. (slime-give-goahead): New command to allow a suspended thread to continue (bound to RET in the thread-control-panel). (slime-thread-control-panel): New command to display a buffer showing all threads that are suspending waiting for Emacs's attention. Bound to `C-c C-x t'. (slime-popup-thread-control-panel): When true, automatically popup the thread-control buffer when a new thread suspends. 2003-12-14 Alan Ruttenberg * swank-openmcl.lisp (eval-in-frame, inspect-object and friends): Most of this is copied from swank-cmucl. The parts between &&&&& are what I added for openmcl. I piggyback off the inspector which is shipped with openmcl, so inspecting won't look the same as it would in cmucl, I imagine. Still, it's a start. eval in frame uses frame-locals to get bindings so if you have debug settings low or don't have *save-local-symbols* set you won't be able to evaluate. 2003-12-14 Helmut Eller * swank-lispworks.lisp (tracedp, toggle-trace-fdefinition): Moved to swank.lisp. * swank-allegro.lisp (create-swank-server): Add support for BACKGROUND and CLOSE argument. (call-with-debugging-environment): Use excl::int-newest-frame to avoid the kludge with *break-hook*. (sldb-abort): New function. (frame-source-location-for-emacs): Dummy definition. (compile-file-for-emacs): The argument is called :load-after-compile and not :load. (xref-results-for-emacs): Use dolist instead of loop. * swank-openmcl.lisp (create-swank-server): Add support for BACKGROUND and CLOSE argument. (open-stream-to-emacs): Support for dedicated output stream. * swank.lisp: *start-swank-in-background*, *close-swank-socket-after-setup*, *use-dedicated-output-stream*: Moved here from swank-cmucl. (sldb-continue): Don't pass the condition as argument, because that doesn't work with Allegro. (toggle-trace-fdefinition, tracedp): Replace backend specific code with portable, but ugly, calls to eval. * swank-cmucl.lisp (compile-system-for-emacs): Add method for CMUCL. * slime.el (slime-goto-source-location): Better regexp for package qualified symbols. Allow dashes in the name and two colons. Reported by Alan Ruttenberg. 2003-12-13 Helmut Eller * swank-openmcl.lisp (create-swank-server): Interrupt the right thread. Patch by Alan Ruttenberg. Not yet enabled, due to lack of test platform. (sldb-disassemble): Implement sldb-disassemble command. Patch by Alan Ruttenberg. Remove #' from lambdas. 2003-12-12 Helmut Eller * swank-cmucl.lisp (create-swank-server): New keyword arguments to control the server: BACKGROUND and CLOSE. fd-handlers are used if BACKGROUND is true. If close CLOSE is true, close the socket after the first connection; keep it open otherwise. *start-swank-in-background*, *close-swank-socket-after-setup*: The default values of the corresponding arguments for create-swank-server. (compile-file-for-emacs): Don't load the fasl-file when the compilation failed. * swank-openmcl.lisp (toggle-trace-fdefinition, tracedp): Implement trace command. Patch by Alan Ruttenberg. (find-function-locations, find-source-locations): Handle variables, and method-combinations. General cleanups. (source-info-first-file-name): Removed. (list-callers): Fixed. (list-callers): Fixed some more. method-name is not exported in 0.14. From Marco Baringer. (swank-accept-connection): Accept multiple connections. Patch by Marco Baringer. * swank-loader.lisp (user-init-file): Use homedir's truename. Reported by Friedrich Dominicus. * slime.el (slime-repl-current-input): Don't remove the final newline if we are in reading state. (slime-goto-source-location): Regex-quote the function-name and handle package prefixes. Reported by Alan Ruttenberg. (slime-output-string): Insert asynchronous output before the prompt. 2003-12-12 Daniel Barlow * swank-source-path-parser.lisp: new file, excerpting part of swank-cmucl.lisp to where SBCL can find it as well. 2003-12-11 Luke Gorrie * slime.el (slime-one-line-ify): New function to convert multi-line strings to one-liners by replacing any newline followed by indentation by a single space. (slime-xrefs-for-notes): Use it. 2003-12-11 Daniel Barlow * swank-sbcl.lisp (compiler-note-location): replace with thinly-ported version from the CMUCL backend which understands :lisp as a pathname * slime.el (slime-xrefs-for-notes): a little more temporary variables, a little less cdr. Should be slightly faster on big systems (slime-goto-next-xref): set window point as well as buffer point - now works in GNU Emacs 21.2.1 * swank.lisp (swank-compiler): new function abstracts commonality between swank-compile-{file, string}. (swank-load-system): call swank-compiler to load asdf system * swank-sbcl.lisp (compiler-note-location and elsewhere): remove all trace of *compile-filename* (compile-*-for-emacs): shorten * swank-backend.lisp (call-with-compilation-hooks): new GF should set up all appropriate error condition loggers etc to do a compilation preserving the notes. Implement for sbcl, cmucl * slime.el (slime-find-asd, slime-load-system): new command to compile and load an ASDF system with all the usual compiler notes and stuff (slime-compilation-finished): if more than one file has new errors/notes, create an xref buffer to show them all (slime-remove-old-overlays): bug fix: now removes overlays even at start of buffer (slime-overlay-note): do nothing quietly if slime-choose-overlay-region returns nil (slime-choose-overlay-region): return nil if note has no location 2003-12-11 Helmut Eller * slime.el (slime-repl-previous-prompt, slime-repl-next-prompt): New commands. Suggested by Håkon Alstadheim. (slime-repl-beginning-of-defun, slime-repl-end-of-defun): New commands. Suggested by Andreas Fuchs. (slime-repl-insert-prompt): Mark the prompt with a slime-repl-prompt text property. (slime-repl-eol): New function. Mostly for symmetry. (slime-repl-in-input-area-p, slime-repl-at-prompt-end-p): New predicates. (slime-repl-find-prompt, slime-search-property-change-fn): New functions. (slime-ir1-expand): New command. * swank-cmucl.lisp (accept-connection, request-loop): Don't use fd-handlers. The code for the request-loop itself is now almost the same as in the Allegro version. (print-ir1-converted-blocks, expand-ir1-top-level): New functions. 2003-12-10 Daniel Barlow * swank-sbcl.lisp (serve-request): more fiddling with serve-event descriptors * slime.el (slime-repl-return): slime-check-connected, otherwise pressing Return in an unconnected repl gets a bit weird 2003-12-10 Helmut Eller * swank-allegro.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-sbcl.lisp (create-swank-server): Accept an announce-function keyword argument. * swank.lisp (start-server): Pass an announce callback function to create-swank-server. Works better with single threaded implementations. (announce-server-port, simple-announce-function): New functions. (alistify): Doc fix. * swank-cmucl.lisp (create-swank-server): Use announce callback. (sldb-disassemble): New function. * slime.el (sldb-disassemble): New command. Bound to D. 2003-12-08 Luke Gorrie * swank-cmucl.lisp (*debug-definition-finding*): Now nil by default, so that errors while looking for definitions are printed as a message and not debugged. * slime.el (slime-read-from-minibuffer): Now the only completing-read function, stale ones deleted. 2003-12-07 Luke Gorrie * slime.el (sldb-prune-initial-frames): Use regexp-heuristics and the '--more--' token to avoid showing the user Swank-internal backtrace frames initially. (slime-repl-current-input): Don't include the final newline character, to make backtraces prettier. (slime-autodoc): Fixed annoying case where autodocs would be fetched in a loop for undocumented symbols. * swank.lisp (compound-prefix-match): New name and rewritten for speed. Completion is much faster now. (*sldb-initial-frames*): Send up to this many (default 20) backtrace frames to Emacs when entering the debugger. 2003-12-07 Helmut Eller * swank-allegro.lisp, swank-backend.lisp, swank-cmucl.lisp, swank-lispworks.lisp, swank-openmcl.lisp, swank-sbcl.lisp (function-source-locations): Make it at generic function. (function-source-location-for-emacs): Removed. Fixes bug reported by Marco Baringer. * slime.el (slime-interactive-eval): Insert the result at point, if called with prefix argument. 2003-12-06 Luke Gorrie * slime.el (slime-easy-menu): Added menubar support, contributed by Friedrich Dominicus. 2003-12-06 Helmut Eller * swank-allegro.lisp: New file. * swank-loader.lisp (user-init-file): Translate logical pathnames. Reported by Friedrich Dominicus. * swank-sbcl.lisp (handle-notification-condition): Don't ignore warnings without context. (compiler-note-location, brief-compiler-message-for-emacs, compiler-note-location): Handle null context. (compile-file-for-emacs): Bind *compile-filename* and load the fasl file only if it exists. (function-source-location): The name argument is now optional and should be a symbol. (find-function-locations): Return errors as a list of one error. (call-with-debugging-environment): Set *print-level* to 4 and *print-length* to 10. (Both where nil.) (source-location-for-emacs): Fall back to the location of the function, if there is no debug-block-info. (safe-source-location-for-emacs): Don't catch all conditions; only errors. *compile-filename*: New variable (open-listener): Don't make the socket non-blocking. * slime.el (slime-eval/compile-defun-dwim): New command. Suggested by "jan" . 2003-12-04 Helmut Eller * slime.el (slime-debugging-state): Don't set sldb-level after sldb-setup. Breaks the test-suite. (slime-eval-defun): Fix typos. (slime-xref-buffer, slime-goto-next-xref): Updated for the new xref code. (sldb-inspect-in-frame): Query with the sexp at point as initial value. (sldb-step): New command. Bound to s. * swank-cmucl.lisp (format-frame-for-emacs, compute-backtrace, backtrace): Don't send CMUCL's frame numbers to Emacs, use our own numbering. (set-step-breakpoints, sldb-step): Lisp side of sldb-step command. 2003-12-04 Luke Gorrie * hyperspec.el: Updated URL to point to a live copy of the hyperspec at lispworks.com, because the one on xanalys.com has disappeared. Patch from Vincent Arkesteijn on the ilisp-devel mailing list. 2003-12-04 Helmut Eller * swank-lispworks.lisp (toggle-trace-fdefinition, tracedp): New support functions for toggle-trace command. Written by Alain Picard. (compile-from-temp-file): Don't delete the binary file if there is none. (lispworks-severity): Map all ERRORs to :error. * slime.el (slime-eval-defun): Use slime-re-evaluate-defvar if the defun starts with "defvar". C-M-x in elisp does this too. (slime-re-evaluate-defvar): Take the form as argument. 2003-12-03 Helmut Eller * slime.el (slime-debugging-state): Initialize the sldb-buffer if (/= sldb-level level). (slime-who-specializes): New command. * swank-cmucl.lisp (create-swank-server): Set reuse-address to t by default. (resolve-note-location): Add method for warnings in interpreted code. (who-specializes): New function. (dd-source-location): Handle case without constructors more correctly. (source-path-source-position): Skip ambigous entries in source-map. (source-location-from-code-location): Simplified. 2003-12-03 Luke Gorrie * slime.el (slime-completing-read-internal): Fix from Sean O'Rourke. 2003-12-02 Helmut Eller * swank-sbcl.lisp (find-function-locations): Return a non-empty list of source locations. * slime.el (slime-with-xref-buffer): Remove spurious comma. (Bug reported by Raymond Wiker). Some reordering of the xref code. * swank.lisp (documentation-symbol): New optional argument for return value if the symbol is not documented. 2003-12-02 Sean O'Rourke * slime.el: (slime-repl-{clear-buffer,clear-output}): clear the last and entire output in the *slime-repl* buffer (slime-documentation): pop up a buffer with a symbol's documentation instead of its description, if found. (slime-complete-symbol): tweak the completion, taken from ilisp, to complete filenames inside strings. (slime-set-default-directory): also set *slime-repl*'s default-directory, so e.g. find-file makes sense. 2003-12-02 Daniel Barlow * slime.el (slime-with-xref-buffer): moved further up the file so it's defined before slime-show-xrefs needs it * swank-sbcl.lisp (function-source-location-for-emacs): return a list of source locations (one per method) when the request is for a GF. This seems to make the elisp side popup a window to let the user select one. Cool. 2003-12-01 Helmut Eller * swank-[cmucl,sbcl,openmcl,lispworks].lisp (invoke-nth-restart): Use invoke-restart-interactively. * slime.el (slime-create-note-overlay, slime-sexp-depth): The 'priority' property is unused. Remove it. * swank-openmcl.lisp (find-function-locations): Return all methods for generic functions. Doesn't work very well if multiple methods are in the same file. (swank-accept-connection): Don't create an extra thread, call request-loop directly. 2003-12-01 Luke Gorrie * slime.el (slime-repl-return): Goto end of input area before inserting newline. (slime-autodoc-message-ok-p): Test to see if a documentation message should be printed (returns nil if the minibuffer/echo-area is already being used). (slime-symbol-at-point): Skip back over whitespace before looking for the symbol. (slime-autodoc-delay): New configurable to specify the delay before printing an autodoc message (default 0.2 secs). (slime-ensure-typeout-frame): New function to call create a typeout frame unless it already exists. Suitable to run on slime-mode-hook if you always want to have a typeout window. (slime-log-events): When nil, don't log events to *slime-events*. This works-around a problem Raymond Toy has when starting SLIME under XEmacs. Still investigating.. 2003-11-29 Helmut Eller * slime.el: Rewrite the xref code to work with other source locations. (slime-edit-fdefinition): Use the xref window to display generic functions with methods. (slime-goto-source-location): New representation for source locations. Drop old code. (slime-list-callers, slime-list-callees): Use the xref window. Remove the slime-select-* stuff. (slime-describe-function): New command. Bound to C-c C-f. Primarily useful in Lispworks. (slime-complete-symbol): Display the completion window if the prefix is complete but not unique. (slime-forward-positioned-source-path): Enter the sexp only if the remaining sourcepath is not empty. (slime-read-symbol-name): New optional argument QUERY forces querying. * swank.lisp (group-xrefs): Handle unresolved source locations. (describe-symbol): Print something sensible about unknown symbols. * swank-cmucl.lisp: Use the new format for source locations. (find-function-locations): New function. Replaces function-source-location-for-emacs. Returns a list of source-locations. (resolve-note-location): Renamed from resolve-location. Simplified. (brief-compiler-message-for-emacs): Print the source context (that's the thing after ==>). (who-xxxx): Take strings, not symbols, as arguments. (function-callees, function-callers): Use the same format as the who-xxx functions. Support for byte-compiled stuff. (code-location-stream-position): Try to be clever is the source path doesn't match the form. (call-with-debugging-environment): Bind *print-readably* to nil. * swank-lispworks.lisp: Use the new format for source locations. Implement the find-function-locations. (list-callers, list-callers): New functions. * swank-sbcl.lisp, swank-openmcl.lisp: Use the new format for source locations and implement find-function-locations (just calls the old code). 2003-11-29 Daniel Barlow * swank-sbcl.lisp (source-location-for-emacs): sb-debug::print-description-to-string takes only two args, not three. Now 'v' command works in sldb :-) * slime.el (slime-idle-state): added :debug as a valid transition * swank.lisp (slime-debugger-function): New. Returns a function suitable for use as the value of *DEBUGGER-HOOK* to install the SLIME debugger globally. Must be run from the *slime-repl* buffer or somewhere else that the slime streams are visible so that it can capture them. e.g. for Araneida: PKG> (setf araneida:*restart-on-handler-errors* (swank:slime-debugger-fucntion)) 2003-11-29 Helmut Eller * slime.el: Some tweaking to the REPL. slime-repl-input-end-mark is now always left inserting and slime-mark-input-end "deactivates" the end mark by moving it to the beginning of the buffer. (slime-goto-source-location): Next try for more uniform source-locations. A source-location is now a structure with a "buffer-designator" and "position-designator". The buffer-designator open the file or buffer and the position-designator moves point to the right position. (slime-autodoc-mode): New command. (slime-find-fdefinitions): Experimental support for generic functions with methods. (slime-show-xrefs, slime-insert-xrefs, slime-goto-xref): Rewritten to work with more general source locations. * swank.lisp: Structure definitions for source-locations. (alistify, location-position<, group-xrefs): Utilities for xref support. * swank-cmucl.lisp (code-location-source-location): Renamed from safe-source-location-for-emacs. (code-location-from-source-location): Renamed from source-location-for-emacs. (find-fdefinitions, function-source-locations): New functions. (safe-definition-finding): New macro. * swank-lispworks.lisp: Xref support. (make-dspec-location): Updated for the new source-location format. 2003-11-29 Luke Gorrie * slime.el (complete-symbol, arglist): Updated test cases for new completion interface. 2003-11-28 Luke Gorrie * slime.el (slime-complete-symbol): Use the new completion support from the Lisp side. Don't obscure minibuffer input with completion messages. * completer.el: Dead and buried! Replaced by half a page of Common Lisp. Thanks Bill Clementson for a motivational and well-deserved taunt. * swank.lisp (longest-completion): Compute the best partial completion for Emacs. * slime.el (slime-swank-port-file): Try (temp-directory), temporary-file-directory, or "/tmp/", depending on what is (f)bound. 2003-11-28 Helmut Eller * swank-lispworks.lisp (make-dspec-location): Handle logical pathnames. Reported by Alain Picard. * swank-sbcl.lisp, swank-cmucl.lisp: Support for output redirection to an Emacs buffer via a dedicated network stream. Can be enabled with *use-dedicated-output-stream*. * swank.lisp (slime-read-string, eval-string): Flush *emacs-io*. (eval-in-emacs): New function. * slime.el: Support for output from a dedicated socket. (slime-open-stream-to-lisp, slime-output-filter): New functions. Reorganized REPL code a bit. (slime-input-complete-p): Use vanilla forward-sexp, because slime-forward-sexp sometimes caused endless loops. (slime-disconnect): Close the output-stream-connection if present. (slime-handle-oob): A new :%apply event. Executes arbitrary code; useful for bootstrapping. (slime-flush-output): New function. (slime-symbol-end-pos): Didn't work at all in Emacs20. Just use point until someone commits a proper fix. Various uses of display-buffer: The second argument is different in XEmacs. (interrupt-bubbling-idiot): Reduce the timeout to 5 seconds. 2003-11-27 Luke Gorrie * slime.el (slime-swank-port-file): Use `temporary-file-directory' instead of hardcoding "/tmp/". 2003-11-27 Helmut Eller * swank-lispworks.lisp: New backend. * slime.el (slime-with-output-to-temp-buffer): Save the window configuration in a buffer local variable instead on a global stack. (slime-show-last-output): Behavior customizable with slime-show-last-output-function. Various tweaking for better multi-frame support. * swank-backend.lisp: List exported symbols explicitly. * swank-cmucl.lisp (function-source-location): Better support for generic functions. * swank.lisp (briefly-describe-symbol-for-emacs): Don't return unbound symbols. (describe-symbol, describe-function): Support package-qualified strings. * swank-loader.lisp: *sysdep-pathnames*: Add Lispworks files. (compile-files-if-needed-serially): Compile all files in a compilation unit. 2003-11-27 Luke Gorrie * slime.el (slime-complete-symbol): Make a bogus alist out of the completion set, for compatibility with XEmacs. * completer.el: Stolen^Wimported from ILISP version 1.4. This is one revision prior to their latest, where they added a (require) for some other ILISP code. I backed down a revision to make it stand-alone, but this may mean that putting SLIME in the load-path before ILISP will break ILISP. So, beware. (completer-message): Cut dependency on undefined ilisp constant testing for xemacs. 2003-11-27 Zach Beane * swank.lisp (completions): Complete compound symbols (see below). * slime.el (slime-complete-symbol): Use `completer' package to handle more sophisticated completions. This includes abbreviations like "m-v-b" => "multiple-value-bind". It also (somewhat scarily) redefines other standard Emacs completion functions with similar capabilities. See commentary in completer.erl for details. 2003-11-25 Luke Gorrie * slime.el (slime-make-typeout-frame): New command to create a frame where commands can print messages that would otherwise go to the echo area. (slime-background-message): Function for printing "background" messages. Uses the "typeout-frame" if it exists. (slime-arglist): Print arglist with `slime-background-message'. (slime-message): Use typeout frame if it exists, but only for multi-line messages. 2003-11-25 Daniel Barlow * swank-sbcl.lisp: delete big chunk of leftover commented-out code * slime.el: arglist command to use slime-read-symbol-name, not slime-read-symbol * README: Minor updates for currency 2003-11-24 Luke Gorrie * swank-backend.lisp (compiler-condition): Removed use of :documentation slot option. That is not portable (to CMUCL 18e). * swank.lisp (eval-string-in-frame): Fixed symbol-visibility problem (thanks Lawrence Mitchell). * swank-sbcl.lisp (function-source-location): Use TRUENAME to resolve source file name (thanks Lawrence Mitchell). * slime.el (slime-goto-source-location): Fixes when finding definition by regexp: open the right file (was missed), and tweaked regexp to match more 'def' forms - especially `defmacro-mundanely' (hyphen wasn't allowed before). 2003-11-23 Luke Gorrie * slime.el (sldb-fetch-more-frames): Call swank:backtrace instead of (renamed) swank:backtrace-for-emacs. * swank-cmucl.lisp, swank-sbcl.lisp, swank-openmcl-lisp: Updated to use new debugger interfaces in swank-backend.lisp. * swank-backend.lisp (backtrace, eval-in-frame, frame-catch-tags, frame-locals, frame-source-location-for-emacs): More interface functions. * slime.el (slime-goto-source-location): Added optional `align-p' argument for :file and :emacs-buffer location types. This is for OpenMCL - unlike CMUCL its positions are not character-accurate so it needs to be aligned to the beginning of the sexp. (slime-connect): Don't delete a random window when *inferior-lisp* isn't visible. * swank-cmucl.lisp: Tidied up outline-minor-mode structure and added comments and docstrings. * swank-cmucl.lisp, swank-sbcl.lisp, swank-openmcl-lisp: Updated to use new debugger interface in swank-backend.lisp. * swank-backend.lisp (call-with-debugging-environment, sldb-condition, debugger-info-for-emacs): More callbacks defined. * swank.lisp: Tidied up outline-minor-mode structure, added comments and docstrings. (sldb-loop): Took over the main debugger loop. * swank-openmcl.lisp: Updated after refactoring of other backends (was broken). * slime.el (slime-goto-source-location): Align at beginning of sexp after (:file name pos) and (:emacs-buffer buffer pos). * swank-sbcl.lisp (describe-symbol-for-emacs): Don't ask for (documentation SYM 'class), CLHS says there isn't any 'class documentation (and SBCL warns). * swank.lisp, swank-cmucl.lisp, swank-sbcl.lisp: Refactored interface through swank-backend.lisp for: swank-compile-file, swank-compile-string, describe-symbol-for-emacs (apropos), macroexpand-all, arglist-string. * swank-backend.lisp: New file defining the interface between swank.lisp and the swank-*.lisp implementation files. 2003-11-22 Brian Mastenbrook * swank.asd: ASDF definition to load "swank-loader.lisp". This is useful for starting the Swank server in a separate Lisp and later connecting with Emacs. The file includes commentary. 2003-11-22 Luke Gorrie * slime.el (slime-connect): Slightly reordered some window operations to ensure that *slime-repl* is popped up after `M-x slime-connect'. (slime-show-last-output): If the *slime-repl* buffer is already visible in any frame, don't change anything. * swank.lisp (listener-eval): Format results in *buffer-package*. Exporting (CREATE-SWANK-SERVER ). This function can be called directly to start a swank server, which you can then connect to with `M-x slime-connect'. It takes a port number as argument, but this can be zero to use a random available port. The function always returns the actual port number being used. 2003-11-19 Helmut Eller * swank.lisp: Better printing off return values. In the REPL buffer we print now every value in a separate line and in the echo area separated by a comma. We also print "; No value" for the degenerated case (values). A new variable *sldb-pprint-frames* controls the printing of frames in the debugger. (Thanks Raymond Toy for the suggestions.) * swank-cmucl.lisp (format-frame-for-emacs): Bind *pretty-print* to *sldb-pprint-frames*. * slime.el: Window configuration are now saved on a stack, not in a single global variable. (slime-with-output-to-temp-buffer) We use now our own version of with-output-to-temp-buffer. The default version is painfully incompatible between Emacs versions. The version selects the temporary buffer and the behaivor of "q" is now more consistent (as suggested by Jan Rychter). (slime-connect): Hide the *inferior-lisp-buffer* when we are connected. sldb-mode-map: Bind n and p to sldb-down and sldb-up. (slime-edit-fdefinition-other-window): New function. Suggested by Christian Lynbech. * swank-loader.lisp (user-init-file): There is now a user init file (~/.swank.lisp). It is loaded after the other files. 2003-11-16 Helmut Eller * slime.el: [slime-keys] Override C-c C-r with slime-eval-region (reported by Paolo Amoroso). * swank-loader.lisp: Compile and load gray stream stuff for SBCL and OpenMCL. * swank-openmcl.lisp, swank-sbcl.lisp: Import gray stream symbols. (without-interrupts*): New function. * swank.lisp (send-to-emacs): Protect the write operations by a without-interrupts, so that we don't trash the *cl-connection* buffer with partially written messages. * swank-cmucl.lisp (without-interrupts*): New function. * swank-gray.lisp (stream-write-char): Don't flush the buffer on newlines. * slime.el: Add some docstring. (interrupt-bubbling-idiot): New test. [slime-keys]: Don't bind "\C- ". Problematic on LinuxPPC. 2003-11-15 Helmut Eller * slime.el: Some tweaking for better scrolling in the *slime-repl* buffer (suggested by Jan Rychter). (slime-compile-file): Display the output buffer at the beginning. (slime-show-last-output): Include the prompt so that window-point is updated properly. (slime-with-output-at-eob): Update window-point if the buffer is visible. (slime-state/event-panic): Include the *slime-events* and *cl-connection* buffers in the report. * swank-cmucl.lisp (sos/out): Don't flush the buffer on newlines. 2003-11-13 Helmut Eller * slime.el: Imititate an "output-mark". Output from Lisp should move point only if point is at the end of the buffer. (Thanks William Halliburton for the suggestion.) (slime-with-output-at-eob): New function. (slime-output-string, slime-repl-maybe-prompt): Use it. slime-repl-mode-map: Override "\C-\M-x". An experimental scratch buffer: (slime-eval-print-last-expression): New function. (slime-scratch-mode-map, slime-scratch-buffer, slime-switch-to-scratch-buffer, slime-scratch): New functions. * swank-cmucl.lisp (resolve-location): Emacs buffer positions are 1 based. Add 1 to the 0 based file-position. 2003-11-13 Luke Gorrie * slime.el (slime-connect): pop-to-buffer into *slime-repl* when we connect. 2003-11-13 Helmut Eller * slime.el, swank-cmucl.lisp, swank-sbcl.lisp, swank-openmcl: New representation for "source-locations". Compiler notes have now a message, a severity, and a source-location field. Compiler notes, edit-definition, and the debugger all use now the same representation for source-location. CMUCL does the source-path to file-position translation at the Lisp side. This works better with reader macros, in particular with backquote. The SBCL backend still does the translation on the Emacs side. OpenMCL support is probably totally broken at the moment 2003-11-13 Luke Gorrie * slime.el (slime-repl-previous-input, slime-repl-next-input): When partial input has already been entered, the M-{p,n} REPL history commands only match lines that start with the already-entered prefix. This is comint-compatible behaviour which has been requested. The history commands also skip over line identical to the one already entered. (slime-complete-maybe-restore-window-confguration): Catch errors, so that we don't cause `pre-command-hook' to be killed. (slime-truncate-lines): If you set this to nil, slime won't set `truncate-lines' in buffers like sldb, apropos, etc. 2003-11-12 Luke Gorrie * slime.el (slime-show-description): XEmacs portability: don't use `temp-buffer-show-hook'. (slime-inspect): Use `(slime-sexp-at-point)' as default inspection value (thanks Jan Rychter). 2003-11-10 Luke Gorrie * slime.el (slime-post-command-hook): Inhibit unless (still) in slime-mode. Only call `slime-autodoc-post-command-hook' when `slime-autodoc-mode' is non-nil. (slime-setup-command-hooks): Use `make-local-hook' instead of `make-local-variable'. 2003-11-08 Helmut Eller * slime.el: slime-highlight-face: Use the :inherit attribute if possible. (slime-face-inheritance-possible-p): New function. * slime.el (slime-repl-return): Only send the current input to Lisp if it is a complete expression, like inferior-slime-return. * swank.lisp (completions): Use *buffer-package* if no other package is given. * slime.el: Remove the non-working face inheriting stuff. Hardcode colors for slime-highlight-face and specify the :inherit attribute for slime-repl-output-face. So Emacs21 will do the right thing and the others get at least a customizable face. * slime.el (slime-buffer-package): Try to find be the package name before resorting to slime-buffer-package. Return nil and not "CL-USER" if the package cannot be determined. (slime-goto-location): Insert notes with a source path, but without filename or buffername, at point. This can happen for warnings during macro expansion. (The macro expander is a interpreted function and doesn't have a filename or buffername.) (slime-show-note): Display 2 double quotes "" in the echo area for zero length messages. SERIES tends to signal warnings with zero length messages. (slime-print-apropos): Add support for alien types. * swank-cmucl.lisp (briefly-describe-symbol-for-emacs): Add support for alien types. (source-path-file-position): Read the entire expression with a special readtable. The readtable records source positions for each sub-expression in a hashtable. Extract the sub-expression for the source path from the read object and lookup the sub-expression in the hashtable to find its source position. * swank-sbcl.lisp (swank-macroexpand-all): Implemented. 2003-11-06 Luke Gorrie * slime.el (slime-autodoc-mode): When non-nil, display the argument list for the function-call near point each time the point moves in a slime-mode buffer. This is a first-cut; more useful context-sensitive help to follow (e.g. looking up variable documentation). (slime-autodoc-cache-type): Cache policy "autodoc" documentation: either nil (no caching), 'last (the default - cache most recent only), or 'all (cache everything on symbol plists forever). * slime.el: Convenience macros: (when-bind (var exp) &rest body) => (let ((var exp)) (when var . body)) (with-lexical-bindings (var1 ...) . body) => (lexical-let ((var1 var1) ...) . body) * slime.el (slime, slime-lisp-package): Reset `slime-lisp-package' (the REPL package) when reconnecting. (slime-buffer-package): Return `slime-lisp-package' when the major-mode is `slime-repl-mode'. 2003-11-04 Helmut Eller * slime.el (slime-read-string-state): Add support for evaluation requests. (slime-repl-read-break): New command. alternative. slime-keys: XEmacs cannot rebind C-c C-g. Use C-c C-b as an alternative. (slime-selector): XEmacs has no prompt argument for read-char. (slime-underline-color, slime-face-attributes): Make face definitions compatible with XEmacs and Emacs20. (slime-disconnect): Delete the buffer of the socket. (slime-net-connect): Prefix the connection buffer name with a space to avoid accidental deletion. * swank.lisp (slime-read-string): Send a :read-aborted event for non-local exits. (case-convert): Handle :invert case better. 2003-11-03 Helmut Eller * slime.el (slime-display-message-or-view, slime-remove-message-window): Display too long lines in a new window. Add a temporary pre-command-hook to remove the multiline window before the next command is executed. (slime-complete-symbol): Save the window configuration before displaying the completions and try to restore it later. The configuration is restored when: (a) the completion is unique (b) there are no completion. It is also possible to delay the restoration until (c) certain characters, e.g, space or a closing paren, are inserted. (slime-selector): Don't abort when an unkown character is pressed; display a message and continue. Similiar for ?\?. Add a selector for the *sldb* buffer. (slbd-hook, sldb-xemacs-post-command-hook): Emulate Emacs' point-entered text property with a post-command hook. * swank.lisp (case-convert, find-symbol-designator): New functions. * swank-cmucl.lisp, swank-openmcl.lisp, swank-sbcl.lisp (arglist-string): Don't intern the function name. Use find-symbol-designator instead. 2003-11-03 Luke Gorrie * slime.el (slime-display-buffer-region): Hacked to fix completely inexplicable XEmacs problems. 2003-11-2 Helmut Eller * null-swank-impl.lisp, swank-cmucl.lisp, swank-openmcl.lisp, swank.lisp: Input redirection works now on the line level, like a tty. Output streams are now line buffered. We no longer compute the backtrace-length. * slime.el: (slime-repl-read-mode, slime-repl-read-string, slime-repl-return, slime-repl-send-string, slime-read-string-state, slime-activate-state): Reorganize input redirection. We no longer work on the character level but on a line or region; more like a terminal. This works better, because REPLs and debuggers are usually written with a line buffering tty in mind. (sldb-backtrace-length, slime-debugging-state, slime-evaluating-state, sldb-setup, sldb-mode, sldb-insert-frames, sldb-fetch-more-frames): Don't use backtrace-length. Computing the length of the backtrace is (somewhat strangely) an expensive operation in CMUCL, e.g., it takes >30 seconds to compute the length when the yellow zone stack guard is hit. 2003-11-02 Luke Gorrie * slime.el (slime-log-event): Added a *slime-events* buffer recording all state machine events. The buffer uses hideshow-mode to fold messages down to single lines. (slime-show-source-location): Bugfix: only create source-highlight overlay if the source was actually located. (slime-selector): Renamed from `slime-select' because that function name was already in use. Ooops! * swank.lisp (eval-string): force-output on *slime-output* before returning the result. This somewhat works around some trouble where output printed by lisp is being buffered too long. * slime.el (slime-lisp-package-translations): Association list of preferred package nicknames, for the REPL prompt. By default maps COMMON-LISP->CL and COMMON-LISP-USER->CL-USER. 2003-11-01 Luke Gorrie * slime.el (slime-select): Added an extensible "Select" command, which I gather is a LispM/Martin-Cracauer knock-off. When invoked, the select command reads a single character and uses that to decide which buffer to switch to. New characters can be defined, and the currently availables ones can be seen with '?'. I have not assigned a key to Select, because it seems like a command that should have a global binding. I would suggest `C-c s'. * swank.lisp (*slime-features*): Variable remembering the FEATURES list. (sync-state-to-emacs): Update Emacs about any state changes - currently this just means changes to the FEATURES list. (eval-string): Call `sync-state-to-emacs' before sending result. (eval-region): With optional PACKAGE-UPDATE-P, if the evaluation changes the current package, tell Emacs about the new package. (listener-eval): Tell `eval-region' to notify Emacs of package changes, so that e.g. (in-package :swank) does the right thing when evaluated in the REPL. * slime.el (slime-repl-output-face, slime-repl-input-face): Face definitions for output printed by Lisp and for previous REPL user inputs, respectively. Defaulting the input face to bold rather than underline, because it looks better on multi-line input. (slime-handle-oob): Two new out-of-band messages (:new-features FEATURES) and (:new-package PACKAGE-NAME). These are used for Lisp to tell Emacs about changes to *FEATURES* and *PACKAGE* when appropriate. (slime-same-line-p): Better implementation (does what the name suggests). (slime-lisp-package): New variable keeping track of *PACKAGE* in Lisp -- or at least, the package to use for the REPL. (slime-repl-insert-prompt): The prompt now includes the package name. (slime-repl-bol): C-a in the REPL now stops at the prompt. (slime-repl-closing-return): C-RET & C-M-m now close all open lists and then send input in REPL. (slime-repl-newline-and-indent): C-j in REPL is now better with indentation (won't get confused by unmatched quotes etc appearing before the prompt). 2003-11-1 Helmut Eller * slime.el (slime-debugging-state): Save the window configuration in a state variable. sldb-saved-window-configuration: Removed. (slime-repl-mode): Use conservative scrolling. (slime-repl-insert-prompt): Set window-point after the prompt. (slime-repl-add-to-input-history): Don't add subsequent duplicates to the history. * swank.lisp (slime-read-char): Flush the output before reading. (listener-eval): Like eval region but set reader variables (*, **, *** etc.) * swank-openmcl.lisp, swank-sbcl.lisp: Implement stream-line-column. * swank-cmucl.lisp (slime-input-stream-misc-ops): Renamed from slime-input-stream-misc. 2003-10-31 Luke Gorrie * slime.el (slime-repl-mode-map): Bound `slime-interrupt' on both C-c C-c and C-c C-g. * swank.lisp (interactive-eval): Evaluate in *buffer-package*. * slime.el: Tweaked debugger window management somewhat: the window configuration is saved when the debugger is first entered and then restored when the idle state is reached. 2003-10-31 Helmut Eller * slime.el: (slime-repl-read-mode, slime-repl-read-xxx): New minor mode for stream character based input to Lisp. * swank.lisp: *read-input-catch-tag*, take-input, slime-read-char: Moved here from swank-cmucl.lisp. (defslimefun, defslimefun-unimplemented): Move macro definitions to the beginning of the file. * swank-cmucl.lisp: (slime-input-stream, slime-input-stream-read-char, lime-input-stream-misc): Character input stream from Emacs. (slime-input-stream/n-bin): Removed. * swank-openmcl.lisp, swank-sbcl.lisp: Gray stream based input redirection from Emacs. 2003-10-29 Helmut Eller * slime.el: Beginnings of a REPL-mode. Minor debugger cleanups. * swank.lisp: slime-read-error: New condition. (read-next-form): Re-signal the conditions as slime-read-errors. And check the result of read-sequence (i.e. detect CMUCL's read-sequence bug). (sldb-continue, throw-to-toplevel): Was more or less the same in all backends. * swank-openmcl.lisp, swank-sbcl.lisp, swank-cmucl.lisp: (serve-request): Handle slime-read-errors and bind a slime-toplevel catcher. * swank-cmucl.lisp: (sldb-loop): Flush output at the beginning. (inspect-in-frame): New function. (frame-locals): Don't send the validity indicator across wire. Too cmucl specific. 2003-10-29 Luke Gorrie * slime.el (slime-net-sentinel): Only show a message about disconnection if the inferior-lisp is still running. (slime-interrupt, slime-quit): Only send the quit/interrupt message to Lisp if it is in fact evaluating something for us. This fixes a protocol bug reported by Paolo Amoroso. Added (require 'pp). 2003-10-28 James Bielman * null-swank-impl.lisp: New file. * swank-openmcl.lisp: Pre-refactoring updates to the OpenMCL backend: (map-backtrace): Renamed from DO-BACKTRACE. (frame-source-location-for-emacs): New function. (function-source-location-for-emacs): New function, * swank-openmcl.lisp: Docstring updates/additions. 2003-10-25 Luke Gorrie * Everywhere: Changed the connection setup to use a dynamic collision-free TCP port. The new protocol is this: Emacs calls (swank:start-server FILENAME) via the listener. FILENAME is /tmp/slime.${emacspid} Lisp starts a TCP server on a dynamic available port and writes the port number it gets to FILENAME. Emacs asynchronously polls for FILENAME's creation. When it exists, Emacs reads the port number, deletes the file, and makes the connection. The advantage is that you can run multiple Emacsen each with an inferior lisp, and the port numbers will never collide and Emacs will always connect to the right lisp. All backends are updated, but only CMUCL and SBCL are tested. Therefore, OpenMCL is almost certainly broken just now. * slime.el (inferior-slime-closing-return): New command that closes all open lists and sends the result to Lisp. Bound to C-RET and (for people who use C-m for RET) C-M-m. (inferior-slime-indent-line): Improved indentation in the inferior list buffer. 2003-10-24 Luke Gorrie * slime.el (inferior-slime-return): Command bound to RET in inferior-slime-mode: only send the current input to Lisp if it is a complete expression (or prefix argument is given). Two reasons: it makes the input history contain complete expressions, and it lets us nicely indent multiple-line inputs. (Thanks Raymond Toy for the suggestions.) 2003-10-23 Luke Gorrie * slime.el (slime-maybe-start-lisp): Restart inferior-lisp if the process has died. * swank-sbcl.lisp (accept-connection): Use a character stream to match swank.lisp. 2003-10-22 Helmut Eller * swank-cmucl.lisp (setup-request-handler): Create a character stream. (read-next-form): Removed. * swank.lisp (read-next-form, send-to-emacs): Assume *emacs-io* is a character stream. Add the necessary char-code/code-char conversions. * slime.el: slime-keys: Add :sldb keywords for keys useful in the debugger. (slime-init-keymaps): Allow allow :sldb keywords. inferior-lisp-mode-hook: Display the inf-lisp buffer if there is some output. (slime-process-available-input): Start a timer to process any remaining input. (slime-dispatch-event): The timer should take care of any lost input. So don't process the available input here. Remove the process-input argument. (slime-push-state, slime-pop-state, slime-activate-state, slime-idle-state, slime-evaluating-state): Update callers. (slime-debugging-state): Remove the unwind-protect in the :debug-return clause. Should not be necessary. sldb-mode-map: Define more slime-mode keys. (slime-time<, slime-time-add): Removed. Emacs-21 has equivalent time functions. (slime-sync-state-stack): Use Emacs-21 time-date functions. (seconds-to-time, time-less-p, time-add): Compatibility defuns. 2003-10-22 Luke Gorrie * slime.el (slime): With a prefix argument, prompt for the port number to use for communication with Lisp. This is remembered for future connections. 2003-10-22 Hannu Koivisto * slime.el (slime-space): Now allows one to insert several spaces with a prefix argument. 2003-10-21 Luke Gorrie * slime.el (slime-space): Don't give an error when not connected, to avoid feeping. * swank-sbcl.lisp (swank-compile-string): Include only one :SOURCE-PATH attribute in the plist, and replace the front element with a 0 (fixes a problem probably due to recent hacks to the elisp source-path lookups). * slime.el (inferior-slime-mode): New minor mode for use with `inferior-lisp-mode'. Defines a subset of the `slime-mode' keys which don't clash with comint (e.g. doesn't bind M-{p,n}). (slime-keys): List of keybinding specifications. (slime-find-buffer-package): If we don't find the "(in-package" by searching backwards, then try forwards too. * swank.lisp (completions): Fixed semantics: should now consider only/all completions that would not cause a read-error due to symbol visibility. Also avoiding duplicates and sorting on symbol-name. 2003-10-20 Luke Gorrie * swank.lisp (completions): Slight change of semantics: when a prefix-designator is package-qualified, like "swank:", only match symbols whose home-package matches the one given - ignore inherited symbols. * slime.el: Updated test suite to work with the different backends: (find-definition): Lookup definitions in swank.lisp. (arglist): Lookup arglists of functions in swank.lisp. 2003-10-20 Helmut Eller * slime.el (interactive-eval): Make test case independent of *print-case*. 2003-10-20 Luke Gorrie * swank-cmucl.lisp (clear-xref-info): Conditionalised xref:*who-is-called* and xref:*who-macroexpands* with #+CMU19. This makes SLIME compatible with CMUCL 18e, but also disables the `who-macroexpands' command in any CMUCL version that doesn't have the "19A" feature (which does break the command in some snapshot builds that can actually support it). 2003-10-20 Daniel Barlow * swank.lisp (*notes-database*): tyop fix * swank-sbcl.lisp (throw-to-toplevel): select TOPLEVEL restart instead of throwing to a catch that no longer exists * slime.el: change some strings containing 'CMUCL' to more backend-agnostic phrases 2003-10-19 Helmut Eller * slime.el, swank-cmucl.lisp, swank.lisp: First shoot at input redirection. * swank-sbcl.lisp, swank-openmcl.lisp: Bind *slime-input* and *slime-io* to dummy values. 2003-10-19 Luke Gorrie * slime.el (slime): Connection setup is now asynchronous, with retrying on a timer. This makes it possible to bring the server up by hand while debugging. `M-x slime' while already connected will cause the old connection to be dropped and a new one established. (slime-disconnect): New command to disconnect from Swank, or cancel asynchronous connection attempts when not yet connected. (slime-state/event-panic): Illegal events in the communication state machine now trigger a general panic that disconnects from Lisp, and displays a message describing what has happened. This is a bug situation. (slime-connect): Print a message during connection attempts unless the minibuffer is active (it's annoying to get messages while trying to enter commands). 2003-10-18 Helmut Eller * slime.el: Fix some bugs in the state machine and be a bit more careful when processing pending input. (slime-compile-region): New command. Some more tests. 2003-10-17 James Bielman * .cvsignore: Add OpenMCL and SBCL fasl file extensions. * swank-openmcl.lisp (who-calls): Fix bug where we would try to take the TRUENAME of NIL when source information isn't available for a caller. (backtrace-for-emacs): Clean up the backtrace code a bit in preparation for implementing FRAME-LOCALS. (frame-catch-tags): Implement a stub version of this. (frame-locals): Implemented fully for OpenMCL. * swank-loader.lisp (compile-files-if-needed-serially): Be a little more verbose when compiling files. 2003-10-17 Helmut Eller * swank.lisp, swank-sbcl.lisp, swank-openmcl.lisp, swank-cmucl.lisp: Move more stuff to swank.lisp. 2003-10-17 Luke Gorrie * slime.el (slime-post-command-hook): Check that we are connected before trying to process input. (slime-net-connect): Handle `network-error' condition for XEmacs 21.5. (Thanks Raymond Toy.) * swank-sbcl.lisp: Report style-warnings separately from notes (patch from Christophe Rhodes). Use REQUIRE to load sb-introspect instead of loading the source file (requires the sb-introspect library to be installed, which doesn't yet happen in the sourceforge-lagged SBCL anoncvs, but does in the real one). * slime.el (slime-style-warning-face): Added style-warnings, which are between a warning and a note in severity. (Patch from Christophe Rhodes). * test.sh: When the test fails to complete, print "crashed" instead of reporting nonsense. 2003-10-17 James Bielman * swank.lisp (apropos-symbols): Change back to using the standard 2-argument APROPOS-LIST and check symbols explicitly when EXTERNAL-ONLY is true. Move loading of sys-dependent backend code into 'swank-loader'. * swank-sbcl.lisp: Moved declarations of *PREVIOUS-COMPILER-CONDITION* into 'swank.lisp' to kill warnings about undefined variables. * swank-openmcl.lisp (handle-compiler-warning): Use source position instead of function name for warning locations. (swank-compile-string): Compile into a temporary file instead of using COMPILE so finding warning positions works when using C-c C-c. (compute-backtrace): Don't display frames without a function. (apropos-list-for-emacs): Implement APROPOS. (who-calls): Implement WHO-CALLS. (completions): Implement COMPLETIONS. Use NIL instead of zero so FRESH-LINE does the right thing. * slime.el (slime-maybe-compile-swank): Removed function---compile the backend using 'swank-loader.lisp' instead. (slime-backend): Changed default backend to 'slime-loader'. (slime-lisp-binary-extension): Deleted as this is no longer needed. * swank-loader.lisp: New file. 2003-10-17 Luke Gorrie * slime.el (slime-net-connect): Check that `set-process-coding-system' is fbound before calling it. This is needed in the XEmacs I built from sources. 2003-10-17 Daniel Barlow * swank-sbcl.lisp: Transplanted Helmut's serve-event server to replace the existing thread-using server. SLIME now has no dependency on SB-THREAD * slime.el (slime-find-buffer-package): handle errors from (read) for the case where the buffer ends before the in-package form does (slime-set-package): insert missing comma (slime-goto-source-location): sbcl has a disagreement with emacs over the meaning of a character position. Level up with C-M-f C-M-b * assorted typo fixes 2003-10-16 Luke Gorrie * slime.el (slime-forward-source-path): Improved somewhat. Seems to work for all common cases except backquote. Backquote is tricky, because the source-paths are based on the reader's expansion, e.g.: * (let ((*print-pretty* nil)) (print (read-from-string "`(a ,@(b c) d)"))) --> (COMMON-LISP::BACKQ-CONS (QUOTE A) (COMMON-LISP::BACKQ-APPEND (B C) (QUOTE (D)))) Must investigate whether we need to write a hairy backquote-traversing state machine or whether this is something that could be fixed in CMUCL. * swank*.lisp (with-trapping-compiler-notes): This macro is now defined here, and expands to a call to the backend-defined `call-trapping-compiler-notes' with the body wrapped in a lambda. This is to avoid swank.lisp referring to macros in the backends -- it gets compiled first so it thinks they're functions. * slime.el (slime-swank-connection-retries): New default value is `nil', which means unlimited retries (until user aborts). Retry interval also reduced from once per second to four times per second. 2003-10-16 Helmut Eller * swank-cmucl.lisp, swank.lisp: Fix CMUCL support. 2003-10-15 Daniel Barlow * swank.lisp: rearrange the backends. rename swank.lisp to swank-cmucl.lisp, then create new swank.lisp which loads an appropriate backend according to *features*. Next up, identify common functions in the backends and move them into swank.lisp 2003-10-15 Helmut Eller * slime.el: Inspector support. list-callers, list-callees implemented without xref. * swank.lisp: Lisp side for inspector and list-callers, list-calees. Better fdefinition finding for struct-accessors. 2003-10-15 Luke Gorrie * slime.el (slime-point-moves-p): Macro for executing subforms and returning true if they move the point. * test.sh: New file to run the test suite in batch-mode. Will need a little extending to allow configuring the right variables to work with non-CMUCL backends. * slime.el: Set `indent-tabs-mode' to nil. This makes diffs look better. (slime-start-swank-server): Now passing the port number to SWANK:START-SERVER. (slime-evaluating-state): Debugging synchronous evaluations with recursive edits now works. (slime-forward-sexp): Added support for #|...|# reader comments. (sldb-hook): New hook for entry to the debugger (used for the test suite). (slime-run-tests): Reworked the testing framework. Now presents results in an outline-mode buffer, with only the subtrees containing failed tests expanded initially. (slime-check): Check-name can now be a string or format-control. (Test cases have been updated to take advantage of this.) (compile-defun): This test case now works for the case containing #|..|# (async-eval-debugging): New test case for recursively debugging asynchronous evaluation. 2003-10-15 Daniel Barlow * README.sbcl: new file * README: update for new backends, change of hosting provider * swank-sbcl.lisp: new file. New SWANK backend for Steel Bank Common Lisp, adapted from swank.lisp with bits of swank-openmcl.lisp 2003-10-12 Daniel Barlow * slime.el (sldb-mode-map): add mouse-2 clickability for areas in sldb buffers covered by the sldb-default-action property: restarts can now be mouse-activated 2003-09-28 James Bielman * swank-openmcl.lisp: New file, a Slime backend for OpenMCL 0.14.x. (condition-function-name): Figure out the name of methods correctly instead of passing a list to Emacs. * slime.el (slime-goto-location): Try to position notes based on some (questionable) regex searching if the :FUNCTION-NAME property is set. Used in the OpenMCL backend which does not support source paths. 2003-09-29 Luke Gorrie * slime.el: Fairly major hacking. Rewrote the evaluation mechanics: similar design but some macros to make it look more like a push-down automaton (which it really was!). Debugging Lisp no longer uses recursive edits, partly as a side-effect and partly to see if it's better this way. Removed the asynchronous-communication test cases that tested something we decided not to do. (slime-eval-string-async): Give a meaningful error message when trying to make a request while already busy. (slime-lisp-binary-extension): Uh oh, time to start taking out gratuitous CMUCL-isms. This variable renamed from `slime-cmucl-binary-extension'. (slime-backend): Name of the Lisp backend file, defaulting to "swank", but can be set to e.g. "swank-openmcl". * swank.lisp: Minor protocol changes to accomodate slime.el's changes above. 2003-09-28 Helmut Eller * swank.lisp (getpid, set-package, set-default-directory): New functions. (slime-out-misc): Don't send empty strings. (*redirect-output*, read-from-emacs): A new switch to turn output redirection off. Useful for debugging. (interactive-eval, interactive-eval-region, pprint-eval, re-evaluate-defvar): Bind *package* to *buffer-package*. (with-trapping-compilation-notes): Add a dummy argument for better indentation. (measure-time-intervall, call-with-compilation-hooks): Measure compilation time. (frame-locals): Use di::debug-function-debug-variables instead of di:ambiguous-debug-variables. Don't access non-valid variables. * slime.el (slime-display-message-or-view): Delete old multi-line windows. (slime-read-package-name): Added an optional initial-value argument. slime-pid: New variable. (slime-init-dispatcher): Initialize slime-pid. (slime-send-sigint): Use slime-pid instead of inferior-lisp-proc. (slime-eval): Accept debug-condition messages. (slime-output-buffer): Turn slime-mode on. (slime-switch-to-output-buffer): New command. Bound to C-c C-z. (slime-show-note-counts): Display compilation time. (slime-untrace-all, slime-set-package, slime-set-default-directory slime-sync-package-and-default-directory): New commands. (slime-princ-locals): Don't access non-valid variables. This may cause segfaults and severely confuse CMUCL. (slime-define-keys): New macro. 2003-09-28 Luke Gorrie * swank.lisp (create-swank-server): Bind the listen-socket on the loopback interface by default, so that remote machines can't connect to the Swank server. 2003-09-27 Luke Gorrie * swank.lisp (with-trapping-compilation-notes): New macro for bindings the handlers to record compiler notes. Now being used in `compile-string', which I had broken when removing the compilation hook. * slime.el (slime-function-called-at-point): Rewritten to work better. Now considers "((foo ..." _not_ to be a function call to foo because of the double ('s - this will keep it from misfiring in e.g. LET bindings. (def-slime-test): All tests now being with (slime-sync). This fixes some accidental/bogus test failures. * swank.lisp (handle-notification-condition): Rewrote compiler-note collection. Now it uses lower-level condition handlers instead of c:*compiler-notification-function*. This way the error messages are tailored to omit redundant information, like the filename and original source text (which are displayed and highlighted in Emacs already). Much nicer. (sort-contexts-by-source-path): Now sorting xref results by lexical source-path order, so that you're always jumping in the same direction. (*debug-definition-finding*): New variable. You can set this to true if you want to be popped into the debugger when M-. fails to find a definition (for debugging the definition-finding). Otherwise it reports the error to Emacs as a message, like "Error: SETQ is a special form." * slime.el (slime-fetch-features-list): New command to fetch the *FEATURES* list from Lisp and store it away. This is done automatically upon connection, but can also be called manually to update. (slime-forward-reader-conditional): Now does the right things with reader-conditionals (#+ and #-) based on the Lisp features. 2003-09-26 Luke Gorrie * slime.el (sldb-setup): Setting `truncate-lines' to t in the debug buffer. I like having the backtrace take strictly one line per frame, since otherwise a few ugly arguments (e.g. streams) can chew up a lot of space. (Can make this a configurable on request if tastes differ :-) * swank.lisp: Did a little defensive programming so that asking for the definition of an unbound function will return nil to Emacs instead of entering the debugger. (format-frame-for-emacs): Binding *PRETTY-PRINT* to nil when formatting frames (due to truncate-lines change above). 2003-09-24 Helmut Eller * swank.lisp: Support for stream redirection. slime-output-stream: New structure. (slime-out-misc): New function. *slime-output*: New variable. (read-from-emacs): Redirect output to *slime-output*. (read-form): Bind *package* inside the standard-io-syntax macro. (eval-string): Read the string with read-form. (completions): Support for keyword completion. * slime.el (slime-process-available-input, slime-eval): Rewritten once again. Don't use unwind-protect anymore. Didn't work properly when the Lisp side aborted due to too many debug levels. "Continuing" from the Emacs debugger aborts one level on the Lisp side. "Quitting" from the Emacs debugger quits the Lisp side too. Increase stack sizes before entering the recursive edit. (slime-eval-async-state, slime-eval, sldb-state): Support for stream output. slime-last-output-start: New variable. (slime-output-buffer, slime-output-buffer-position, slime-insert-transcript-delimiter, slime-show-last-output, slime-output-string): New functions. (slime-show-evaluation-result, slime-show-evaluation-result-continuation): Use them. (slime-use-inf-lisp-p, slime-insert-transcript-delimiter, slime-inferior-lisp-marker-position, slime-inferior-lisp-show-last-output): Deleted. (slime-use-tty-debugger, slime-debugger-hook, slime-enter-tty-debugger, slime-tty-debugger-state): Deleted. Removed tty debugger support. (def-sldb-invoke-restart): Renamed. (define-sldb-invoke-restart-key, define-sldb-invoke-restart-keys): Version without eval. (defun-if-undefined): New macro. Many indentation fixes. 2003-09-23 Helmut Eller * swank.lisp (completions): Moved most of the completion code to Lisp. (string-prefix-p): Be case insensitive. * slime.el: Make sure define-minor-mode is defined before we use it. (slime-completing-read-internal, slime-completing-read-symbol-name, slime-read-from-minibuffer, slime-completions, slime-complete-symbol): Support for reading symbols and expressions with completion. (slime-read-symbol-name): New function. (slime-read-symbol): Use it. (slime-read-package-name): Case insensitive completion. (slime-edit-symbol-fdefinition, slime-edit-fdefinition): Rename slime-edit-symbol-fdefinition to slime-edit-fdefinition. 2003-09-23 Luke Gorrie * slime.el (slime-show-xrefs): Improved the xrefs buffer, now using a custom minor mode. (slime-next-location): This function goes to the next "something" by funcall'ing slime-next-location-function. Currently that variable is set by xref commands like who-calls to go to the next matching reference. In future it can also be used to go to the next function definition for a generic-function-understanding version of edit-fdefinition. Bound to C-M-. and C-c C-SPC, until we see which binding is better. 2003-09-22 Luke Gorrie * slime.el (slime-symbol-at-point): Now returns a symbol, as the name suggests. (slime-symbol-name-at-point): This one returns a string. (slime-read-symbol): New function for taking the symbol at point, or prompting if there isn't one. (slime-edit-fdefinition): Now uses looks up the symbol at point, not the function being called at point. * swank.lisp (who-calls, who-references, who-binds, who-sets, who-macroexpands): New function. (present-symbol-before-p): Use `*buffer-package*' when checking accessibility of symbols. * slime.el (slime-restore-window-configuration): New command to put the Emacs window configuration back the way it was before SLIME last changed it. (slime-who-calls, etc): Very basic WHO-{CALLS,..} support. Not finished, wrestling around trying to make `view-mode' or `help-mode' help me (I just want to hijack RET and C-m). Bound to "C-c C-w ...". 2003-09-21 Luke Gorrie * slime.el: Rearranged the `outline-mode' structure slightly. (slime-check-connected): Using new function to give a helpful error message if you try to use commands before establishing a connection to CMUCL. (sldb-mode): Keys 0-9 are now shortcuts to invoke restarts. * README, swank.el: Updated commentary. 2003-09-20 Luke Gorrie * slime.el (slime-choose-overlay-region): Tweaked overlay placement. * swank.lisp (handle-notification): Skipping null notifications. For some reason CMUCL occasionally calls us with NIL as each argument. 2003-09-19 Helmut Eller * slime.el (slime-connect): Propose default values when called interactively. (slime-process-available-input): If possible, use while rather than recursion. (slime-compilation-finished-continuation): New function. (slime-compile-file, slime-compile-defun): Use it. (slime-forward-source-path): Id an error is encounter move back to the last valid point. (slime-eval-region): Use append COND. Send the entire string to the Lisp side and read&evaluate it there. (slime-eval-buffer): New function. (sldb-sugar-move, sldb-details-up, sldb-details-down): New functions. * swank.lisp (interactive-eval-region): New function. (re-evaluate-defvar): New function. (compile-defun): Install handler for compiler-errors. (function-first-code-location): Simplified. 2003-09-17 Helmut Eller * slime.el (slime-apropos-all): New command, bound to C-c M-a. (slime-eval): Simplified. (swank:arglist-string): Send a string and not a symbol. It easier to package related thins in CL. (slime-edit-symbol-fdefinition): Prompt when called with prefix-argument. (slime-eval-region): New function. (slime-load-file): New function. (slime-show-description): Set slime minor mode in Help buffer. * swank.lisp: (read-string, from-string): Renamed read-string to from-string. (to-string) New function. (arglist-string): Catch reader errors. (sldb-loop): Also bind *readstrable*. 2003-09-16 Helmut Eller * slime.el (slime-toggle-trace-fdefinition): New command. (slime-symbol-at-point, slime-sexp-at-point): New utility functions. (slime-edit-symbol-fdefinition): Similar to slime-edit-fdefinition but uses swank:function-source-location-for-emacs. (slime-goto-source-location): New function. (sldb-show-source): Use it. (slime-read-package-name): Completing read for package names. (slime-apropos): Use it. * swank.lisp (function-source-location, function-source-location-for-emacs): New functions to extract source locations from compiled code. For struct-accessors we try to find the source location of the corresponding constructor. (list-all-package-names): New function. (toggle-trace-fdefinition, tracedp): New functions. 2003-09-15 Helmut Eller * slime.el: Moved many CL fragments from slime.el to swank.lisp. (slime-compile-file, slime-compile-defun, slime-goto-location): Compiler notes are now represented with a property list. To find the source expression first move to the file offset of the top-level form and then use the source path to find the expression. This should avoid many reader issues. For compile-defun store the start position of the top-level expression from the buffer in the compiler notes and use that to locate error messages. Add error overlays for notes without context to the first available expression. * swank.lisp: Moved many CL fragments from slime.el to swank.lisp. (defslimefun): New macro. 2003-09-15 Luke Gorrie * slime.el (slime-setup-command-hooks): Removed post-command-hook that was used for cleaning up input that was unprocessed due to an error breaking out of the process filter. This is now handled by an `unwind-protect' in the filter. * swank.lisp (apropos-list-for-emacs): Hacked the apropos listing to accept more options and to specially sort results. * slime.el (slime-net-send): Added newlines to messages over the wire. This makes the protocol nicely readable in Ethereal. (slime-sync): New function for blocking until asynchronous requests are complete. (slime-apropos): Hacked the apropos command: by default, only external symbols are shown. With a prefix argument you have the option to include internal symbols and to specify a package. (slime-run-tests): Extended the test suite. Use `M-x slime-run-tests' to run it. 2003-09-14 Luke Gorrie * slime.el, swank.lisp: Added the debugger written by Helmut. * cmucl-wire.el: Removed. The WIRE communication protocol has been replaced by a simple custom TCP protocol based on READ/PRIN1 to send sexps as ascii text. This simplifies the code, makes the protocol nicely debugable with ethereal, and should ease porting to other Lisps. Incremented TCP port number to 4005 in honor of the new protocol. In addition, Lisp now always uses *print-case* of :DOWNCASE when preparing sexps for Emacs. This is in reaction to a bug with Emacs reading the empty list as `NIL' instead of `nil'. * slime.el (slime-net-connect): The Emacs end of the new communication protocol. * swank.lisp (create-swank-server): The Lisp end of the new communication protocol. 2003-09-11 Luke Gorrie * slime.el (slime-mode): Added Helmut's commands to the mode description. (slime-show-apropos): Setting `truncate-lines' to t in apropos listings, to avoid line-wrapping on overly long descriptions. (slime-run-tests): Added the beginnings of an automated test suite. (This is most useful for testing cross-Emacsen compatibility before releases.) * swank.lisp (symbol-external-p): Put back this function which was lost in a merge. 2003-09-10 Luke Gorrie * slime.el, cmucl-wire.el, swank.lisp: Large patch from Helmut Eller. Includes: apropos, describe, compile-defun, fully asynchronous continuation-based wire interface, interactive evaluation, and more. Very nice :-) 2003-09-08 Luke Gorrie * cmucl-wire.el (wire-symbol-name, wire-symbol-package): Fixed to handle internal references (pkg::name). * slime.el (slime-swank-connection-retries): Increased default number of connection retries from 5 to ten. * swank.lisp (find-fdefinition): Support for finding function/macro definitions for Emacs. * slime.el: Indentation "cleanups": somehow I was using `common-lisp-indent-function' for Emacs Lisp code previously. (slime-edit-fdefinition): Added M-. (edit definition) and M-, (pop definition stack) commands. Definitions are found in much the same way Hemlock does it. The user-interface is not the same as TAGS, because I like this one better. We can add TAGS-compatibility as an optional feature in future. 2003-09-04 Luke Gorrie * slime.el (slime-completions): Now supports completing package-internal symbols with "pkg::prefix" syntax. * Everything: imported slime-0.2 sources. ;; Local Variables: ;; coding: latin-1 ;; End: