text:
Parent Directory | Revision Log
|Links to HEAD:
|(view) (annotate)
|Sticky Tag:
* slime.el (slime-delete-package): New command. * swank.lisp (swank-delete-package): The corresponding Swank part.
* swank.lisp (swank-profile-package): New wrapper for profile-package that does some input validation. * slime.el (slime-profile-package): Use it.
* slime.el (slime-draw-connection-list): Make sure not to call goto-char on NIL.
* slime.el (slime-read-interactive-args): Use read-shell-command to enable completion. Patch by Daimrod/Greg.
* slime.el (slime-attempt-connection): Don't run the timer with a repeat argument, slime-attempt-connection will reinstantiate the timer if needed, otherwise it can be a possible source of race conditions.
* swank-allegro.lisp (eval-in-frame): debugger:frame-var-name can return nil; ignore those vars. * slime.el (sldb-setup): Allegro somehow managed to enter sldb at the same level twice. Add an assertion that checks that the condition is the same if sldb-level is the same as last time.
* swank-ecl.lisp (describe-symbol-for-emacs): Include bound symbols even those without documentation. * slime.el (slime-print-apropos): Do some input validation to detect bugs on the Lisp side. * swank-backend.lisp (describe-symbol-for-emacs): Allow NIL where :NOT-DOCUMENTED was needed.
* slime.el (slime-attempt-connection): Show the attempt counter.
* slime.el (slime-edit-definition): Don't ask the user for a name to search if it's missing before running slime-edit-definition-hooks (slime-open-inspector): pop-to-buffer before inserting anything, otherwise the point is not moved into the desired position.
* slime.el (slime-edit-definition): Don't ask the user for a name to search if it's missing before running slime-edit-definition-hooks, the hooks might search for name in a different manner (for example, presentations).
* slime.el ([test] find-definition.3): Mark as expected to fail. ([test] arglist): Adjust regexp so that CCL passes. (slime-execute-tests): Insert summary table at the the end. (slime-check): Don't change counters here, as that would count multiple times per test. Instead to the counting in slime-execute-tests.
* slime.el (slime-timer-call): Use debug marker in condition-case.
* slime.el (find-definition.3): Fix syntax.
* slime.el ([test] find-definition): Test defstruct and defvar. ([test] find-definition.3): New.
* swank.lisp (safe-condition-message): Truncate the string after 64KB.
* slime.el (report-condition-with-circular-list): New test. * swank.lisp (safe-condition-message): Bind *print-length*.
* slime.el (slime-location-offset): When going to a position causes an error, for example, trying to move beyond the end of the buffer, move the point to 0 and then try to use the hints.
* slime.el (slime-insert-threads): Some cleanups. (slime-insert-table, slime-insert-table-row) (slime-transpose-lists) New helpers. (slime-threads-table-properties): Renamed from *slime-threads-table-properties* (slime-thread-index-to-id, slime-longest-lines) (slime-format-threads-labels, slime-insert-thread): Deleted.
Avoid some unused variable warnings. * slime.el (slime-xref-group, slime-all-contribs, [selector] ??): Use _ as prefix or in loop-destructuring: (loop for (nil) in ...).
* slime.el (slime-goto-source-location-buffer-and-file): Delete unused function.
Avoid flet. * slime.el (with-struct, slime-compute-policy) (slime-create-note-overlay, slime-merge-note-into-overlay) (slime-file-name-merge-source-root) (slime-highlight-differences-in-dirname) (slime-check-location-filename-sanity, slime-macroexpand-undo) (slime-read-connection) (slime-inspector-property-at-point): Use macrolet or a comibination of let and funcall as replacement for flet.
* slime.el: Don't compile functions that are now in other files.
* slime.el (slime-changelog-date): Use (expand-file-name "ChangeLog" slime-path) instead of (concat slime-path "ChangeLog"), slime-path may not have a trailing /. Reported by Paul Sexton (lp#1011935).
* slime.el (slime-oneliner): Use minibuffer width instead of the width of the current frame, minibuffer can be in a separate frame with a different width. Patch by Greg Pfeil (lp#1004252).
Reduce dependecy on pre-defined faces. * slime.el (slime-apropos-symbol, slime-apropos-label): New faces. (slime-print-apropos): Use them. Reported by: Daimrod <email@example.com>
* swank-sbcl.lisp (stream-force-output): Use with-world-lock i.e. with-recursive-lock instead of with-mutex. * slime.el (sbcl-world-lock): New test.
Ignore linebreaks for the macroexpand test. SBCL should now also pass it. * slime.el (slime-test-macroexpansion=): New function. ([test] macroexpand): Use it.
* slime.el (slime-pprint-eval-region): New command. No keybinding though.
Simplify :buffer-and-file handling.
* slime.el (slime-goto-source-location): Allow for :buffer-and-file locations, prefer buffer if the buffer exists. * swank-sbcl.lisp (definition-source-for-emacs): Send :buffer-and-file when both are available. (quit-lisp): Use sb-ext:exit when it's present.
* slime.el (slime-xrefs-for-notes): Format location in a proper way. Reported by Max Mikhanosha.
Indirect through a variable in slime-operator-before-point. I could write about how this is necessary given the reprogrammability of the CL reader, but honestly this is motivated by trying to get arglist display in the minibuffer for R. I'll be glad if this is useful for (real) Lisp programmers too.
* slime.el ([test] utf-8-source): Use the encoded byte sequence of the Unicode string.
* slime.el (def-slime-test utf-8-source): Define only when (and (featurep 'emacs) (>= emacs-major-version 23)).
* slime.el (def-slime-test utf-8-source): Another try at fixing utf8 literals in code.
* slime.el (def-slime-test utf-8-source): Remove literal Unicode characters in the form of \xFFFF, it causes problems for some people.
Fix long lines. * swank.lisp: * slime.el: * ChangeLog:
* slime.el (utf-8-source): XEmacs has no set-buffer-multibyte. (slime-create-test-results-buffer): Set file-coding-system.
* slime.el (utf-8-source): Bind slime-load-failed-fasl.
* slime.el (utf-8-source): New test case.
* slime.el (slime-init-command): Don't call `slime-to-lisp-filename', the lisp is not yet connected and if there's another connection it will use the wrong translation. * contrib/slime-tramp.el (slime-find-filename-translators): Don't signal an error if there's no translators for a hostname, just use 'identity.
* slime.el (slime-cycle-connections): Add `slime-cycle-connections-hook', to be used by slime-repl. * contrib/slime-repl.el (slime-change-repl-to-default-connection): New function. Changes the current REPL to the REPL of the default connection. If the current buffer is not a REPL, don't do anything. Put it into `slime-cycle-connections-hook', so that when connections are cycled through it will change the currently displayed REPL.
* slime.el (slime-compile-region): Run slime-flash-region directly, not from `slime-before-compile-functions', which is run also for C-c C-k.
* slime.el ([xemacs]): Use (find-coding-system 'utf-8-unix) instead of checking the XEmacs version to decide when 'un-define is required.
Move flow control from dispatch-event to send-to-emacs. * swank.lisp (*send-counter*): New thread local variable. (with-connection): Bind it. (send-to-emacs): Call maybe-slow-down. (maybe-slow-down, ping-pong): Go through dispatch-event instead of writing to the socket directly. (dispatch-event): Re-add thread arg to :ping/:emacs-pong. Also add a :test-delay event. (perform-indentation-update): Use with-connection to bind *emacs-connection* and *send-counter*. (background-message): Remove reference to connection.slowdown. (flow-control-test): New support code for testing flow-control. ([defstruct] connection): Delete send-counter and slowdown slots. * slime.el (slime-dispatch-event): Re-add thread arg to :ping/:emacs-pong and :test-delay event. ([test] flow-control): New test.
* slime.el (slime-update-system-indentation): Moved to contrib/slime-indentation.el.
* slime.el (slime-batch-test): Forgot to rename slime-run-one-test to slime-run-test here. (slime-net-connect): Remove coding-system argument. (slime-xref-insert-recompilation-flags): Use insert-char instead of (dotimes (i ..) (insert " " ..)) to avoid the compiler warning. ([test] break, slime-forward-sexp): Use _i in dotimes.
* slime.el ([xemacs]): Don't require 'un-define in XEmacs 21.5 and later. Mule-UCS is not needed anymore because of internal Unicode support (and conflicts with it).
* slime.el (slime-compile-region): Check connection before running hooks, invoking slime-flash-region doesn't make much sense when there's no connection.
Move flow control into dispatch-event. * swank.lisp (maybe-slow-down, ping-pong): New functions. (dispatch-event): Use it. Also require connection argument. Update callers accordingly. ([defstruct] connection): New slots: send-counter and slowdown. * slime.el (slime-dispatch-event): Drop thread from :ping/:emacs-ping messages. Use subclasses of connection. Wasn't neccessary for flow control but seems like a good idea for the future. * swank.lisp (multithreaded-connection) (singlethreaded-connection): New (make-connection): Create multi/single threaded variant depending on style argument. ([defstruct] serve-requests, cleanup): Delete slots. Dispatch on connection type instead. (stop-serving-requests): New. (close-connection): Use it. Can't use *use-dedicated-output-stream* here.
* swank.lisp (create-server): Remove coding-system argument. ([defstruct] connection): Remove coding-system slot. (connection.external-format, *coding-system*): Deleted. (make-connection, start-server, create-server, setup-server) (accept-connections): Drop coding-system arg. (connection-info): Return supported coding systems. (create-repl, open-dedicated-output-stream) (open-streams, initialize-streams-for-connection): Add coding-system arg. * slime.el (slime-init-command): Ignore the coding-system arg. (slime-connection-coding-systems): New connection variable. (slime-set-connection-info): Set it.
* slime.el (sldb-eval-in-frame): Try to figure the package out. Ask Lisp if the function for frame was defined in a particular package and use it to read the form. (sldb-read-form-for-frame): New helper. * swank-backend (frame-package): New. * swank-cmucl (frame-package): Implement it. * swank.lisp (frame-package-name, eval-in-frame-aux): New. (eval-string-in-frame, pprint-eval-string-in-frame): Use package argument.
* slime.el (slime-ed): add bytep argument to destructure-case. When it's true, position is interpreted as byte offset. * contrib/swank-fancy-inspector.lisp (make-pathname-ispec): Use :position instead of :charpos, according to slime-ed interface. Add :bytep t, telling slime-ed to interpret it as byte offset.
Restore old header format. * swank-rpc.lisp (parse-header, write-header) * slime.el (slime-net-decode-length, slime-net-encode-length)
* slime.el (slime-run-test): Renamed from slime-run-one-test. (slime-toggle-test-debug-on-error): New. ([test] break): Longer timeouts.
New wire format. Switch from character streams to binary streams. Counting characters was error prone because some Lisps use utf-16 internally and so READ-SEQUENCE can't be used easily. The new format looks so: | byte0 | 3 bytes length | | ... payload ... | The playload is an s-exp encoded as UTF-8 string. byte0 is currently always 0; other values are reserved for future use. * swank-rpc.lisp (write-message): Use new format. (write-header, parse-header, asciify, encoding-error): New. * swank.lisp (accept-connections): Create a binary stream. (input-available-p): Can't read-char-no-hang on binary streams. * slime.el (slime-net-connect): Use binary as coding system. (slime-net-send, slime-net-read, slime-net-decode-length) (slime-net-encode-length, slime-net-have-input-p): Use new format. (slime-unibyte-string, slime-handle-net-read-error): New. (featurep): Require 'un-define for XEmacs. ([test] break): Longer timeouts. * swank-sbcl.lisp (input-ready-p): Use sb-sys:wait-until-fd-usable.
* slime.el: Remove (require 'hideshow), it's not used anymore. Spotted by Leo Liu.
minor simple-completion change only display "[Complete but not unique]" in the minibuffer if the possibly-partial completion is in fact a full completion.
Fix line numbers for compiler notes if is narrowing was in effect. * slime.el (slime-canonicalized-location): Widen before calling line-number-at-pos.
* slime.el (slime-unintern-symbol): New command. * swank.lisp (unintern-symbol): Lisp-side implementation.
slime-indentation: remove stale system indentations When updating common-lisp-system-indentation, remove old indentation specs from packages which have a new one.
slime-indentation: per-package indentation from swank SWANK sends indentation information for macro-lambda lists to the Emacs side. Prior to this, however, this was a lossy N->1 mapping, where different symbols with the same name from multiple packages were conflated. Now an indentation update also includes a list of packages where the symbol in question is accessible. If slime-indentation is not being used, this information is dropped by Emacs. If, however, slime-indentation is used, the package information is stored in common-lisp-system-indentation hash-table, which is used as a fallback when indentation from other sources is not available for the symbol in question. Package used for looking up the indentation spec is either picked up from the package qualifier in the source, or guessed from the buffer.
Fix "wrong number of args" problem with slime-inspector-quit. Reported by Anton Kovalenko. * slime.el (slime-popup-buffer-quit-function) (slime-quit-threads-buffer): Drop the kill-buffer-p argument.
* slime.el (destructure-case): Fix "`_' not left unused" warnings. Insert an (ignore) form for empty bodies; this inhibts the compiler transformation that leads to the spurios warning. This has no runtime cost in compiled code, since the compiler recognizes (ignore) and emits no code for it. (slime-flatten-tree): Deleted. No longer used.
* slime.el (sdlb-print-condition): New (or old new) function. It was bound by P in sldb-mode, but for some reason it was lost.
* slime.el (slime-apropos-label-properties): Deleted. Just auto-load apropos-mode. (slime-print-apropos): Use the variable apropos-label-face which seems to exist in all relevant Emacsen.
Turn on lexical-binding for slime.el. This mostly involves prefixing unused variables with underscores to shut up the compiler, but also some less harmless changes. * slime.el (slime-dispatching-connection, slime-current-thread): Add defvars. (slime-connect): called-interactively-p wants 1 arg in Emacs 24 but none in Emacs 22. So we can't use it; instead add an extra optional arg and set that to non-nil in the interactive spec. (slime-read-from-minibuffer): Actually use the history arg. (slime-inspector-quit): Drop the unused kill-buffer arg from the lambda-list. (slime-run-tests): Can't specbind slime-repl-history-file without variable declation. I don't want to declare it here so I just eliminated it and let somebody else fix slime-repl.el.
Minor tweaks to avoid some compiler warnings. * slime.el (slime-modeline-string, slime-buffer-connection): Declare variables. (slime-flatten-tree): Helper function. (destructure-case): Use it, and make '_ ignorable if it occurs in some pattern. (slime-connect): Avoid obsolete functions: string-to-int -> string-to-number interactive-p -> called-interactively-p (slime-complete-maybe-restore-window-configuration) last-command-char -> last-command-event completion-base-size -> completion-base-position (slime-xref-mode-map): Use call-interactively when calling the remapped next-line/previous-line commands.
slime-indentation: make custom indentation hints from CL side work right * Downcase symbol-names for convenience -- |&lambda| gets tedious pretty quick. * Intern strings in indentation specs on the Emacs side, so that complex indentation hints can work.
* slime.el (slime-load-failed-fasl): New variable. Accepts `ask', `always', and `never' symbols. Loads or not loads fasls produced by compile-file which returned non-nil failure-p.
Remove slime-sexp-at-point-for-macroexpansion. * slime.el (slime-sexp-at-point-for-macroexpansion): Deleted. (slime-eval-macroexpand): Use slime-sexp-at-point instead. (slime-eval-macroexpand-inplace): Use slime-bounds-of-sexp-at-point directly.
Move some of the logic from slime-sexp-at-point-for-macroexpansion into slime-sexp-at-point. * slime.el (slime-bounds-of-sexp-at-point): New. Special case if we are at '( as slime-sexp-at-point-for-macroexpansion does. (slime-bounds-of-symbol-at-point): New. (slime-symbol-at-point, slime-sexp-at-point): Use the above. Thank God for the test suite.
* slime.el (slime-init-popup-buffer): Don't use multiple-value-setq on a list, XEmacs doesn't like it.
* slime.el (slime-insert-threads): Make sure newlines have the same thread-id property as the rest of the line. This fixes confusion when point is at the end of a line.
* slime.el (slime-inspector-operate-on-point): Don't save the point when inspecting a different object. (slime-inspector-operate-on-point): If there is no action property directly at the point, try looking at (1- (point)), many inspectable objects are presented the end of the line, so it's easier to navigate to them by C-e and still being able to activate it.
* slime.el (slime-inspector-operate-on-point): Don't save the point when inspecting a different object.
* slime.el (slime-choose-overlay- region): Don't use `list' instead of `values', GNU Emacs fakes multiple values with lists, but XEmacs uses real multiple values.
Don't double encode results for eval-in-emacs. * slime.el (slime-check-eval-in-emacs-result): New. (slime-eval-for-lisp): Use it. * swank.lisp (unreadable-object): Removed.
* slime.el (slime-eval-for-lisp): Return value as a string, because it can be unreadable, e.g. #<buffer foo> * swank.lisp (eval-in-emacs): Prevent reader errors.
* slime.el (slime-check-location-filename-sanity): Guard against target-filename being NIL.
* slime.el (slime-with-popup-buffer): Correct the docstring. * contrib/slime-sprof.el (slime-sprof-browser): Rename to `slime-sprof-report', leave `slime-sprof-browser' as an alias.
* slime.el (slime-toggle-break-on-signals): New command. * swank.lisp (toggle-break-on-signals): The corresponding Lisp code.
Improve frame-source-location for Lispworks. * swank-lispworks.lisp (frame-source-location): Exctract the edit-path from the frame and pass it to Emacs. (edit-path-to-cmucl-source-path): New function. (frame-location): Use it. * slime.el (slime-location-offset): Add a :edit-path property. (slime-search-edit-path): New function. (slime-search-call-site): Fix regexp to match zero arg functions.
* slime.el (slime-goto-location-position): In case of (:function-name name) go to (point-min) before searching for function. Remove redundant regexp and regexp-quote function name before inserting it into a regexp.
* slime.el (slime-connect): Convert the port number read from minibuffer to an integer, passing it as a string to `make-network-process' isn't portable. Patch by Marko Kocic.
Smarten up the label-value-line macros. - support a :label emacs font property - added key args: padding-length, display-nil-value, hide-when-nil, splice-as-ispec, value-text - label-value-line* will evaluate and splice the result of the form after a @ character
slime-lookup-lisp-implementation has better error reporting and allows using a functionp to generate the arguments
Added separate host and port history for slime-connect.
add richer location information to the position arg in compile-string-for-emacs R's source location recording infrastructure works with line/column offsets rather than with character offsets, so to get the right srcrefs associated with some string source we need to communicate line and column information from the source buffer. Unfortunately, only the emacs side can do that -- in principle, the R side has no direct access to the source file at all. This means a protocol change, converting the position argument in swank:compile-string-for-emacs to a list of <position>s in the slime source location grammar. At present, pass in both :position and :line kinds, and have swank:compile-string-for-emacs extract just the :position for passing on to swank-compile-string.
Rename slime-macro/compiler-macro-expand-1 => slime-expand-1 * slime.el (slime-expand-1): Renamed from slime-macro/compiler-macro-expand-1. (slime-expand-1-inplace): Renamed from slime-macro/compiler-macro-expand-1-inplace. * swank.lisp (swank-expand-1): Renamed from swank-macro/compiler-macro-expand-1. (swank-expand): Renamed from swank-macro/compiler-macro-expand. (expand-1): Renamed from macro/compiler-macro-expand-1. (expand): Renamed from macro/compiler-macro-expand.
Don't use indent-sexp for macroexpanded code. indent-sexp is potentially slow and usually redundant. * slime.el (slime-initialize-macroexpansion-buffer): Don't use indent-sexp. (slime-eval-macroexpand-inplace): Avoid indent-sexp but use slime-insert-indented.
Save result in kill ring for M-- C-x C-e. For C-u C-x C-e set mark before inserting. * slime.el (slime-eval-save): New function. (slime-eval-print): Set mark before inserting. (slime-interactive-eval): Use it.
* swank.lisp (eval-for-emacs): Send (:abort condition) where condition is a condition which was aborted instead of just (:abort). * slime.el: Handle the above change. * contrib/slime-repl.el: Handle (:abort condition) message from lisp.
Make C-c C-m also expand compiler macros. (lp#638720) * slime.el (slime-macro/compiler-macro-expand-1): New. (slime-macro/compiler-macro-expand-1-inplace): New. (slime-editing-keys): Map `C-c C-m' to first above. (slime-compiler-macroexpand-1): Take prefix-arg like others. (slime-compiler-macroexpand-1-inplace): Ditto. (slime-compiler-macroexpand): Thus deleted. (slime-compiler-macroexpand-inplace): Ditto. * swank.lisp (swank-macro/compiler-macro-expand-1): New interface. (swank-macro/compiler-macro-expand): New interface. (macro/compiler-macro-expand-1): New. (macro/compiler-macro-expand): New. (expand-repeatedly): New helper.
* slime.el (slime-forward-cruft): Use " \t\n" to match whitespaces instead of [:space:], XEmacs compatibility.
For C-c C-k, ask before loading possibly broken fasl files. * slime.el (slime-compilation-result): Add 2 slots: loadp and faslfile. (slime-compilation-finished): Use them to load the faslfile. * swank.lisp (:compilation-result): Add 2 slots. Use keyword constructor. (compile-file-for-emacs): Return loadp and faslfile to Emacs. (collect-notes): Pass loadp and falsfile along.
* slime.el (slime-xemacs-recompute-modelines): Add `slime-xemacs-recompute-modelines' to `pre-idle-hook', this solves the problem of synchronization of modelines. Thanks to Aidan Kehoe.
* slime.el (slime-recompute-modelines): Recompute modelines only for visible buffers. Kludge: modeline can be out of sync if the buffer becomes visible and no slime/lisp interaction took place yet. Patch by Raymond Toy. (slime-search-buffer-package): Revert, with the above change caching shouldn't be necessary.
Add commands to enable/disable contribs. * slime.el (slime-enable-contrib, slime-disable-contrib): New. (slime-contrib): New struct to collect meta-data about contribs. (define-slime-contrib): Store meta-data in 'slime-contribs plist. (slime-all-contribs, slime-find-contrib, slime-read-contrib-name): New helpers.
(slime-search-buffer-package): Cache the package, searching every time on large buffers may be slow.
* slime.el (slime-maybe-complete-as-filename): Limit backward search for #\", it slows down on large buffers. Reported by Raymond Toy.
* slime.el (slime-dispatch-event): :eval-no-wait, lisp sends a form in a string, not a function name and arguments. Add slime-check-eval-in-emacs-enabled. * swank.lisp (defpackage): export eval-for-emacs.
Don't get confused by END-OF-FILE on unrelated streams. Fixes bug "slime connection broken on trivial condition..." Reported by Pascal J. Bourguignon. * swank.lisp (end-of-repl-input): New condition. (simple-repl, read-non-blocking): Use it. * slime.el ([test] end-of-file): Test it.
* slime.el (slime-current-tlf-number,slime-current-form-path): Moved to contrib/slime-parse.el.
Don't use goto-line. * slime.el (slime-goto-line): New function as replacement without goto-line's cruft that we don't want.
* slime.el, swank.lisp: #'(lambda -> (lambda
Fix last change. * slime.el (define-slime-contrib): Fix names. Remove provide; makes no sense to call provide before file is completely loaded.
* slime.el (define-slime-contrib): Use destructuring-bind.
Move some var-defs before first use. * slime.el (slime-show-xref-buffer, slime-read-connection) (slime-thread-index-to-id):
Move wacky parsing code to contrib. * slime.el (slime-extract-context, slime-parse-context) (slime-in-expression-p, slime-pattern-path) (slime-beginning-of-list, slime-end-of-list) (slime-parse-toplevel-form, slime-arglist-specializers) (slime-definition-at-point, slime-current-parser-state): Moved to contrib/slime-parse.el (slime-inspect-definition, slime-disassemble-definition): Moved to contrib/slime-fancy-inspector.el
* slime.el ([test] interactive-eval): Fix test.
* slime.el (slime-defun-if-undefined): Renamed from slime-DEFUN-if-undefined. No need to yell.
* slime.el (slime-compile-file): Only send non-nil keyword args. (slime-hack-quotes): New function.
* slime.el (sldb-insert-condition): Don't create a mouse tooltip for long error message, tooltip shows the same text and doesn't add any value. (slime-definition-at-point): factor out of `slime-inspect-definition'. (slime-disassemble-definition): New, similar to `slime-inspect-definition'. * swank.lisp (disassemble-form): rename from disassemble-symbol, do the same as before but evaluate the argument.
* slime.el (slime-close-popup-window): Don't kill slime-popup-restore-data local variable in another buffer.
* slime.el (define-slime-contrib): New macro. * slime-autodoc.el, slime-c-p-c.el, slime-compiler-notes-tree.el, slime-enclosing-context.el, slime-fancy.el, slime-fuzzy.el, slime-hyperdoc.el, slime-mdot-fu.el, slime-mrepl.el, slime-parse.el, slime-presentations.el, slime-repl.el, slime-snapshot.el, slime-tramp.el, slime-xref-browser.el: Use newly added `define-slime-contrib' macro to specify slime and swank dependencies, and to specify what should happen on contrib load/unload.
(slime-parse-context): Add :defstruct and :defpackage.
* slime.el (slime-inspect-definition): New function, inspects definition at point.
* slime.el (slime-dispatch-event): Fix typo in the previous commit.
* Make buffer names more consistent. Patch by Leo Liu.
Fix for Cygwin Emacs filename problem. * slime.el (slime-init-command): Use slime-to-lisp-filename. Patch from Mark Evenson.
* slime.el (sldb-exit): When stepping, close buffer after a delay. (sldb-close-step-buffer): New function.
* contrib/slime-repl.el (slime-repl-update-banner): Use slime-move-point instead of goto-char alone, ensuring that the point is moved even if the window isn't currently selected. * slime.el (slime-restart-sentinel): Don't pop to the inferior buffer, since this command is usually run either from *inferior-lisp* buffer or from REPL, it makes sense to reuse current window instead of messing up window configuration. (slime-move-point): New function, moves point in a buffer and its window.
* slime.el (slime-compile-file): Run check-parens after checking that the buffer is associated with a file.
* slime.el (slime-info): New function, opens the manual.
* slime.el (slime-update-threads-buffer): Use slime-eval-async.
* slime.el (slime-inspector-buffer): Use slime-with-popup-buffer, that solves the problem with keybindings shadowed by slime-mode. Reported by Nathan Bird. * README: Better wording.
* slime.el (slime-open-inspector): Use forward-line instead of goto-line, since it doesn't result in "Mark set" message. (slime-inspector-buffer): Enable slime-mode after enabling slime-inspector-mode, otherwise the former will be disabled by the latter.
* slime.el (slime-update-threads-buffer): Save point position on updates.
* slime.el (slime-threads-update-interval): Add :group and :type parameters to this customization. Thanks to Mark Harig.
* slime.el (slime-threads-update-interval): New customization variable, if set to a number the threads buffer will updated with this interval. (slime-with-popup-buffer): Rename modes option to mode, for a major mode. Enabling minor modes from within the body doesn't cause troubles. End that way it is compatible with XEmacs since it doesn't need to use minor-mode-list to distinguish between minor and major modes. * swank.lisp (list-threads): Delete the current thread from the listing.
* slime.el (sldb-mode): Include some more commands in its help. (sldb-goto-last-frame): Do not center to the middle but to the bottom of the window.
* slime.el ([test] interrupt-encode-message): New test.
* slime.el (slime-doc-bindings): Restore key for slime-apropos.
Fix compile-file for various backends. * slime.el (slime-compile-file): Only pass non-nil keyword args to Lisp. (slime-simplify-plist): New helper. (slime-compile-and-load-file): Pass policy parameter directly without using global variables. * swank.lisp (compile-file-for-emacs): Change singature sightly.
* slime.el (slime-create-compilation-log): Enable compilation-mode, which was enabled previously by slime-insert-compilation-log.
* slime-autodoc.el (slime-autodoc-full): New command, displays multiline arglists. Bound to C-c C-d a. (slime-make-autodoc-rpc-form): Don't send :print-lines to autodoc, always use the actual width for :print-right-margin, remove newlines on formatting when needed. (slime-autodoc): Add optional parameter multilinep defaulted to slime-autodoc-use-multiline-p, pass it to slime-format-autodoc. * swank-arglists.lisp (autodoc, decoded-arglist-to-string): remove print-lines parameter, it's not used anymore. * slime.el (slime-doc-bindings): Move slime-apropos to C-c C-d A, C-c C-d a will be bound to slime-autodoc-full.
* slime-sprof.el (slime-sprof-browser): Use slime-with-popup-buffer for buffer creation. * slime.el: Some further adaptations to the new slime-with-popup-buffer.
* slime.el (slime-insert-threads): Use header-line-format only when it's present (XEmacs doesn't support it).
* slime.el (slime-with-popup-buffer): Make &optional parameters &key parameters, add modes parameter. slime-with-popup-buffer sets up some buffer local variables, but enabling major modes kills all buffer locals, so modes should be enabled before setting them. Adopt changes to slime-with-popup-buffer where needed. This fixes several bugs with popup buffers on non-default connections.
* slime.el (slime-update-threads-buffer): New formatting, with labels and additional information provided by the backend. * swank-allegro.lisp (thread-attributes): Move process-priority from thread-status.
* slime.el: Add gud as compile-time dependency.
* slime.el (slime-check-location-buffer-name-sanity): Less duplication, reuse slime-check-location-filename-sanity. (slime-check-location-filename-sanity): Do any work only when slime-warn-when-possibly-tricked-by-M-. is non-nil.
* slime.el (slime-lisp-implementation-program): New connection variable. (slime-set-connection-info): Adapted to set it. (slime-attach-gdb): Use it to invoke gdb so gdb is able to find debugging symbols on non-Linux platforms. * swank.lisp (connection-info): Include lisp-implementation-program. * swank-backend.lisp (lisp-implementation-program): New interface. Default implementation based on command-line-args. * swank-ecl.lisp (command-line-args): Implement.
Remove attach-gdb restart. Instead add SLDB shortcut `A'. * slime.el (slime-dispatch-event): Remove :gdb-attach. (slime-attach-gdb): Changed API. Takes connection not pid now and lightweight &optional arg. If not lightweight, get the default gdb config from the inferior Lisp. (sldb-break-with-system-debugger): New command, bound to `A' in sldb. Called this way to mimick `sldb-break-with-default-debugger', and because it may make sense to go beyond gdb in future, e.g. to invoke the Java Debugger for ABCL. * swank.lisp (call-with-gdb-restart, with-gdb-restart): Removed. (with-top-level-restart): Remove use of with-gdb-restart. (make-connection, start-server, create-server, setup-server): Remove inferior-lisp flag again. Not needed anymore.
Add M-x slime-attach-gdb as an interactive function. The ATTACH-GDB restart is nice because it's convenient and the backends can specify customized gdb configuration. Sometimes, if the Lisp is too screwed up, going over a restart involving the SWANK middle layer may not be possible. For that, a manual M-x slime-attach-gdb may come in handy. * slime.el (slime-read-connection): New helper. (slime-attach-gdb): Use it. Make it an interactive function.
Add an ATTACH-GDB restart to SLDB. * swank.lisp (call-with-gdb-restart): New. Sends the new :gdb-attach event to Emacs. (with-gdb-restart): Sugar. (with-top-level-restart): Also expand to with-gdb-restart. (dispatch-event): Add :gdb-attach event. * swank-backend.lisp (gdb-initial-commands): New interface function so backends can customize how gdb needs to be configured for their implementation. * swank-ecl.lisp (gdb-initial-commands): Implement. * slime.el (slime-dispatch-event): Add clause for :gdb-attach. (slime-attach-gdb): New.
* contrib/slime-repl.el (slime-call-defun): When on defclass insert (make-instance 'name). * slime.el (slime-parse-context): Add defclass.
* contrib/slime-repl.el (slime-call-defun): Work also on defvar/defparameter. * slime.el (slime-extract-context): Add defvar and defparameter.
* slime.el (slime-inspector-history): New command.
* slime.el (slime-compile-and-load-file): Accept C-u arguments for compilation policy the same way as slime-compile-defun. * swank.lisp (compile-file-for-emacs): Take an additional policy argument. * swank-backend.lisp (swank-compile-file): Ditto. * swank-sbcl.lisp (compiler-policy, (setf compiler-policy)): rename from get/set-compiler-policy. (with-compiler-policy): New macro. (swank-compile-file): Use with-compiler-policy. (swank-compile-string): Ditto.
Fix that annoying bug that caused being constantly asked to switch connection in case one had multiple connections running and quit from one. * slime.el (slime-modeline-string): Bail out early because `slime-current-package' involves `slime-connection' in case the slime-repl contrib is used, and querying the user in a periodically called function is rather annoying..
* slime.el (slime-postprocess-xref): Show a TAGS entry's hints as part of an Xref's dspec for the case of multiple matches.
Make it possible for SWANK backends to specify locations based on a TAGS file. * slime.el (slime-postprocess-xref, slime-postprocess-xrefs): New functions. They convert TAGS based locations from SWANK into file+position based locations because the rest of Slime expects and works with those. (slime-find-definitions): Call slime-postprocess-xrefs. (slime-xref): Ditto. (slime-etags-to-locations): The function which does the actual conversion. Extracted from `slime-etags-definitions'. (slime-etags-definitions): Use it. * swank-backend (defimplementation): Add implicit BLOCK. (:etags-file, :tag): Mentioned for possible values in :LOCATION.
* slime.el: In minor-mode-alist for slime-popup-buffer-mode, run slime-modeline-string only if slime-mode isn't active, because slime-mode runs slime-modeline-string from minor-mode-alist too resulting in duplicate modeline strings. Reported by Leo Liu.
The compiler warns about various stuff. Fix some of it. * slime.el (slime-add-local-hook): Remove support for Emacs 20. (sldb-recenter-region): Use forward-line; not next-line. Patch by Mark Harig.
Add a command to eval stuff in the inspector. * slime.el (slime-inspector-eval): New command. (slime-inspector-mode-map): Bind it to 'e'. * swank.lisp (inspector-eval): New function. * swank-backend.lisp (eval-context): New function. * swank-cmucl.lisp (eval-context): Implement it.
Point-entered hooks in xref buffer don't work so well. Use forward/backward commands intead. * slime.el (slime-xref-next-line, slime-xref-prev-line): New commands. (slime-xref-show-location): New aux function. (slime-xref-mode-map): Remap up/down to next/prev location commands. Make SPC and RET do the same.
Select the xref buffer. I never could get used to the next/prev cycling. * slime.el (slime-with-xref-buffer): Select the buffer. (slime-insert-xrefs): Add point-entered hook to automatically display the current location. (slime-xref-entered): New function. (slime-show-buffer-position): Don't use reposition-window which seems very slow and doesn't even do a particularly good job. The new heuristic is much cruder but faster. (slime-xref-mode-map): Remove apparently redundant bindings for RET.
Get rid or snapshots. * slime.el (slime-narrowing-configuration, slime-emacs-snapshot) (slime-current-narrowing-configuration) (slime-set-narrowing-configuration, slime-current-emacs-snapshot) (slime-set-emacs-snapshot) (slime-current-emacs-snapshot-fingerprint, slime-frame-windows): Deleted. Update call-sites accordingly.
slime.el (sexp-at-point.1): Remove failing tests.
Test suite hangs for CCL and CMUCL. * slime.el ([test] compile-defun): Remove those compile-time read errors for which some implementations invoke the debugger.
* slime.el (slime-load-contribs): Do not call SWANK-REQUIRE asynchronously, if host Lisp uses :SPAWN that may result in the attempt to load in code concurrently -- the host Lisp may not support that. * slime-asdf.el, slime-autodoc.el, slime-c-p-c.el, slime-clipboard.el, slime-fancy-inspector.el, slime-fuzzy,el, slime-indentation.el, slime-motd.el, slime-presentation-streams.el, slime-presentations.el, slime-sbcl-exts, slime-snapshot.el, slime-sprof.el: Make sure that contrib code does not try to load in swank code asynchronously but use `slime-require' instead; also make sure to move the `slime-require' into the contribs' init function.
* slime.el (slime-attempt-connection): Fix typo. Thanks to Mark Harig for spotting it.
* slime.el (slime-attempt-connection): Do not keep on trying to connect if inferior process died.
* slime.el: Added missing pieces to make `slime-cycle-connections' available from keystrokes. (slime-prefix-bindings): Added "\C-xn" entry. (slime-cycle-connections): Corrected grammar in doc string. (def-slime-selector-method): Added menu item `n' to SLIME selector menu. * doc/slime.texi: Added a description for the new key sequence for `slime-cycle-connections' and for the new menu item in the SLIME selector menu. Node slime-selector: Added menu item `n' and cross-references to "Multiple Connections" node. Node Multiple connections: Added C-c C-x n description. Added cross-references to `slime-selector' node.
* slime.el (slime-cycle-connections): Change docstring, it doesn't make connection buffer-local. * doc/slime.texi (Multiple connections): document slime-cycle-connections.
* slime.el (slime-thread-kill): If the region is active, then kill all threads in the region.
* slime.el (compile-defun [test]): Add two cases.
Add "quit" and "other window prefix" buffer selectors. * slime.el (slime-selector-other-window): New variable. (slime-selector): Bind it as need. (def-slime-selector-method): Use the other window if so indicated. ([selector] 4): New key binding. ([selector] q): New key binding. just abort.
Stop the beeping on restart. * slime.el (slime-quit-lisp-internal): Don't kill already dead processes.
* slime.el (slime-next-read-or-lose): Call `debug' with the error condition, so we can see what actually caused the losage.
* slime.el (compile-defun [test]): Also test proper notification after reader-error. Additionally: bind font-lock-verbose to nil to prevent annoying font-lock messages during the test. * swank-sbcl.lisp (signal-compiler-condition): Make sure READER-ERROR comes before ERROR in typecase. (swank-compile-file): Remove handling FATAL-COMPILER-HANDLER because a) this handling prevents sbcl from printing the diagnostics to the repl, and b) sbcl itself should handle this and translate it into proper return value for compile-file.
* slime.el (complete-symbol [test]): Fix test case. * slime-c-p-c.el (complete-symbol* [test]): Fix test case.
* slime.el (slime-at-list-p): Deleted. (slime-at-expression-p): Moved to slime-package-fu. (slime-forward-blanks): Deleted. Use `(skip-chars-forward "[:space:]")' instead. (slime-forward-any-comment): Deleted. (slime-reader-conditionals-regexp): Make a constant so it's inlined. (slime-unknown-feature-expression): Make it an error. * slime-package-fu.el (slime-at-expression-p): Moved from slime.el. (slime-goto-next-export-clause): Replace `slime-forward-blanks'. * slime-parse.el (slime-parse-sexp-at-point) (slime-parse-extended-operator-name): Replace `slime-forward-blanks'.
* slime.el (slime-edit-uses-xrefs): New variable. For contribs to extend. (slime-edit-uses): Use it. * swank.lisp (xref-doit): Now a generic functions. For contribs to extend. * swank-asdf.lisp (who-depends-on): Make defslimefun. (xref-doit [:depends-on]): New method to make :depends-on valid xref request. * slime-asdf.el (slime-who-depends-on-rpc): New. (slime-who-depends-on): New interactive function. (slime-asdf-init): Make `slime-edit-uses' perform a :depends-on request, and bind `C-c C-w d' to `slime-who-depends-on'.
Add `M-x slime-toggle-debug-on-swank-error'. In "Debug on SWANK error" mode, errors which are normally caught to not annoy the user, will now drop into the debugger. Additionally, the backend won't do any backtrace magic so you'll see the full backtrace with all its glory details. SBCL only so far. * slime.el (slime-toggle-debug-on-swank-error): New. * swank.lisp (toggle-debug-on-swank-error): New slimefun. (debug-on-swank-error): New function. SETFable. (invoke-default-debugger): Use CALL-WITH-DEBUGGER-HOOK so we're trapped into the native debugger on SBCL (previously we weren't due to SB-EXT:*INVOKE-DEBUGGER-HOOK*.) * swank.lisp: Rename SWANK-ERROR to SWANK-PROTOCOL-ERROR.
slime.el(slime-parse-toplevel-form): Use `slime-region-for-defun-at-point' instead of `beginning-of-defun'.
* slime.el (slime-documentation-lookup-function): New hook, defaults to `slime-hyperspec-lookup'. (slime-documentation-lookup): Invoke hook. (slime-prefix-bindings): Bind `C-c C-d h' to it. * slime-hyperdoc.el, swank-hyperdoc.lisp: New contrib.
* slime.el (slime-editing-mode): New minor mode for use in the REPL. * slime-repl.el (slime-repl-mode-map): Don't copy slime-parent-map. Instead ... (slime-repl-mode): ... enable slime-editing-mode.
Add a slime-editing-map as suggested by Attila Lendvai. The main purpose it's to create a keymap that's shared by the REPL and other modes so that adding custom bindings get's a bit easier. * slime.el (slime-editing-map, slime-mode-indirect-map): New variables. (slime-init-keymaps): Clear out any existing bindings before building the new keymaps. (slime-init-keymap): New helper. (slime-bind-keys): Renamed&extended from slime-define-both-key-bindings.
slime.el(slime-set-connection-info): Set slime-current-thread to t before doing anything. Solves a bug reported by Slawek Zak.
* slime.el (slime-minibuffer-map): Nee `slime-read-expression-map' (slime-minibuffer-history): Nee `slime-read-expression-history' (slime-minibuffer-setup-hook): Extracted. (slime-read-from-minibuffer): Adapted accordingly. * slime-asdf.el (slime-query-replace-system): Enable TAB completion of symbol names. * slime-fuzzy.el (slime-fuzzy-completions): Do not use `slime-find-buffer-package' it's an internal operation of `slime-current-buffer'.
Make C-c C-c operate on region if mark is active (and Transient Mark mode is enabled.) * slime.el (slime-compile-defun): Operate on region if transient-mark-mode is active.
* slime.el (sldb-setup): Do (set-syntax-table lisp-mode-syntax-table) otherwise functions used by autodoc do not work properly.
* slime.el (sldb-backward-frame): If the point is at the end of the buffer, there is no property, handle this case. * swank.lisp (collect-notes): LOAD returns generalized boolean, not just boolean, but make-compilation-result accepts only booleans for its second argument. Both bugs reported by Derrell Piper.
* slime.el (slime-end-of-symbol): Make sure not to move on #'foo. ([test] sexp-at-point.1): New test case.
* slime.el (slime-bug): Deleted. * slime-fontifying-fu.el (slime-search-suppressed-forms-internal): Wrap form in `ignore-errors' again. People have been guinea pigs long enough. Suppression of reader-conditionalized forms seems to work pretty reliably now.
* slime.el (slime-inside-string-p, slime-inside-comment-p) (slime-inside-string-or-comment-p): New. * swank-match.lisp: New file. Contains very simple pattern matcher from the CMU AI archive. * swank-loader.lisp: Compile swank-match.lisp. * swank.lisp: Make SWANK package use new SWANK-MATCH package. * slime-autodoc.el, swank-arglists.lisp: Large parts were rewritten. Autodoc is now able to highlight &key parameters, and parameters in nested arglists. * slime-parse.el, slime-c-p-c.el, slime-highlighting-edits.el: Adapted to changes.
* swank.lisp (list-threads): Remove thread-description. Wasn't used anymore. * swank-backend.lisp (thread-description, set-thread-description): Deleted. * swank-abcl.lisp: Update accordingly. * slime.el (slime-update-threads-buffer, slime-thread-insert): Update accordingly.
* slime.el (slime-stale-connection-p): Deleted.
Simpler modeline code. * slime.el (slime-modeline-string): Renamed from slime-compute-modeline-string. (slime-modeline-state-string): Renamed from slime-compute-connection-state (slime-modeline-package, slime-modeline-connection-name) (slime-modeline-connection-state) (slime-extended-modeline,slime-compute-modeline-package) (slime-update-modeline-string, slime-shall-we-update-modeline-p (slime-update-all-modelines, slime-modeline-update-timer) (slime-restart-or-init-modeline-update-timer) (slime-connection-state-as-string): Deleted.
* slime.el ([undefun] display-warning): Fix it.
* slime.el (slime-disconnect): Don't reference connection. Left over from last change. ([test] arglist): Update expected results for slightly changed printer settings. ([test] indentation): Install common-lisp-indent-function. * test.sh: Don't copy contribs. Slime should work without them. * swank-loader.lisp (setup): Compile contribs only if directory exists.
* slime.el (slime-format-display-message, slime-display-message) (slime-create-message-window): Deleted. The trick with the pre-command-hook doesn't work in XEmacs 21.5. So use the standard message function. One day XEmacs will learn how to resize the minibuffer, but until then we have to live with one-line messages.
* slime.el: Fix some docstrings and comments.
Revert the reversed numbering of restarts in sldb. New command `sldb-cycle' ([tab]) in sldb will cycle between restart list and backtrace. Make sldb-invoke-restart-by-name case-insensitive. * slime.el (sldb-mode-map): Bind Tab to `sldb-cycle'. (sldb-restart-list-start-marker): New variable. (sldb-setup): Store marker in it. (sldb-cycle): New command to cycle between restart list and backtrace. (sldb-invoke-restart-by-name): Make completion case-insensitive. (sldb-insert-restarts): Revert to old behaviour.
* slime.el (slime-search-property): Add parameter to get value at point propery changed. (slime-find-next-note): Use it. (slime-find-previous-note): Ditto.
New command C-M-, to go to previous xref location. [Old command C-M-. to go to next xref location.] Xref buffers are not automatically selected anymore; it's more ergonomic to cycle through them via C-M-. and C-M-, from within the source buffer. * slime.el (slime-search-property): Simplify slightly. (slime-find-next-note): Use it. (slime-find-previous-note): Use it, too. (slime-find-note): Deleted. (slime-editing-keys): Add C-M-,. (slime-previous-location-function): New variable. (slime-previous-location): New command. (slime-with-xref-buffer): Do not select Xref buffer. (slime-show-xref-buffer): Adapted accordingly. (slime-goto-next-xref): Highlight current item on C-M-. and C-M-,. (slime-goto-previous-xref): New. (slime-highlight-sexp): Renamed from `sldb-highlight-sexp'. (slime-highlight-line): New.
* slime.el (sldb-insert-restarts): Insert the proper numbers for the --more-- button. (sldb-restart-number-at-point): Rename back to sldb-restart-at-point. Don't use confisingly-verbose-names-for-no-good-reason. (sldb-restart-number-for-swank): Deleted.
Restarts in SLDB are now numbered reversely. The rationale is that always-existing restarts are likely to be associated with the same number now. * slime.el (sldb-insert-restarts): Number restart reversely. (sldb-restart-number-for-swank): New; recompute the unreversed number for the swank side. (sldb-restart-number-at-point): Previously `sldb-restart-at-point'. (sldb-invoke-restart): Adapted accordingly.
When ever Slime seems to get stuck (e.g. after some character encoding confusion), `M-x slime-reset' should hopefully bring it into a functional state again. * slime.el (slime-reset): Erase connection buffer.
Make M-x slime-changelog-date work. * slime.el (slime-changelog-date): Make the function be callable interactively.
* slime.el (slime-list-threads): Update information before setting the mode, otherwise it messes up current connection. * doc/slime.texi: fix typo.
* slime.el (slime-current-package): Move REPL stuff to contrib. * slime-repl.el (slime-repl-find-buffer-package): New function. (slime-repl-init): Initialize slime-find-buffer-package-function.
* slime.el (slime-current-package): Return REPL's package, if other are unavailable and if slime-repl is loaded.
* slime.el: Update copyright.
* slime.el (slime-length=): Fix (slime-length= '() 0). (slime-eval-feature-expression): Fix. Couldn't handle (NOT) and (NOT FOO BAR).
Generalize M-? (or M-_ respectively.) It will now list: - call sites for functions, - macroexpand sites for macros, - binding, setting, referencing sites for variables, - specializing methods for classes. * slime.el (slime-xref): Deal with :not-implemented. (slime-xrefs): New. Makes RPC request to XREFS. (slime-edit-callers): Renamed to `slime-edit-uses'. (slime-edit-uses): Use slime-xrefs. * swank-backend.lisp (who-*): Add default implementation which returns :not-implemented. * swank.lisp (xref-doit): Extracted from XREF. (xref): Pass over :not-implemented to Emacs side. (xrefs): New slime fun. To return results of multiple XREF requests at once.
* slime.el (slime-parent-bindings): Define M-? as `slime-edit-callers', too. My previous choice of M-_ was warped due to my German layout.
New binding: M-_ (`slime-edit-callers'). Similiar to `slime-who-calls' but only creates an Xref buffer if needed for disambiguation, and also pushes to the definition stack. Spiritually like M-. but works "in the other direction". * slime.el (sllime-edit-callers): New function. Cross between `slime-who-calls' and `slime-edit-definition'. (slime-parent-bindings): Define M-_ as `slime-edit-callers'. (slime-pop-xref-buffer): New helper. Extracted from `slime-show-xrefs'. (slime-show-xrefs): Use it. (slime-xref): Let callers specify a continuation.
* swank.lisp (documentation-symbol): Return more readable information.
* slime.el (slime-net-close): set-process-query-on-exit-flag doesn't exist in XEmacs. (slime-make-net-buffer): For now, disable querying here. Could also close the socket before killing the buffer. (slime-buffer-processes): Deleted.
* slime.el (slime-net-close): Do not query for process killing confirmation before killing a connection buffer. (slime-buffer-processes): New function for listing processes associated with a buffer.
Keep note overlays in a global variable. That's simpler and cheaper than scanning all buffers. * slime.el (slime-note-overlays): New variable. (slime-make-note-overlay, slime-remove-old-overlays): Use it.
slime.el(slime-remove-old-overlays): Fix stupid bug introduce by me the previous commit.
* slime.el (slime-remove-old-overlays): delete notes at the very beginning of the buffer too. Thanks to Nick Levine.
* slime.el (slime-transcript-start-hook) (slime-transcript-stop-hook): New hooks. (slime-eval-with-transcript): Use them. (slime-eval-with-transcript-cont): Deleted. * inferior-slime.el (inferior-slime-show-transcript) (inferior-slime-stop-transcript, inferior-slime-start-transcript): New functions. (inferior-slime-init): Install transcript hooks.
XEmacs fixes. * slime.el (slime-editing-keys): Use (kbd "C-M-.") because XEmacs translates [?\C-\M-.] to C-M-n. (next-single-char-property-change) (previous-single-char-property-change): Use next-single-property-change because next-char-property-change gets embarrisingly slow in XEmacs in font-locked buffers. It never felt that slow in Emacs 20 though.
* slime.el (slime-choose-overlay-region): Don't return zero length regions for :eof. (slime-show-buffer-position): The second argument to display-buffer means something completely different in XEmacs. Don't use it. (slime-severity-face): Handle :redefinition. (slime-temporarily-highlight-note): Use a timer instead of the post-command-hook.
* slime.el (slime-auto-select-connection, slime-auto-connect): Turn them into customizable variables.
Minor refactoring. * slime.el (slime-insert-note-group): Factored out from slime-insert-compilation-log. (slime-goto-location-position): Can't use goto-line.
Separate context info from compiler message text. * swank-backend.lisp (compiler-condition): Add a new slot :source-context. Remove :short-message. * swank-cmucl.lisp, swank-sbcl.lisp, swank-scl.lisp, swank-openmcl.lisp, swank-ccl.lisp: Update callers. * swank.lisp (make-compiler-note): Use source-context slot. * slime.el (slime-note.source-context): New. (slime-insert-compilation-log): Use it. (slime-note.short-message): Deleted.
Don't add linebreaks for one-line messages. (slime-insert-block): New function. (slime-insert-compilation-log): Use it. (slime-indent-rigidly): Use insert-before-markers, otherwise point ends up at before a bunch of inserted spaces.
Various compilation related changes. * slime.el (slime-show-note-counts): Don't show 0 values. (slime-severity<): New function. (slime-maybe-show-compilation-log): Always create the log buffer but display it only if the compilation failed. (slime-insert-compilation-log): Disable the stupidly inefficient font-lock-after-change-function. (slime-canonicalized-location-to-string): Use relative filenames. (slime-goto-location-buffer): Disable warnings about symlinks.
Make C-x ` work again. M-n and C-x ` are now very similiar; but the former operates relative to point in the source buffer, while the latter works relative to the compilation log. * slime.el (slime-insert-compilation-log): No do set `compilation-skip-to-next-location'.
M-n/M-p in .lisp buffers do not show the note in the minibuffer anymore if a compilation log is displayed to the user. In the compilation log, sort and group the notes by line/column number. * slime.el (slime-insert-compilation-log): Sort the notes by their line/column numbers; group notes of same location and display them as one entry. (slime-compilation-loc): Removed. (slime-canonicalized-location), (slime-canonicalized-location-to-string): Extracted from `slime-compilation-loc'. (slime-group-and-sort-notes): Does the sorting/grouping. (slime-show-note): Do not show note in minibuffer if compilation log is displayed to the user.
* slime.el (slime-profile-by-substring): new function for profiling functions by matching a substring. * swank.lisp (profile-by-substring): ditto. * contrib/slime-fuzzy.el (slime-fuzzy-complete-symbol): change `comint-completion-addsuffix' to not add space after completing a filename.
M-n / M-p in a .lisp buffer now also jump to the respective note in the compilation-log buffer if one is currently displayed to the user. * slime.el (slime-remove-old-overlays): Simplified. (slime-insert-compilation-log): Add a note-overlay for each note so we can find the right one when user uses M-n/M-p in .lisp buffer. (slime-goto-note-in-compilation-log): New. (slime-make-note-overlay): Extracted from `slime-create-note-overlay'. (slime-next-note, slime-previous-note): Simplified. (slime-show-note): Goto note in compilation-log if available. (slime-note-overlay-p): Call overlay property `slime-note', not just `slime'. (slime-find-note): Likewise; also returns the overlay if found. (slime-show-buffer-position): Optionally recenter position to the top of the window.
* swank-backend.lisp (severity [type]): Allow :redefinition. * swank-sbcl.lisp (signal-compiler-condition): Tag redefinitions. * slime.el (slime-maybe-show-compilation-log): Do not show compilation log if each note describes just a redefinition. (slime-insert-compilation-log): Insert notes indented by 2 spaces. Insert some more newlines so the buffer appears more structured. (slime-show-note-counts): Add :redefinition to ecase. (slime-redefinition-note-p): New. (slime-severity-label): Was unused. Adapted to be usable.
* slime.el (slime-maybe-show-compilation-log): New function. (slime-compilation-finished-hook): Use it. Now that the compilation buffer gets not selected it's more acceptable to display it more often. (slime-insert-compilation-log): Set compilation-skip-threshold to 0 and compilation-skip-to-next-location to nil. Seems to work better for us. (slime-with-popup-buffer): Synch window-point, otherwise it be at the end of the buffer for reused buffers. (slime-display-popup-buffer): Return the window.
* slime.el (slime-display-popup-buffer): Synch window-point. window-point would be ot the end of the buffer for reused buffers. (slime-maybe-show-compilation-log): New function. (slime-compilation-finished-hook): Use it. Now that the compilation buffer gets not selected it's more acceptable to display it more often. (slime-insert-compilation-log): Set compilation-skip-threshold to 0 and compilation-skip-to-next-location to nil. Seems to work for us.
* slime.el (slime-sexp-at-point-for-macroexpansion): use markers for bounds, because in some situations text layout could be modified before bounds would be used, for example, using keyboard macros.
slime.el(slime-inspector-fetch-all): go to the end even if there is nothing more to fetch.
* slime.el (slime-inspector-fetch-all): new command, bound to > in the inspector buffer. * doc/slime.texi (Frame Navigation): add description of `sldb-end-of-backtrace' and `sldb-beginning-of-backtrace'. (Inspector): add `slime-inspector-fetch-all'.
* slime.el (slime-editing-keys): Don't override M-*. The default binding should do what Matthias wants.
* slime.el (slime-beginning-of-symbol): Limit searching to 2000 characters.
* swank.lisp (ed-in-emacs): Handle symbols/function-names better. * slime.el (slime-ed): Updated accordingly.
* slime.el (slime-net-coding-system): make it customizable. (slime-inspector-operate-on-click): Make --more-- button in the inspector clickable.
Generalize list-threads for implementation-dependent attributes. * swank-backend.lisp (thread-attributes): New function. * swank-openmcl (thread-attributes): Implement it. * swank.lisp (list-threads): Return a table with the attribute names as the first row and the new attributes in the last columns. * slime.el (slime-update-threads-buffer): For now, ignore the extra attributes.
* slime.el (slime-compiler-macroexpand-inplace) (slime-compiler-macroexpand-1-inplace): New commands. (slime-macroexpansion-minor-mode-map): Bind them. Patch by Stelian Ionescu.
* slime.el (slime-beginning-of-symbol): Skip over #., #-, and #+. ([test] symbol-at-point.15 .. 17): Test it.
Add :WAIT keyword argument to support blocking in SWANK:INSPECT-IN-EMACS.
* slime.el (slime-initialize-lisp-buffer-for-test-suite): Moved to contrib/slime-fontifying-fu.el
Don't try so hard to get symbol-at-point right. The old implementation was complicated and didn't even pass it's own test suite. The new version is less ambitious but simpler. * slime.el (slime-symbol-at-point, slime-beginning-of-symbol) (slime-end-of-symbol): Simplify. (slime-exit-vertical-bars, slime-symbol-constituent-at): Deleted. ([test] symbol-at-point.1 .. symbol-at-point.14): Renamed form fancy-symbol-names and split up into smaller peices. (slime-test-symbols): New. (slime-check-symbol-at-point): Renamed from slime-check-fancy-symbol-name.
* swank-backend.lisp (frame-source-location): Renamed from frame-source-location-for-emacs. Update callers accordingly.
* slime.el (slime-check-fancy-symbol-name): Don't update the loop index inside the loop body.
* slime.el ([test] font-lock-magic): Moved to fontifying-fu contrib.
* slime.el (slime-dispatch-event [:emcas-rex]): Don't clutter the main code-path with confusing error handling.
* slime.el (def-slime-test): Forgot to remove debugging code.
* slime.el (slime-dispatch-event :emacs-rex): Make sure that we pop the continuation on erroneous send. Patch by Mark Cox <email@example.com>.
* slime.el (slime-disconnect): Now only disconnects one connection, current one by default, or given by argument. (slime-disconnect-all): New. What `slime-disconnect' was before. (def-slime-test): Changed: expected failures are now given by (:fails-for ...) clauses. Extended: new clause (:style ...) to have a test run only on a certain communication style. Updated existing test cases accordingly. ([struct] slime-test): New slot `skipped'. (slime-skipped-tests): New var. (slime-execute-tests): Adapted accordingly. ([test] disconnect): Renamed to `disconnect-and-reconnect' ([test] disconnect-one-conneciton): New. Adapted from patch by Stas Boukarev.
* slime.el ([test] fancy-symbol-names): Add cases involving #| ... |# style comments. Currently failing. Reported by Madhu.
fix missing paren
(slime-goto-location-position): Only go to match-beginning if search succeeded.
* slime.el (slime-symbol-at-point): Sometimes we can be too good, e.g. in "|# (defun foo () (getf" the above would return nil because the vertical bar is not terminated. The user probably wants "getf" nontheless. Reported by Madhu.
* slime.el (sldb-restartable-frame-line-face): Set a default value. (sldb-frame-restartable-p): New. (sldb-compute-frame-face): Use it. (sldb-show-frame-details): Use it, too.
new variable: slime-description-autofocus Controls behaviour of popped up description buffers.
* slime.el (slime-dispatch-event): New event `:read-from-minibuffer'. (slime-read-from-minibuffer-for-swank): New. * swank.lisp (dispatch-event): Pass through :read-from-minibuffer event. (read-from-minibuffer-in-emacs): Now uses new event rather than eval-in-emacs.
* slime.el (slime-current-parser-state): Do not save match-data. This function is called so often that it makes a difference.
Move font-lock-magic into contrib/slime-fontifying-fu.el. * slime.el (slime-highlight-suppressed-forms), (slime-reader-conditional-face), (slime-search-suppressed-forms-internal), (slime-search-suppressed-forms), (slime-search-directly-preceding-reader-conditional), (slime-extend-region-for-font-lock), (slime-compute-region-for-font-lock), (slime-activate-font-lock-magic): Moved.
Rewrote some parts of the font-lock-magic in face of its fragility over the last days. Hopefully it'll be better now. * slime.el (slime-region-for-tlf-at-point): Removed. Not needed anymore. (slime-region-for-extended-tlf-at-point): Removed. (slime-search-backward-reader-conditional): Removed. (slime-search-directly-preceding-reader-conditional): New. Similiar to the above. (slime-extend-region-for-font-lock): Display bug message when error is caught. (slime-compute-region-for-font-lock): Rewritten. ([test] font-lock-magic): Another test case.
* slime.el (slime-region-for-tlf-at-point): Use `(end-of-defun) (backward-sexp)' rather than `(end-of-defun) (beginning-of-defun' to go to the start of the current defun. The latter would fail on "() (a\nb\nc)".
* slime.el (slime-compute-region-for-font-lock): Fix typo.
* slime.el (slime-search-suppressed-forms): On errors, we have to continue the search, otherwise there's a chance that we miss reader conditionals in the current font-lock region. (slime-search-backward-reader-conditional): New. Extracted from `slime-region-for-extended-tlf-at-point'. (slime-region-for-extended-tlf-at-point): Use it. (slime-font-lock-region): Removed. (slime-font-lock-region-changed-p): Removed. (slime-extend-region-for-font-lock): Simplified. (slime-compute-region-for-font-lock): Make sure that we never return a flag indicating change when there was in fact no change. This should make the explicit guard against infinite loop superfluous. (slime-extend-region-warn-infinite-loop): Removed. ([test] font-lock-magic): More cases.
Make font-lock-magic test case pass. * slime.el (slime-bug): New function. (slime-search-suppressed-forms): Use it. (slime-extend-region-warn-infinite-loop): Ditto. (slime-search-suppressed-forms-internal): Check whether we're inside a comment, or a string. ([test] font-lock-magic): Add another case.
* slime.el (slime-display-warning): Add `warning' as warning type. (slime-show-note-counts): If compilation failed, fontify the message in red to be more visibly apparant.
(slime-eval-feature-expression): Guard for more erroneous input (due to refontification while user's typing.)
* slime.el ([test] font-lock-magic): Add some hard cases.
* slime.el (slime-compute-region-for-font-lock): Fix typo.
byte compile slime-search-suppressed-forms; forgot that I commented it out.
Font-lock magic barfed on #+(test). * slime.el (slime-eval-feature-conditional): Renamed to `slime-eval-feature-expression'. (slime-unknown-feature-expression): New error symbol. (slime-eval-feature-expression): Signal it. (slime-search-suppressed-forms): Catch it. (slime-compute-region-for-font-lock): Guard against unbalanced parentheses. (slime-initialize-lisp-buffer-for-test-suite): New helper. ([test] font-lock-magic): New test case. Reported by Kalyanov Dmitry.
* slime.el (slime-search-suppressed-forms-internal): Not properly factored out by earlier changeset.
#+#.foo confused the recent fontification changes. Fix that. * slime.el (slime-search-suppressed-forms-internal): New. Split from `slime-search-suppressed-forms'. (slime-search-suppressed-forms): Catch `invalid-read-syntax' errors.
* slime.el (slime-line-number-at-pos): Replaced with `line-number-at-pos', and add that to the portability layer. (display-warning): Add to the portability layer. (slime-display-warning): New. * slime.el: Implement a guard against infinite loops during fontification. We detect and prevent those. If we detect one, we emit a big warning to the user. (slime-font-lock-region): New variable. (slime-font-lock-region-changed-p): New helper. (slime-extend-region-warn-infinite-loop): New helper. (slime-compute-region-for-font-lock): Extracted from `slime-extend-region-for-font-lock'. (slime-extend-region-for-font-lock): Use it; add the guard.
* slime.el (slime-extend-region-for-font-lock): (nth 0 <parser-state>) may return negative numbers.
* slime.el: Fix infinite loop during fontification introduced by yesterday's changeset. (slime-region-for-tlf-at-point): New. Like `slime-region-for-defun-at-point' but tries harder to get the toplevel form right. (slime-region-for-extended-tlf-at-point): Previously `slime-region-for-extended-defun-at-point'. (slime-extend-region-for-font-lock): Use it. (slime-mark-defun-for-font-lock): Ditto.
* slime.el: Fix fontification of suppressed (by reader conditionals) forms. That is make it reliably and totally work. (slime-region-for-extended-defun-at-point): New. Like `slime-region-for-defun-at-point' but takes preceding reader conditionals into account. (slime-extend-region-for-font-lock): New. Make sure that fontification operates on regions spanning a whole toplevel form only. So we never operate within the context of a reader conditional and we never miss any of those. (slime-search-suppressed-forms): Remove ignore-errors; not needed anymore now as we extend the region for fontification. (slime-mark-defun-for-font-lock): New. (slime-activate-font-lock-magic): Push `slime-extend-region-for-font-lock' onto `font-lock-extend-region-functions'.
* slime.el (slime-show-description): Put the connection name into the buffer name for description buffers. So we can have multiple description buffers open, one per connection. Useful for comparing the output of DISASSEMBLE across implementations.
* slime.el (slime-handle-indentation-update): Revert change from 2009-03-09; that was a thinko. ([test] indentation): Some basic test case for correct indentation.
* slime.el (slime-inspector-mode-map): Remove binding for M-RET. (It'll be added by the slime-repl contrib.) (slime-inspector-copy-down): Removed.
* slime.el (slime-setup-contribs): Moved over from slime-autoloads.el
* slime.el ([test] macroexpand): Fix more case issues.
* slime.el ([test] macroexpand): Ignore case.
* slime.el (slime-define-channel-type): Indulge in pretty colors. (slime-define-channel-method): You, too! (slime-handle-indentation-update): Always put an indentation update on 'slime-indent; for slime-indentation-fu.
* slime.el (slime-with-xref-buffer): Use buffer-names like "*slime xref...*" so that slime-kill-all-buffers can pick it up easily.
* slime.el (slime-choose-overlay-for-read-error): Extraced and extended from `slime-choose-overlay-region'. Differentiate between symbol-related reader-errors (package not found &c) and character-related reader-errors. (slime-choose-overlay-region): Use it.
* slime.el (make-slime-buffer-location, make-slime-file-location): Do not default to (:hints), but to nil, as expected in the slime-side source-location machinery.
* slime.el (slime-choose-overlay-region): Special case :read-error notes regardless of position kind. * swank-sbcl.lisp (signal-compiler-condition): Return :READ-ERROR as severity for reader-errors. (compiler-note-location): Fix off-by-one when compiling from buffer.
* slime.el ([portability] getf): Redefine `getf' on Emacs21 to work on malformed plists like it does on later Emacsen. This made the `find-local-definitions' test case fail on Emacs21.
* slime.el (slime-check-fancy-symbol-name): Use `slime-test-expect' instead of `slime-check'. ([test] fancy-symbol-names): Extend test case; check for "Foo" in #<Foo| {...}>. (slime-symbol-constituent-at-pos): Check for #<.
* slime.el (slime-wait-condition): Remove `save-excursion'; it made the `repl-test' test case fail because this test tries to set point to the new prompt in vain.
* slime.el (slime-pretty-package-name): Simplify.
Use a separate key, C-c C-d #, to lookup reader-macros. * hyperspec.el (common-lisp-hyperspec-lookup-reader-macro): New command. (common-lisp-hyperspec-reader-macros): New variable. (common-lisp-hyperspec-reader-macro-at-point): Moved over from slime.el * slime.el (slime-doc-bindings): Bind C-c C-d #. (slime-hyperspec-lookup): Don't consider reader-macros.
* slime.el ([test] macroexpand): New test case. (slime-buffer-visible-p): New helper. (slime-execute-as-command): New helper.
* hyperspec.el (common-lisp-hyperspec-symbols): Add links to reader macros. * slime.el (slime-reader-macro-at-point): New function. (slime-hyperspec-lookup): Call it. Adapted from Stas Boukarev.
* slime.el: Rename `slime-symbol-name-at-point' to `slime-symbol-at-point'. * slime-autodoc.el, slime-c-p-c.el, slime-enclosing-context.el * slime-package-fu.el, slime-parse.el, slime-presentations.el * slime-xref-browser: Rename `slime-symbol-name-at-point' to `slime-symbol-at-point'
* slime.el ([portability] lisp-mode-syntax-table): On Emacs21, make @ a prefix character like it's from Emacs22 onward. `slime-symbol-name-at-point' was written with that assumption.
* slime.el (slime-current-parser-state): Wrap `syntax-ppss' in a `save-match-data'. This issue has been reported to the Emacs maintainers.
* slime.el (slime-defun-if-undefined), (slime-defmacro-if-undefined): Renamed to `slime-DEFUN-if-undefined' and `slime-DEFMACRO-if-undefined' to better differentiate between the two. (slime-indulge-pretty-colors): New function. You can now put a symbol on the plist of `slime-indulge-pretty-colors' to make the symbol be fontified like `defun'. This is done for `slime-def-connection-var', and the two symbols above.
* slime.el (slime-defmacro-if-undefined): New. Analogous to `slime-defun-if-undefined'. ([portablity]] with-selected-window) Use it. ([portability] with-temo-buffer): Likewise. Patch by Theam Yong Chew.
* slime.el (sldb-backward-frame): Only move backward when we're below the backtrace marker.
* slime.el (slime-pretty-package-name): Signalled an error on simple symbols; fix that! Reported by Geoff Wozniak.
* slime.el (slime-current-form-path): Use `slime-current-parser-state'.
* slime.el ([test] fancy-symbol-names): New, hopefully comprehensive, test for funky symbol names. (slime-check-fancy-symbol-name): Helper. (slime-exit-vertical-bars): New function to move out from |foo|. (slime-symbol-constituent-at): New predicate to test whether the character at point is a valid symbol constituent. (slime-beginning-of-symbol, slime-end-of-symbol): Rewritten using above two functions and `forward-sexp' that correctly parses escapes etc. (slime-sexp-at-point): Consider thing at point a symbol first.
* slime.el (slime-forward-cruft): Forward whitespace, reader conditonals, comments. Splitted from `slime-forward-sexp'. (slime-pretty-package-name): Use it.
Re-checkin my change from 2009-02-14. It seems I didn't actually commit it.
`M-x slime-format-string-expand' displays the expansion of a format string. * slime.el (slime-string-at-point) New. (slime-string-at-point-or-error): New. (slime-format-string-expand): New; use them. * swank-backend.lisp (format-string-expand): New interface. * swank.lisp (swank-format-string-expand): New; use it.
* swank.lisp (dispatch-event [:emacs-rex]): Reply a :invalid-rpc message if the specified thread doesn't exist. * slime.el (slime-dispatch-event): Handle :invalid-rpc. (slime-init-connection-state): Bind slime-current-thread to avoid problems with dead threads.
* slime.el (slime-restart-or-init-modeline-update-timer): Don't run the timer repeatedly. (slime-change-directory): Also change the directory in the connection-buffer.
* slime.el (slime-current-tlf, slime-current-form-path): New functions; can be handy when inspecting source-locations while debugging M-.
* slime.el: Barf if emacs-major-version <= 20. We support 21 and up. (slime-emacs-20-p): Removed. * slime.el (slime-forward-reader-comment): Removed. (slime-forward-any-comment): New; superset of above. (slime-forward-reader-conditional): Make it understand SBCL's #!+,#!- so it works in source files of SBCL itself, too. (slime-current-parser-state): New.
* slime.el (slime-initialize-macroexpansion-buffer): Clear the buffer-undo-list, so the user can't get expansions from earlier macroexpansions into the buffer, screwing up badly.
* slime.el (slime-editing-keys): New variable; splitted from `slime-keys'. Contains key bindings that are useful for buffers where users can edit s-exprs, such as source buffers and the REPL. (slime-keys): Use it.
Fix C-u C-c C-c in SLDB. * slime.el (sldb-recompile-frame-source): Bind `slime-compilation-policy' at the right place.
* slime.el (slime-keys): Put C-c C-i and M-* back.
* slime.el (slime-compile-file-options): New variable. (slime-compile-file): Use it.
* slime.el (slime-space): Declare `slime-space' to `delete-selection-mode' and friends (CUA) so that their behavior is the same as with normal insertion of a space.
* slime.el ([test] arglist): Update arglist.
Move the tree widget for compiler notes to contrib/.
* swank-backend.lisp (swank-compile-string): Pass the buffer-file-name to Lisp, not only the directory. Update callers accordingly
* slime.el (slime-popup-restore-data): Renamed from slime-popup-buffer-restore-info. (slime-popup-buffer-saved-fingerprint) (slime-popup-buffer-saved-emacs-snapshot) (slime-popup-buffer-snapshot-unchanged-p) (slime-popup-buffer-restore-snapshot) (slime-xref-quit, slime-xref-retract): Deleted.
* slime.el (slime-popup-restore-data): Renamed from slime-popup-buffer-restore-info. (slime-popup-buffer-saved-fingerprint) (slime-popup-buffer-saved-emacs-snapshot): Deleted.
Remove some customization variables of questionale use. * slime.el (slime-when-complete-filename-expand) (slime-space-information-p, slime-display-compilation-output) (sldb-show-location-recenter-arg, slime-recenter-window) (slime-display-buffer-region): Deleted.
Just use find-tag-marker-ring as stack for M-. * slime.el (slime-push-definition-stack) (slime-pop-find-definition-stack): Do whatever Emacs's standard find-tag commands do.
Fix the slime-next-location command. * slime.el (slime-xref-last-buffer): New variable. (slime-show-xrefs): Initialize it. (slime-goto-next-xref): Use it. (slime-search-property): New function. (slime-xref-buffer): Delted
* slime.el (slime-with-xref-buffer): Don't set slime-popup-buffer-quit-function. Use the default. Don't shrink the window because it may have existed before creating the buffer and we need to restore it. (slime-goto-xref): Just use slime-popup-buffer-quit. (slime-edit-definition-cont): Push definition stack here so that we don't need to do anything special in slime-goto-xref. (slime-display-popup-buffer): Also save the buffer that the popup window was displaying before (if the window is not new). (slime-close-popup-window): Restore the old buffer (if any) of the popup window.
* slime.el (slime-show-buffer-position): Use reposition-window.
* slime.el (slime-keys): Remove the binding for C-c C-i. M-TAB can also be pressed with M-C-i which is probably not taken by the window manager. ESC TAB would also work. Maybe we should reuse C-c C-i for slime-inspect. Move C-c C-y to slime-repl.e. Remove C-c C-f: it's already on C-c C-d f. Remove C-c M-0: slime-restore-window-configuration doesn't exist. Remove M-g: slime-quit doesn't work since ages. * slime-repl.el (slime-mode-map): Bind C-c~ not ~. Reported by James Wright. (slime-repl-mode-map): Bind M-TAB. Remove C-c C-k: compiling the REPL buffer doesn't work anyway. Remove C-cC-b, C-c:, C-cE, C-cC-d, C-cC-w, C-M-x, C-cC-t, C-cC-l: those are already bound in slime-parent-map.
*** empty log message ***
Create a compilation-log buffer so that next-error works but don't display the buffer. * slime.el (slime-create-compilation-log): New function. (slime-compilation-finished-hook): Use it.
Use keymap inheritance to share bindings in various modes. * slime.el (slime-parent-map): New keymap. (slime-mode-map, slime-popup-buffer-mode-map, sldb-mode-map) (slime-inspector-mode-map): Use it. (slime-parent-bindings, slime-prefix-bindings): New variables. (slime-prefix-key, slime-define-key): Deleted. Update contribs accordinly.
* slime.el (slime-with-popup-buffer): New argment: select. If nil (default) buffer will only be displayed but not selected.
* slime.el (slime-show-compilation-log): Insert two lines at the beginning. Emacs 21 seems to skip over those two.
Make it possible to limit the number of displayed restarts. * slime.el (sldb-initial-restart-limit) (sldb-insert-more-restarts): New. (sldb-setup, sldb-insert-restarts): Use it.
* slime.el (slime-local-variable-p): New function. XEmacs requires two arguments.
* swank-cmucl.lisp (note-error-location): If possible, include the filename. * slime.el (slime-goto-location-position): Add :eof as position kind.
slime.el (slime-line-number-at-pos): New compatibility function.
(slime-show-compilation-log): Set next-error-last-buffer.
* slime.el (slime-goto-location-buffer): Don't goto point-min. (slime-check-location-buffer-name-sanity) (slime-check-location-filename-sanity): Separated from slime-goto-location-buffer.
By default, show compiler notes in a buffer with compilation-mode. * slime.el (slime-show-compilation-log) (slime-maybe-show-compilation-log): New functions, (slime-compilation-finished-hook): Change the default value to 'slime-maybe-show-compilation-log.
Experimental implementation of "channels". The idea is to support arbitrary protocols without changes to the low level event dispatcher. * slime.el (slime-make-channel, slime-close-channel) (slime-channel-send, slime-send-to-remote-channel): New functions. (slime-define-channel-type, slime-define-channel-method): New macros. (slime-dispatch-event): Support channel events. * swank.lisp (channel, listener-channel): New classes. (channel-send, send-to-remote-channel): New functions. (create-listener): New function. Test case for channel code. (process-requests): Process channel events.
Experimental channels
* slime.el ([test] arglist): Guard against nil. ECL returns nil most of the time.
* slime.el (slime-eval-async, slime-dispatch-event): Canoncalize return value. Previously they returned an arbitrary value which was displayed to the minibuffer due to a bug in slime-autodoc. The arbitrariness of the return value made debugging this a chore.
* swank.lisp (sleep-for): New function * slime.el ([test] break): Use SWANK::SLEEP-FOR to help CCL pass this test. ([test] arglist): Update arglist of swank::compile-string-for-emacs. ([rest] find-definition.2): Allow some whitespace before the actual position. Otherwise, CCL would fail on this test.
* slime.el (slime-cd, slime-pwd): New commands. (slime-change-directory): New function. (slime-change-directory-hooks): New hook. * inferior-slime.el (inferior-slime-change-directory): New function. (inferior-slime-init): Hook it in.
* slime.el ([test] find-definition.2): Also fails for Lispworks. ([test] interrupt-at-toplevel, [test] interrupt-in-debugger): Those don't work well if there's no REPL thread. * swank-backend.lisp (wait-for-input, wait-for-one-stream): Don't use PEEK-CHAR because we can't interrupt that cleanly. * swank.lisp (simple-serve-requests): Run the REPL inside WITH-CONNECTION. * swank-lispworks.lisp (emacs-connected): Don't install the signal handler here ... (install-sigint-handler): ... use this instead
As of now, `C-u C-c C-c' compiled a function with maximum debug settings (SBCL only.) Now, `M-- C-c C-c' will compile a function with maximum _speed_ settings (still SBCL only) --- useful to elicit compiler notes. * slime.el (slime-compilation-debug-level): Renamed to `slime-compilation-policy'. (slime-normalize-optimization-level): Renamed to `slime-compute-policy'. * swank.lisp (compile-string-for-emacs): Takes a policy now. (compile-multiple-strings-for-emacs): Ditto. * swank-backend.lisp (swank-compile-string): Change :DEBUG key arg to :POLICY. * swank-scl.lisp, swank-openmcl.lisp, swank-lispworks.lisp * swank-ecl.lisp, swank-corman.lisp, swank-cmucl.lisp, * swank-clisp.lisp, swank-allegro.lisp, swank-sbcl.lisp: Changed accordingly.
Move slime-lisp-package to slime-repl.el * swank.lisp (create-repl): Return initial package and prompt. * slime-repl.el (slime-repl-event-hook-function): Handle :new-package events here. (slime-output-buffer): Initialize slime-buffer-package. (slime-repl-connected-hook-function): Initialize slime-lisp-package.
* slime-repl.el (slime-repl-connected-hook-function): Create a repl thread before creating a repl buffer.
Don't restore window configs in sldb. That doesn't work in the native repl, because output may have moved point. * slime.el (sldb-setup, sldb-exit): Use temp buffer code. (slime-display-popup-buffer): Don't overwrite existing variables. (slime-close-popup-window): Factored out from slime-popup-buffer-quit. (slime-save-local-variables): New macro. (sldb-maybe-kill-buffer, sldb-saved-window-configuration): Deleted.
* swank.lisp (connection.env): New slot. To hold dynamic variable bindings for this connection. (with-io-redirection): Use it. (create-repl): New function. Currently only redirects IO for the connection. Could potentially be used to create multiple listeners, each with a set of streams and corresponding buffers. (*redirect-io*, maybe-call-with-io-redirection) (call-with-redirected-io): Deleted. * slime-repl.el (slime-repl-connected-hook-function): Create a repl at startup. Well, initialize stream redirection.
Move most of the REPL mode to contrib. Disable some commands that depend on the existence of a REPL buffer.
Create a repl also for *communication-style* = nil. Use a custom stream which processes SLIME requests while waiting for input. * slime.el (slime-set-connection-info): Don't create a repl buffer. (slime-start-lisp): Bind process-connection-type to nil to avoid problems witht CLISPs readline code. * swank.lisp (read-non-blocking, make-repl-input-stream) (simple-repl): New functions. (simple-serve-requests): Use it. * swank-backend.lisp (wait-for-one-stream, wait-for-streams): New functions. (wait-for-input): Use it to support wainting on multiple streams. * swank-cmucl.lisp (to-fd-stream): New function. (wait-for-input): Use it.
* slime.el (slime-run-mode-hooks): Wrapper for Emacs21. (slime-repl-mode): Use it. Reported by Peter Denno.
* slime.el (sldb-insert-restarts): Make the space before each restart also propertized, consistent with how each line in the backtrace is fully sensitive.
Reset the stream column to 0 after eval requests. * swank.lisp (interactive-eval, eval-region): Use FRESH-LINE to reset the stream column. * slime.el (test repl-test): Adjust test accordingly.
Be a bit more careful when computing the toplevel restart. * swank.lisp (throw-to-toplevel): Test *sldb-quit-restart* for nilness. * sldb-quit (sldb-quit): Show the returned value in brackets.
Make the modeline a bit shorter. * slime.el (slime-compute-modeline-string): Remove PKG: and CON: to save space. (slime-compute-modeline-connection-state): Don't include zeros.
* slime.el (slime-repl-mode): Use `run-mode-hooks' rather than just `run-hooks'. That way, after-change-major-mode-hook is called automatically. Patch from David Reitter.
fix slime-qualify-cl-symbol-name for packages named by strings in IN-PACKAGE
* slime.el (slime-macroexpansion-minor-mode-map): Bind keybindings of `undo' to `slime-macroexpansion-undo'. (slime-show-macroexpansion): Renamed to `slime-initialize-macroexpansion-buffer' (slime-initialize-macroexpansion-buffer): Make sure that the user can't undo past the initial insertion. (slime-macroexpand-undo): New function. Tries to undo-only.
* slime.el (slime-trace-query): SPEC argument can be a symbol.
* slime.el (slime-compute-modeline-connection-state): Fix computation of debugged requests.
* slime.el (slime-compute-modeline-connection-state): Print the number of debugged requests if non-zero. (slime-connection-state-as-string): Removed unused branches. (slime-compute-connection-state): Removed :debugged branch making most likely return :connected instead.
Modeline wouldn't display {debugged..} after `slime-interrupt'. * slime.el (slime-debugged-connection-p): Can't rely on `sldb-debugged-continuations' to be non-null in every SLDB buffer.
`q' in temp buffers should only delete the window if it was newly created for the buffer. * slime.el (slime-display-popup-buffer): New function. Recognize if the window didn't exist before. Save the created window and the selected window in buffer local variables. (slime-make-popup-buffer): Renamed from slime-popup-buffer. (slime-popup-buffer-quit): Delete the created window (if needed) and restore the old selected window. Don't touch other windows. (slime-edit-value-callback): Calling lisp-mode deletes all local variables. We need to that inside with-popup-buffer.
* slime.el (slime-update-all-modelines): Only walk through widnow-list not buffer-list. (slime-restart-or-init-modeline-update-timer): Inrease the timer interval to 0.5 seconds.
Reincarnate "eval..." (almost) * slime.el (slime-compute-modeline-connection-state): Return the number of outstanding requests if connected. (slime-update-all-modelines): Renamed from slime-update-modelines, loops through all slime buffers. (slime-restart-or-init-modeline-update-timer): New function. (slime-dispatch-event): Arrange for modelines to be updated on :EMACS-REX and :RETURN.
* swank.lisp (invoke-default-debugger): New condition type. (swank-debugger-hook): Handle invoke-default-debugger conditions. (sldb-break-with-default-debugger): Signal invoke-default-debugger to transfer control to the default debugger. New argument DONT-UNWIND to invoke the native debugger without unwinding the stack. * slime.el (sldb-break-with-default-debugger): By default, unwind the stack before invoke the native debugger. With prefix argument, run the native debugger in the dynamic environment of SLDB.
* slime.el ([test] package-updating): Allegro returns "||" as prompt for the keyword package. I guess that's acceptable.
* slime.el (slime-popup-buffer-quit): Always delete windows and bury the buffer.
* slime.el ([test] find-definition.2, [test] compile-defun): Expect to fail for CCL.
* slime.el (slime-repl-history-pattern): Simplify as suggested by Knut Olav Bohmer and Michael Weber.
* slime.el (slime-eval-with-transcript) (slime-eval-with-transcript-cont): Restore the current buffer, before calling cont.
* swank.lisp (debug-in-emacs): Bind *sldb-quit-restart* here, if necessary to the next abort retstart.
* slime.el (slime-popup-buffer-quit): Call bury-buffer with explicit argument for compatibility with XEmacs.
* slime.el (slime-repl-history-pattern): Use the part of input between its start and (point) as history search pattern. Previously we used the entire input.
* slime.el: Fix change from 2008-10-20. Use (eval-when (compile)...) instead of (eval-when-compile ...), because the latter is more like (eval-when (compile eval) ...).
* slime.el (slime-redirect-inferior-output): New command.
* slime.el: Require some packages, e.g. apropos, at compile time to suppress some "undefined function" warnings.
* swank.lisp (frame-locals-and-catch-tags): New function. Fetch locals and catch tags with a single RPC. * slime.el (sldb-frame-details): Use it. * swank-backend.lisp (frame-catch-tags): Provide a default implementation. Delete the dummy defs in various backends.
* swank-backend.lisp (frame-restartable-p): New function. (swank-frame): Deleted. Update implemenetations accordingly. (print-frame): Renamed back from print-swank-frame. * swank.lisp (backtrace): Don't clutter the backtrace with '(:restartable :unknown). For practical purposes :unknown is the same as nil. * slime.el (sldb-compute-frame-face): Only accept nil or t for the :restartable prop.
* swank-backend.lisp (swank-compile-file): Return the same values as COMPILE-FILE. Update backends accordingly.
toggling of inspector verbosity In verbose mode the inspector uses normal PRINT-OBJECT machinery to produce the title part. SWANK:*INSPECTOR-VERBOSE* controls default verbosity. Inside the inspector "v" is bound to slime-inspector-toggle-verbosity which changes the verbosity of the current inspector. Inspecting a subpart inherits the verbosity of the parent.
Some cleanups for compilation commands. * slime.el ([defstruct] slime-compilation-result): Rename result slot as successp. (slime-make-compilation-finished-continuation): Deleted. slime-eval-async preserves the current buffer and preserving the window-configuration was always a questionable feature. (slime-compilation-finished): Simplified. (slime-show-note-counts): Also show the success/failure flag. (slime-recompile-locations): Take a continuation as argument rather than messing around with compilation-finished-hooks. (slime-aggregate-compilation-results): New function. (slime-xref-recompilation-cont): Renamed from slime-make-xref-recompilation-cont. (slime-compiler-results): Deleted. (slime-goto-first-note-after-compilation): Replaced with hook function slime-goto-first-note. (slime-compilation-just-finished): Deleted. (slime-to-lisp-filename-function): Use convert-standard-filename. * swank.lisp ([defstruct] compilation-result): Renamed from swank-compilation-result. (measure-time-interval): Return seconds as float. (collect-notes): Renamed from swank-compiler. Return a single compilation-result. (compile-multiple-strings-for-emacs): Return a list of compilation-results instead of a single result with merged notes. * swank-backend.lisp (filename-to-pathname): Renamed from parse-emacs-filename. Updated callers. (pathname-to-filename): New function. Use it where appropriate. * swank-scl.lisp (pathname-to-filename): Implement it in the backend to get rid of the #+scl in swank.lisp. * swank-cmucl.lisp (swank-compile-file, swank-compile-string): Return t on success.
* slime.el (slime-list-compiler-notes): Revert change from 2008-08-15 which introduced automatic shrinkage of the compiler-notes buffer. This turned out to be more annoying than worthwhile. On the cases where it's desired, the user can just use `C-x -' himself to shrink the notes buffer.
* slime.el (slime-cycle-connections): Do not make the new connection buffer-local if we're currently in a REPL buffer.
* slime.el (slime-cycle-connections): New command.
* slime.el (slime-define-both-key-bindings): New function. Factor of slime-init-keymaps. (slime-init-keymaps): Use it. (slime-control-modified-char): Deleted.
(slime-prefix-map): Fix docstring.
* slime.el (slime-prefix-map): New keymap. (slime-define-key): Use it. Also drop unused :inferior arg. (slime-inspector-mode-map): Bind C-c to slime-prefix-map.
(slime-batch-test): Use let* to bind slime-randomize-test-order.
* slime.el (slime-repl-input-end-mark): Deleted. It was always at the end of buffer. Use point-max instead. (slime-repl-eol): Removed. The usual end-of-line does the same.
* slime.el (slime-eol-conversion-fixup): Return 0 (not nil) for anyting other than CRLF conventions.
* slime.el (slime-with-output-end-mark): slime-repl-show-maximum-output no longer accepts any arguments.
* test.sh: Parse the -S option as advertized. * slime.el (slime-randomize-test-order): Add the * to the docstring. ([def-slime-test] break2): Also CCL is expected to fail here.
* slime.el ([def-slime-test] break): Split it up in two versions to make the debugger-hook issue more explicit.
* slime.el (slime-batch-test): Accept test-name and randomize arguments. * test.sh (usage): Accept -n and -S options.
* slime.el (slime-randomize-test-order): New variable. (slime-shuffle-list): New function. (slime-run-tests): Use it.
* slime.el (slime-repl-emit-result): Update window-point.
* slime.el (slime-save-marker): New marcro. Use it in combination with insert-before-markers. (slime-check-buffer-contents): Use {} resp. [] to describe the position of output resp. input markers.
* slime.el (slime-compile-file): Invert logic for the display-output arg.
(slime-eval-with-transcript-cont): Save the position of the input-start-mark not the marker itself.
* slime.el (slime-eval-with-transcript): Change order of arguments to make the common case easier to use.
Some cleanups for the REPL code. * slime.el (slime-show-last-output) (slime-show-last-output-function) (slime-show-last-output-region) (slime-maybe-display-output-buffer) (slime-repl-last-input-start-mark): Delete unused code. (slime-repl-emit-result, slime-repl-insert-prompt) (slime-repl-show-abort, slime-repl-insert-result) (slime-insert-transcript-delimiter) (slime-eval-with-transcript-cont): Consistently use save-excursion and insert-before-markers. We always want to preserve the cursor position in the input region (for type-ahead). (slime-batch-test): Use a timer. (slime-check-buffer-contents): New function to test contents and current position. Use it in various places. (sldb-recenter-region, def-slime-test interactive-eval) (def-slime-test interactive-eval-output): Act slightly differently when the test suite is executed in batch mode (without terminal). * swank.lisp (handle-requests): Flush output. (interactive-eval, interactive-eval): Don't use fresh-line, as that makes it harder to test the REPL code. * test.sh (Usage): Add a -T switch to run slime in the current directory without copying (and compiling) everything to a temporary directory.
* slime.el (slime-show-last-output) (slime-show-last-output-function) (slime-show-last-output-region) (slime-maybe-display-output-buffer): Delete unused code.
* slime.el (slime-eval-with-transcript): Accept some more arguments so that we can also use it for compile-file. (slime-eval-with-transcript-cont): New. Insert prompt. (slime-compile-file): Use slime-eval-with-transcript. (slime-repl-show-maximum-output): Update window point. (slime-repl-insert-prompt): Don't use insert-before-markers. (slime-repl-emit): No longer use slime-with-output-end-mark.
* slime.el (slime-repl-popup-on-output): New variable. (slime-repl-emit): Honor slime-repl-popup-on-output. (slime-eval-with-transcript): Use slime-repl-popup-on-output. Also remove the function argument, as it was only used once and that was slime-message.
Fix parens.
(slime-repl-insert-prompt): Don't move the output end makers before prompt. Let output accumulate before the result. (slime-insert-transcript-delimiter): Insert the delimiter at the end of the buffer. Update markers accordingly.
* slime.el (slime-test-find-top-level-restart): New function. [def-slime-test] (interrupt-at-toplevel, interrupt-in-debugger): Use it.
* slime.el (slime-connection): Optionally select a new default connection. (slime-auto-select-connection): New variable. (slime-auto-select-connection): New function.
Adjust positions in files with CRLF-style end-on-line markers. * slime.el (slime-eol-conversion-fixup): New function. (slime-goto-location-position): Use it. Also add a new position type :offset, so that we don't adjust offsets in strings that were sent over the wire (which uses LF eol-convention). * swank-abcl.lisp * swank-allegro.lisp * swank-clisp.lisp * swank-cmucl.lisp * swank-corman.lisp * swank-ecl.lisp * swank-lispworks.lisp * swank-openmcl.lisp * swank-sbcl.lisp * swank-scl.lisp: Create :offset style positions where needed. * swank-lispworks.lisp (skip-comments): New function. (dspec-stream-position): Use it.
* slime.el (slime-end-of-list): `backward-down-list' was used there which is defined by paredit.el. Use `(down-list -1)' instead.
* swank.lisp (sldb-loop): Send a :sldb-return event to ourselfes to inform the debug session at the lower level. (wait-for-event): Drop the report-interrupt argument. No longer needed. (event-match-p): Add an OR pattern operator. Used to wait for different events simultaneously. (read-packet): Use peek-char to detect EOF. read-sequence wouldn't work. * slime.el (slime-test-interrupt-in-debugger): Call sldb-quit and sldb-continue in the right buffer. * swank-backend.lisp (wait-for-input): * swank-cmucl.lisp (wait-for-input): * swank-clisp.lisp (wait-for-input): Use the idiom "(when (check-slime-interrupts) (return :interrupt))".
Interrupt related hacking. * swank-backend.lisp (*pending-slime-interrupts*): Should be thread-local. Leave global value unbound. * swank.lisp (with-interrupts-enabled%): New helper macro. (with-slime-interrupts, without-slime-interrupts): Use it. (call-with-connection): Bind *pending-slime-interrupts* here. (wait-for-event): Add a report-interrupt argument. Currently used by the debugger to detect when a nested debugger session, which was triggered by an interrupt in wait-for-event, returns. Doesn't work well, though. * slime.el (slime-test-interrupt-in-debugger): New test.
Introduce a WAIT-FOR-INPUT backend function. CMUCL's blocking input functions READ-CHAR etc. are hard to use with interrupts. In the backend we have a more realistic chance to get interrupts working. * swank-backend.lisp (wait-for-input): New function. * swank-cmucl.lisp, swank-clisp.lisp (wait-for-input): Implement it. * swank.lisp (wait-for-event/event-loop): Use WAIT-FOR-INPUT and rescan the event-queue if WAIT-FOR-INPUT was interrupted. (reader-event): Deleted. Merged into wait-for-event/event-loop resp. dispatch-loop. (decode-message): Drop the timeout argument. (*events-enqueued*): A counter to quickly detect new events after a wait. (call-with-connection): If the argument is already the current connection, don't rebind anything. (without-slime-interrupts, with-slime-interrupts): Don't rebind *pending-slime-interrupts*. Just to be save. * slime.el (sldb-maybe-kill-buffer): New function, to handle the case when the debugger was interrupted in WAIT-FOR-INPUT and we want to return to the previous debug level.
In an SLDB buffer, `C-c C-c' will now recompile the source behind a frame. In particular, `C-u C-c C-c' will recompile the frame with high debug settings. * slime.el (sldb-recompile-frame-source): New function. (sldb-mode-map): Bind `C-c C-c' to it. * slime.el (sldb-overlays, sldb-delete-overlays, slime-xref-cleanup): Removed. Sldb-overlays weren't created anymore since 2008-08-17.
New faces: `sldb-restartable-frame-line-face', `sldb-non-restartable-frame-line-face'. The former is the face for frames that are surely restartable, the latter for frames that are surely not restartable. If restartability of a frame cannot be reliably determined, the face `sldb-frame-line-face' is used. At the moment, determination of frame restartability is supported by the SBCL backend only. * slime.el (sldb-frame.string): New. (sldb-frame.number): New. (sldb-frame.plist): New. (sldb-prune-initial-frames): Use them. (sldb-insert-frames): Ditto. (sldb-compute-frame-face): New. (sldb-insert-frame): Use `sldb-compute-frame-face' to insert frames with one of the faces described above. * swank.lisp (defslimefun backtrace): Changed return value; each frame is now accompanied with a PLIST which at the moment can contain :RESTARTABLE NIL/T/:UNKNOWN depending on whether the frame is restartable, or not. * swank-backend.lisp (defstruct swank-frame): New structure. (compute-backtrace): Is now supposed to return a list of SWANK-FRAMEs. (print-frame): Renamed to PRINT-SWANK-FRAME. * swank-sbcl.lisp, swank-cmucl.lisp, swank-lispworks.lisp, * swank-allegro.lisp, swank-scl.lisp, swank-openmcl.lisp, * swank-abcl.lisp, swank-clisp.lisp: Adapted to swank-backend changes.
* slime.el (slime-compilation-unit): Renamed to `slime-compilation-result'. (slime-last-compilation-unit): Renamed to `slime-last-compilation-result'. (slime-compiler-notes, slime-compiler-results): Adapted accordingly. (slime-compilation-finished): Ditto.
* slime.el (slime-popup-buffer-restore-snapshot): Make sure that the buffer-local variable containing the popup buffer's snapshot is set to nil in the right buffer.
Reimplement recompilation support. The previous implementation involving specials was subtly broken with the :fd-handler communcation-style, because of serve-event's polite interplay with specials. (Cf. my slime-devel post "Per event bindings" on 2008-08-17.) * swank.lisp (with-swank-compilation-unit): Removed. (record-note-for-condition): Removed. (defstruct swank-compilation-unit): Renamed to `swank-compilation-result'. (swank-compilation-unit-for-emacs): Renamed to `swank-compilation-result-for-emacs'. (swank-compiler): Takes additional argument, the swank-compilation-result where caught notes should be accumulated into. (defslimefun compile-file-for-emacs): Adapted accordingly. (defslimefun compile-string-for-emacs): Ditto. (defslimefun compile-multiple-strings-for-emacs): New RPC call. * slime.el (slime-make-compile-expression-for-swank): Removed. (slime-compile-string): Don't use above function anymore. Adapted. (slime-recompile-locations): Rewritten to use new RPC call above.
* slime.el [test](inspector): New test.
* slime.el (slime-pop-to-buffer): Drop the norecord argument, since we can't support it easily in Emacs 21. Reported by Christophe Rhodes.
* slime.el (sldb-setup): Insert "No backtrace" if the backtrace is empty.
* slime.el (slime-compute-modeline-package): Used `when-let' before its definition. (slime-compute-modeline-string): Display "PKG:" before "CON:".
Some focus handling in multiframe setups. * slime.el (slime-pop-to-buffer): New function. (slime-switch-to-output-buffer): Use it.
(slime-popup-buffer-quit): Must call bury-buffer without argument.
* slime.el (slime-inspector-show-source): New command. (slime-inspector-mode-map): Bind it to ".". (sldb-highlight-sexp): Use slime-flash-region rather than a permanent overlay.
(slime-switch-to-output-buffer-search-all-frames): Deleted. Use display-buffer-reuse-frames instead. (slime-switch-to-output-buffer): Use pop-to-buffer to select the window and frame. Have to set the input-focus manually, though. Might be some window manager issue.
* slime.el (slime-add-local-hook): Renamed from add-local-hook. (slime-switch-to-output-buffer): Drop the connection argument. It was never used.
* slime.el (slime-switch-to-output-buffer): Fix regression discovered by Ariel Badichi. Programmatic invocation of this function expect this function to also set-buffer to the REPL buffer. Even though that's ugly, we do it for now, and declare it to be a FIXME. (slime-dispatch-event): Don't use `message' for the pipelined request message, but `slime-display-oneliner' which will truncate the form to be displayed.
* slime.el (slime-popup-buffer-quit): Fix regression; we have to invoke `bury-buffer' without an argument to make it switch buffers for us (for the case when the snapshot wasn't restored.)
* slime.el (slime-list-compiler-notes): Only shrink if notes tree isn't displayed as being collapsed.
* slime.el (slime-popup-buffer-quit): If not kill, then at least bury the buffer. (slime-list-compiler-notes): Shrink the compiler-notes window.
`C-c C-z' now selects an REPL displayed in another frame instead of splitting the current frame, and displaying the REPL in the newly created window. * slime.el (slime-switch-to-output-buffer-search-all-frames): New variable to customize this behaviour, as it may not be optimal for people using multiple screens at once. (slime-switch-to-output-buffer): Adapted.
Xref buffers: `M-,' in an Xref buffer will now revert to an Emacs state as of before the Xref command. * slime.el (slime-xref-mode-map): Add `slime-xref-retract' as `M-,' (slime-xref-retract): New. Restores the emacs snapshot unconditionally. (slime-xref-quit): Use it.
Xref buffers: `q', and `SPC' will push onto the find-definition stack such that M-, will work afterwards. * slime.el (defstruct slime-emacs-snapshot): Also save the point explicitly. It is implicitly stored already in the window-configuration, but inaccessible therein. (slime-current-emacs-snapshot, slime-set-emacs-snapshot): Adapted. (slime-push-definition-stack-from-snapshot): New. Reason for above changes. (slime-with-popup-buffer): Make sure that the current emacs-snapshot is taken, not only when the :emacs-snapshot argument is NIL at expansion time, but also on runtime. (slime-with-xref-buffer): The name of the Xref buffer was created at expansion time, but must be computed at runtime. Fix that. (slime-xref-quit): Use `slime-push-definition-stack-from-snapshot' (sime-xref-goto): Adapted to also push onto the stack. * slime.el (slime-compute-modeline-package): Cleaned up. (slime-update-modeline-string): Ditto.
(slime-check-version): Use y-or-n-p.
* slime.el (slime-repl-send-input): Disable modification hooks when marking old input.
Finally handle reader-errors without disconnecting. * swank.lisp (decode-message): Convert reader-error conditions into :reader-error events. (dispatch-event): Send :reader-error events to Emacs. * slime.el (slime-dispatch-event): Display reader-errors.
Let SIGINT create a synthetic event. * swank.lisp (install-fd-handler,simple-serve-requests): Dispatch a :emacs-interrupt event in the SIGINT handler. * slime.el (slime-interrupt): Send nothing over the wire when SIGINT is used.
Improve interrupt safety for single-threaded lisps. * slime.el (slime-interrupt): Send a :emacs-interrupt message together with SIGINT. SIGINT now means "check for new events" instead of "invoke the debugger". * swank-backend.lisp (install-sigint-handler) (call-with-user-break-handler): New functions. * swank.lisp (simple-serve-requests,install-fd-handler): Use it. (read-packet, read-char): New function. Check for interrupts. (wait-for-event/event-loop): Check for interrupts.
(slime-batch-test): Exit, if the Lisp isn't up and running after 30 secs.
(slime-quit-lisp-internal): New function. (slime-quit-lisp, slime-restart-inferior-lisp): Use it
Save repl-history in /tmp, during testing. (slime-temp-directory): New function. (slime-run-tests): Save repl-history in /tmp. (slime-repl-mode): Ignore persistent history if slime-repl-history-file is nil.
* slime.el (slime-execute-tests): Call slime-test-should-fail-p before executing the test (which may close the connection). (def-slime-test): Use slime-sync-to-top-level with a timeout.
* slime.el (slime-execute-tests): Call slime-test-should-fail-p before executing the test (which may close the connection).
*** empty log message ***
* slime.el (slime-quit-lisp): Optionally send kill signal. (slime-quit-connection-at-point): Disconnect after some timeout.
* slime.el (slime-simple-completions): Bind slime-current-thread to t so that completion is peformed in a fresh thread.
Display the "Use default debugger" restart more prominently. * swank.lisp (swank-debugger-hook): Bind a user visible restart to invoke the native debugger. (*global-debugger*): Make this nil by default. (sldb-loop): Minor cleanups. (sldb-break-with-default-debugger): Invoke the native debugger on top of the slime debugger. * slime.el (sldb-setup): Always pop to the debugger buffer. (sldb-activate): Optionally select the window. * swank-sbcl.lisp (sb-thread::get-foreground): Override this as the default implementation is unusable for Slime. * swank-lispworks.lisp (environment-display-notifier): Just return t.
M-x slime doesn't destroy the window layout anymore when you switch windows/frames while the connection is being set up. * slime.el (slime-hide-inferior-lisp-buffer): Search for the inferior-lisp buffer's window in all frames. (slime-repl-update-banner): Do not pop to the REPL buffer.
* slime.el: Fixing `q' in Xref buffers. (slime-popup-buffer-snapshot-unchanged-p): New. (slime-popup-buffer-restore-snapshot): New. (slime-xref-quit): Can't use slime-popup-buffer directly. Instead implement its own quit behaviour using the above functions.
Fix indentation error.
fix parenthesis error in slime.el
* slime.el: Make xref buffers use `slime-with-popup-buffer', nee `slime-with-temp-buffer'. (slime-with-xref-buffer): Rewritten using a popup buffer. (slime-init-xref-buffer): Removed. (slime-display-xref-buffer): Removed.
* slime.el: Rename slime's temp-buffer to popup-buffer. (defun slime-update-modeline ()
* slime.el (slime-compiler-notes-mode, slime-connection-ist-mode): Add slime-temp-buffer-mode-map to docstring.
* slime.el (slime-connections-buffer-name): New variable. (slime-list-connections): Use it. (def-slime-selector ?c): Ditto
* slime.el: Make the threads browser use `slime-with-temp-buffer'. (slime-temp-buffer-quit-function): New buffer-local variable. Defaults to `slime-temp-buffer-quit'. (slime-temp-buffer-mode): `q' invokes above variable now. (slime-threads-buffer-name): New variable. (slime-list-threads): Use slime-with-temp-buffer. (slime-update-threads-buffer): New. Lifted from slime-list-threads. (slime-thread-quit): Renamed to slime-quit-threads-buffer.
* slime.el (test disconnect): Call slime-inferior-process with explicit connection argument to avoid clashes with buffer-local connections.
* slime.el (slime-create-macroexpansion-buffer): Make fontifying case insensitive as the result from macroexpansion is most likely printed all upper-case.
* slime.el (slime-with-temp-buffer): By default, no longer inherit the current connection.
Previously, M-p at the REPL deleted the input if no match could be found in the history. Now the input is untouched. * slime.el (slime-repl-history-replace): Ditch delete-at-end-p argument. (slime-repl-next-input, slime-repl-previous-input): Adapted. (slime-repl-forward-input, slime-repl-backward-input): Ditto.
* slime.el (slime-with-temp-buffer): Renamed from slime-with-output-to-temp-buffer. Initialize the buffer local buffer variables before and after running BODY, so that we don't need the mode argument.
* slime.el (def-slime-test narrowing): Adapted to recent changes of `slime-with-output-to-temp-buffer'.
Mode-Line will now display a buffer's connection, and a buffer's package. Furthermore, stale connections will also be indicated. * slime.el: (slime-update-modeline-package): Renamed to `slime-extended-modeline'. (slime-modeline-string), (slime-modeline-connection-name), (slime-modeline-connection-state): New variables. (slime-update-modeline-package): Renamed to `slime-compute-modeline-package'. (slime-compute-modeline-connection): New. (sime-compute-modeline-connection-state): New. (slime-compute-modeline-string): New. (slime-update-modeline-string): New. (slime-shall-we-update-modeline-p): New. (slime-update-modeline): New. Run periodically by idle timer. (slime-mode, slime-temp-buffer-mode): Install extended mode-line. (slime-stale-connection-p, slime-debugged-connection-p): New. (slime-compute-connection-state): New. (slime-connection-state-as-string): New. (slime-state-name): Removed. (slime-set-state): Removed. (slime-length>): Fix typecase.
* swank-allegro.lisp:(receive-if): Periodically check for interrupts. * swank-cmucl.lisp, swank-scl.lisp: ditto.
* slime.el (slime-show-apropos): Use lisp-syntax-table to make M-. more useful.
Prevent typeout messages to be scribbled into random buffers. Patch from Michael Weber. * slime-typeout-frame.el (slime-typeout-message-aux): prevent typeout messages from scribbling into any buffer which happens to be in the typeout window (slime-typeout-buffer): new function; changed buffer name to "*SLIME Typeout*" (slime-make-typeout-frame): use it (slime-ensure-typeout-frame): ensure typeout buffer is visible
(slime-repl-clear-buffer): Recenter at the end.
(slime-io-speed-test): Minor changes.
(slime-with-output-to-temp-buffer): Add read-only argument. (slime-temp-buffer): Renamed from slime-get-temp-buffer-create. Drop noselect argument.
*** empty log message ***
Add some flow-control. * swank.lisp (make-output-function): Synchronize with Emacs on every 100th chunk of output. (wait-for-event,wait-for-event/event-loop,event-match-p): New functions. Used to selectively wait for some events and to queue the other events. (dispatch-event, read-from-socket-io): Tag non-queueable events with :call. (read-from-control-thread, read-from-emacs): Process :call events only; enqueue the others. (*log-output*): Don't use synonym-streams here. Dereference the symbol until we get at the real stream. (log-event): Escape non-ascii characters more carefully. * swank-backend.lisp (receive-if): New function. Update backends accordingly. (not yet for ABCL and SCL) * slime.el (slime-dispatch-event): Handle ping event.
* slime.el: Make code related to temp buffers more consistent. (slime-with-output-to-temp-buffer): Docstring update. New keyarg :connection to specify whether the current connection should be stored buffer-locally. New key arg :emacs-snapshot to explicitly pass the snapshot to be stored. The created buffer is not automatically set to slime-mode anymore. (slime-temp-buffer-mode): Add `C-c C-z', and `M-.' bindings to all temp buffers. (slime-list-compiler-notes): Use `slime-with-output-to-...', rename the buffer from "*compiler notes*" to "*SLIME Compiler-Notes*". (slime-compiler-notes-mode-map): Remove explicit binding of "q", as it's inherited from the temp buffer. (slime-edit-value-callback): Use `slime-with-output-to-...'. (slime-show-apropos): Adapted to above changes. (slime-macroexpansion-minor-mode): Removed "q" binding, as it's inherited. (slime-eval-macroexpand): Adapted. Rename buffer from "*SLIME macroexpansion*" to "*SLIME Macroexpansion*". (slime-list-connections): Use `slime-with-output-to-...', rename buffer from "*SLIME connections*" to "*SLIME Connections*".
* slime.el (make-slime-buffer-location): New. (make-slime-file-location): New.
Environment variables for Lisp process. Patch by Richard M Kreuter. * slime.el (slime-start, slime-maybe-start-lisp) (slime-reinitialize-inferior-lisp-p, slime-start-lisp) (slime-restart-sentinel): Pass new parameter "env" through.
Fix slime-quit-lisp in non-default REPL buffer. Patch from Richard M Kreuter. * slime.el (slime-quit-lisp): Killing the REPL buffer also removes the buffer local binding of slime-buffer-connection. Remember the connection before killing the buffer.
* slime.el (slime-at-list-p): New. Returns t if point is at a list. (slime-at-expression-p): New. Similiar to `slime-in-expression-p'. (slime-end-of-list): New. Pendant to `slime-beginning-of-list'.
REPL shortcuts now leave an appropriate Common Lisp form in the REPL history. * slime.el (slime-within-repl-shortcut-handler-p): New global. T if truly inside a repl shortcut handler invoked by ,foo on the REPL. (slime-handle-repl-shortcut): Bind above global appropriatly. (slime-repl-shortcut-eval): New; should be used in repl shortcut handlers instead of `slime-eval'. (slime-repl-shortcut-eval-async): New; should be used in repl shortcut handlers instead of `slime-eval-async'. (defslime-repl-shortcut): Update docstring. (slime-repl-set-package): Use slime-repl-shortcut-eval. (slime-set-default-directory): Ditto. (slime-sync-package-and-default-directory): Ditto.
* slime.el (slime-recompile-locations): Locations were potentially recompiled within a wrong package. Fix that.
An explicit numeric value as prefix-arg given to `C-c C-c' will now represent the debug level the defun is compiled with; `C-u C-c C-c' defaults to maximum debug like before. (Now also works for recompilation commands in xref buffers.) * slime.el (slime-compilation-debug-level): Renamed from `slime-compile-with-maximum-debug'. (slime-normalize-optimization-level): New. (slime-compile-defun): Adapted accordingly. (slime-compile-region): Ditto. (slime-recompile-location): Added setting of debug-level. (slime-recompile-locations): Ditto. (slime-recompile-xref): Now takes debug-level prefix-arg. (slime-recompile-all-xrefs): Ditto. * swank-sbcl.lisp (defimplementation swank-compile-string): Adapted accordingly.
* slime.el (slime-xref-dspec-at-point): Make more robust. (slime-xref-insert-recompilation-flags): Ditto. (slime-column-max): New.
Recompilation support added to xref buffers. You can now use `C-c C-c' in an xref buffer to recompile the defun represented by the xref at point. Similiarly, you can use `C-c C-k' to recompile all xrefs displayed. For example, if you've changed a macro, and want to recompile all the functions in the image which use that macro, you first call `slime-who-macroexpands' (C-c C-w RET), and then issues `C-c C-k' in the xref buffer that just popped up. [There's no guarantee that this will actually recompile all functions that depend on the changed macro, as this obviously depends on the quality of the backend's WHO-MACROEXPANDS implementation.] * swank.lisp: Introduced the notion of a SWANK-COMPILATION-UNIT, so we're able to compile different stuff comming from Slime one after the other, and have compiler notes &c. collected in a contiguous manner. (defstruct :swank-compilation-unit): New. Contains compilation notes, compilation results, etc. (*swank-compilation-unit*): New. Current Swank Compilation Unit. (with-swank-compilation-unit): New. Like WITH-COMPILATION-UNIT. (swank-compilation-unit-for-emacs): New. (swank-compiler): Adapted; collect compilation stuff into the current swank-compilation-unit. (compile-string-for-emacs): Use WITH-SWANK-COMPILATION-UNIT. (compile-file-for-emacs): Ditto. (*compiler-notes*, clear-compiler-notes): Removed. (compiler-notes-for-emacs): Removed. * slime.el (slime-compilation-unit, slime-last-compilation-unit), (slime-compiler-notes, slime-compiler-results): New/Adapted. (slime-make-compile-expression-for-swank): Factored out from `slime-compile-string'. (slime-recompile-location): New. (slime-recompile-locations): New. (slime-pop-to-location): &optional `where' arg can now also be 'excursion to only reset the current-buffer, but not switch. (slime-xref-mode-map): Add `C-c C-c' and `C-c C-k'. (slime-xref-dspec-at-point): New. (slime-all-xrefs): New. (slime-recompile-xref): New. (slime-recompile-all-xrefs): New. (slime-make-xref-recompilation-cont): New. (slime-xref-inert-recompilation-flags): New. (slime-trim-whitespace): New utility.
`M-x slime-lisp-threads' will now contain a summary of what's currently executed in a thread that was created by Swank. * swank-backend.lisp (thread-description, set-thread-description): New interface functions to associate strings with threads. * swank-sbcl.lisp (thread-description, set-thread-description): Implemented. * swank.lisp (call-with-thread-description), (with-thread-description): New. (read-from-emacs): Now temporarily sets the thread-description of the current thread to a summary of what's going to be executed by the current request. (defslimefun list-threads): Changed return value to also contain a thread's description. * slime.el (slime-list-threads, slime-thread-insert): Adapted to new return value of LIST-THREADS.
* slime.el (slime-call-defun): Properly signal error message when used in a context that is not a function definition.
* slime.el (slime-call-defun): Broken on DEFMETHOD forms. Fix that. Also, don't insert package qualifier anymore if the inserted qualifier is the same as the current REPL package.
* slime.el (def-slime-test find-definition.2, arglist): SWANK:COMPILE-STRING-FOR-EMACS since recently takes 5 instead of 4 parameters. Fix that.
* slime.el (slime-extract-context, slime-parse-context): Recognize more toplevel forms, e.g. DEFINE-COMPILER-MACRO &c. Such that `slime-parse-toplevel-form' will also recognize these. (slime-trace-query): Adapted to above changes. Errors if spec is untraceable. (slime-call-defun): Adapted to also support the new toplevel forms. (slime-cl-symbol-name), (slime-cl-symbol-package), (slime-qualify-cl-symbol-name): Resurrected from the `slime-parse' contrib, as they've been used by `slime-call-defun'.
* slime.el (slime-prin1-to-string): Bind print-length and print-level. * slime.el (slime-inspector-limit): New variable. (slime-inspector-insert-content): Use it. (slime-inspector-fetch-chunk, slime-inspector-fetch) (slime-inspector-next-range, slime-inspector-join-chunks): New.
C-c C-c with prefix args now uses the maximal debug level. (By Zach Beane.) Only implemented for SBCL. * slime.el (slime-compile-with-maximum-debug): New variable. (slime-compile-defun, slime-compile-region): Use it. * swank.lisp (compile-string-for-emacs): Accept new debug argument. Update backend accordingly.
* slime.el (slime-set-default-directory): Send absolute filenames.
* slime.el (slime-edit-definition): The `slime-edit-definition-hooks' are now invoked with the same args as `slime-edit-definition'.
By default, don't ask if SLIME should be started. * slime.el (slime-auto-connect): New variable. (slime-auto-connect): New function. (slime-connection): Use it.
* slime.el (slime-check-version): New function. Make the prompt fit in a single line.
On SBCL, (block outta (let ((*debugger-hook* #'(lambda (c hook) (declare (ignore hook)) (return-from outta 42)))) (error "FOO"))) would kist silently skip over the *DEBUGGER-HOOK*, and pop right into SLDB to handle the error. Fix that. * swank-sbcl (make-invoke-debugger-hook): New function; returns a hook for SB-EXT:*INVOKE-DEBUGGER-HOOK* that checks for the presence of *DEBUGGER-HOOK*, and calls that if available. (install-debugger-globally): Use it. (call-with-debugger-hook): Ditto. (getpid): Declaim return type explicitly, to make SBCL shut up about being unable to optimize %SAP-ALIEN in ENABLE-SIGIO-ON-FD. * slime.el (def-slime-test break): Test additionally that BREAK turns into SLDB even when *DEBUGGER-HOOK* is locally bound. (def-slime-test locally-bound-debugger-hook): New test case; tests that a locally-bound *DEBUGGER-HOOK* is adhered, and not skipped.
* slime.el (slime-set-connection-info): Display SLIME and SWANK versions explicitly in Protocol Mismatch message. Adapted from idea and patch by Jeronimo Pellegrini.
* swank-source-path-parser.lisp The source parser READs in files, and if such a file contains some nasty #. hackery that results in an error being signalled, M-. would fail on anything that's defined in those files. Fix that by using a special #. reader function that invokes the original #. reader with an IGNORE-ERRORS wrapped around. (make-sharpdot-reader): New function. (make-source-recording-readtable): Use it and install it on #. * slime.el (find-definition.2): New test case to guard against it.
* slime.el (slime-xref-group): Hanlde :zip files.
Delete the code which warned about removed key bindings. * slime.el (slime-obsolete-commands, slime-bind-obsolete-commands) (slime-bind-obsolete-command, slime-upgrade-notice) (slime-timebomb, slime-timebomb-progress, slime-timebomb-message): Remove.
Remove some rarely used code. * slime.el(slime-make-default-connection, slime-choose-connection) (slime-find-connection-by-name, slime-symbol-at-point): Remove. Unused code.
* slime.el (with-lexical-bindings): Removed. Update callers accordingly.
Move filename translation code to contrib. * slime.el (slime-find-filename-translators) (slime-filename-translations): Move to contrib/slime-tramp.el. (slime-to-lisp-filename-function) (slime-from-lisp-filename-function): New variables. * slime-tramp.el (slime-find-filename-translators) (slime-filename-translations): Move from slime.el. (slime-tramp-from-lisp-filename, slime-tramp-to-lisp-filename): New functions.
* slime.el (slime-repl-return-behaviour): Deleted. Rebind the key if you don't like what the command does.
* swank.lisp (load-file-set-package): Removed; the function was only used in `slime-load-file-set-package' which invokes `slime-repl-set-package' which set the package for a second time. * slime.lisp (slime-load-file-set-package): Don't call SWANK:LOAD-FILE-SET-PACKAGE, but merely call SWANK:LOAD-FILE, then invoke `slime-repl-set-package' which will set the package. (slime-pretty-find-buffer-package): Removed. (Nowhere used.) (slime-set-package): Ditto.
* slime.el (slime-eval-macroexpand): Indent expansion.
* slime.el (slime-edit-definition-cont): If no definition could be found, print also the package name in the error message where the definition was tried to be found in.
* slime.el (slime-region-for-defun-function): Deleted. (slime-region-for-defun-at-point): Use beginning-of-defun and not beginning-of-sexp. (slime-flash-region): New function. (slime-compile-region): Use it.
* slime.el (slime-xref-group): Renamed from slime-location-to-string. Handle source-form locations.
* slime.el (slime-find-definitions-function): Renamed from slime-edit-definition-fallback-function. (slime-find-definitions): Use it. (slime-find-tag-if-tags-table-visited): Deleted.
* slime.el (slime-inspector-operate-on-point): Signal an error if there is no object to operate on.
* slime.el (sldb-toggle-details): Inhibit point-motion-hooks. This is a workaround for problems with the --more-- field.
Be GC friendlier when parsing net packets. * slime.el (slime-net-read): Instead of consing a fresh string, use narrow-to-region and read the packet out of the buffer.
* slime.el (slime-edit-definition-hooks): This variable can be used to hook into the M-. machinery. (slime-edit-definition): Run above hooks until one succeeds. By default, try to find a definition for the symbol at point.
* swank.lisp (find-definition-for-thing): New DEFSLIMEFUN. * swank-backend (find-source-location): New DEFINTERFACE. * swank-sbcl (find-source-location): Implement it. * slime.el (slime-edit-definition-cont): Use `slime-length='.
Work harder to avoid wrong guesses for slime-repl-set-package. * slime.el (slime-repl-set-package): Use slime-pretty-package-name to strip double quotes from slime-current-package before comparing it with slime-lisp-package. Still doesn't deal with nicknames and other reader tricks.
If there is no connection, offer the option to start SLIME. * slime.el (slime-connection): Ask and maybe start SLIME. (slime-selector-method: ?r): No need to ask here any more.
Add customization variable for the `slime-connect' port. * slime.el (slime-port): New variable.
Fix typos: "contribs" -> "contrib". * slime-autoloads.el (slime-setup-contribs): * slime.el (slime-setup):
* slime.el (slime-pop-to-location): Slight cleanups. (slime-goto-xref, slime-goto-next-xref): Use it.
Remove save-restriction-if-possible. * slime.el (save-restriction-if-possible): Deleted. It was only used in one place. (slime-goto-source-location): Obey widen-automatically. (slime-location-offset): New function.
Fix regressions in the `find-definition' test case on SBCL: M-. on e.g. SWANK::READ-FROM-EMACS would bring the user to (|defun read-from-emacs ...) and not |(defun read-from-emacs ...) * swank-sbcl.lisp (source-file-position): Don't 1+ the returned position; i.e. return a position usable as a CL /file position/ which start from 0, and not a position usable in Emacs where buffer points start from 1. This is important because the return value is passed to SWANK-BACKEND::READ-SNIPPET which invokes CL:FILE-POSITION on it. (make-definition-source-location): Adapted to 1+ the position passed to Emacs, to reflect above change.
Better factorization for M-. and xref commands. * slime.el (slime-xref): Renamed from slime-definition. (slime-location, slime-location-p): New ADT def. (slime-xref-has-location-p, slime-analyze-xrefs): New functions. This work used to be done on the Lisp side. (slime-pop-to-location): New function. (slime-edit-definition, slime-edit-definition-cont): Simplified. (slime-find-definitions): New function. (slime-goto-definition, slime-goto-definition-other-window) (slime-pop-to-other-window, slime-show-definitions): Deleted. (slime-insert-xrefs): Simplified. (slime-insert-xref-location): Deleted. No need to show the filename twice. * swank.lisp (find-definitions-for-emacs, xref): Use common representation for "definitions" and "xrefs". (xref>elisp): New helper. (group-xrefs, alistify, parition, location-position<, xref-position) (xref-buffer, location-valid-p): Deleted. This work is now done on the Emacs side.
Split loading and initialization (again). * swank-loader.lisp (init): New. Delete old packages only if explicitly requested. Also, if the swank package already exists don't load swank again. (setup): New function. * swank.lisp (setup): New function. Moved over here from swank-loader.lisp. * slime.el (slime-init-command): Call swank-loader:init. In the REPL, mark the trailing newline also as input. * slime.el (slime-repl-send-input): Mark the newline with the 'slime-repl-old-input property. (slime-repl-grab-old-input): Strip the newline.
Limit the length of the inspector content. That's similar to the limitation of the length of backtraces in the debugger. * swank.lisp (*inspectee-content*): New variable. (content-range): New function. (inspect-object): Use it with a length of 1000. (inspector-range): New function. Called from Emacs. * slime.el (slime-inspector-insert-content) (slime-inspector-insert-range, slime-inspector-insert-range-button) (slime-inspector-fetch-range): New functions. (slime-inspector-operate-on-point): Handle range-buttons.
Make slime-property-bounds more useful. * slime.el (slime-property-bounds): Remove special casing for whitespace at the end. (slime-repl-send-input): Don't mark the newline with the slime-repl-old-input property. (sldb-frame-region): Use slime-property-bounds.
Cleanup slime-repl-set-package. * slime.el (slime-repl-set-package): Make it fit within 80 columns.
Fix previous patch, don't call slime-eval since it seems to break
*** empty log message ***
*** empty log message ***
Simpler code to bind 0-9 in the debugger. * slime.el (sldb-mode-map): When binding the keys 0-9, use eval instead of two macros.
(sldb-invoke-restart-by-name): New function. Invokes a restart by name, uses completion to read restart's name. (slime-define-keys sldb-mode-map): Bind sldb-invoke-restart-by-name to I in sldb buffers.
Make it easier to start a non-default Lisp from ELisp code. * slime.el (slime): If the argument is a symbol start the corresponding entry in slime-lisp-implementations. Typical use is something like: (defun cmucl () (interactive) (slime 'cmucl))
Fix source-path mapping for #+#.'(:and). Patch by Luis Oliveira. * swank-source-path-parser.lisp (make-source-recording-readtable): don't suppress the #. reader macro. (read-and-record-source-map): don't bind *read-eval* to nil. (suppress-sharp-dot): unused, delete it. * slime.el (test compile-defun): test with #+#.'(:and).
Fix debugger bug. * slime.el (sldb-mode): Don't throw to toplevel in the kill-buffer-hook, since the buffer can be killed for other reasons too. (test break): Test BREAK and CONTINUE in a loop. (slime-wait-condition): Display the current time.
(sldb-insert-frame-variable-value-function): New variable. (sldb-insert-frame-variable-value): New function, default value for sldb-insert-frame-variable-value-function. (sldb-insert-locals): Use it here. (slime-inspector-insert-ispec-function): New variable. (slime-open-inspector): Use it here.
* slime.el (sldb-mode): Add `sldb-quit' to `kill-buffer-hook' to close the debugging machinery on swank side when the SLDB buffer is killed. (Notice that killing the SLDB buffer manually will not restore window configuration in contrast to typing `q'.)
* slime.el (slime-delete-and-extract-region): New function. Portable version of `delete-and-extract-region' which returned NIL instead of "", as experienced by Matthias Koeppe.
(slime-repl-mode-map): Bind C-c C-t to slime-toggle-trace-fdefinition (as in Lisp buffers) instead of slime-repl-clear-buffer. This binding is useful for untracing functions directly from the trace output. Move slime-repl-clear-buffer to the keybinding C-c M-o.
Use sane default values for slime-repl-set-package. Previously, when typing `,!p' at the REPL, the current package would have been inserted as a default (although the whole intent was to /change/ the current package in the first place), now nothing is inserted anymore. * slime.el (slime-pretty-current-package): rename it to slime-pretty-find-buffer-package and make it use slime-find-buffer-package instead of slime-current-package. (slime-repl-set-package, slime-set-package): use new function.
* slime.el (slime-print-apropos): Simplified: Don't insert action properties anymore for the symbol; they were ignored anyway, because `apropos-follow' (bound to RET in the resulting *SLIME Apropos* buffer) looks for buttons only.
* slime.el (slime-apropos): Update docstring: Apropos doesn't match on regular expressions anymore since 2007-11-24.
* slime.el (slime-insert-xref-location): New function. Tries to either insert the file name a function is defined in, or inserts information about the buffer a function was interactively `C-c C-c'd from. Idea from Knut Olav Bøhmer. (slime-insert-xrefs): Use it.
Simplify the inspector. * swank.lisp (inspect-object): Ignore the title value returned from backends. * slime.el (slime-open-inspector): Updated accordingly.
Fix slime-list-thread selector. * slime.el (slime-list-threads): Wait for the result before continuing.
Fix markers if the listener uses :values. * slime.el (slime-repl-insert-result): Use slime-repl-emit-result since handling of markers has changed. (slime-repl-emit-result): New argument: bol.
Add hook to customize the region used by C-c C-c. Useful to recognize block declarations in CMUCL sources. * slime.el (slime-region-for-defun-function): New variable. (slime-region-for-defun-at-point): Use it.
Prettify package names for slime-repl-set-package. * slime.el (slime-repl-set-package): slime-current-package may have leading colons. Use slime-pretty-package-name to remove them. Reported by Constantine Vetoshev. (slime-pretty-current-package): New function. (slime-set-package): Use it.
Mirror *modules* in Emacs. * slime.el (slime-lisp-modules): New connction variable. (slime-set-connection-info): Load requested modules. (slime-required-modules): New variable. (slime-require, slime-load-contribs): New functions. * swank.lisp (connection-info): Include *modules*. (swank-require): Accept a list of modules as argument.
* swank.lisp (parse-package): The old version didn't pass the test-suite. Now use the reader directly instead of emulating it half-heartedly. * slime.el (slime-search-buffer-package): Don't remove double quotes or "#:", swank:parse-package takes care of that.
* slime.el (slime-repl-mode-map, slime-repl-read-mode), (slime-compiler-notes-mode-map, slime-xref-mode-map), (sldb-mode-map, slime-connection-list-mode-map), (slime-inspector-mode-map): Added bindings for [return] in addition to (kbd "RET"). The reason is that pressing enter in X is translated to (kbd "RET") only if no binding for [return] is active; if [return] is bound to something, pressing enter is translated to this key binding henceforth, as was explained to me by Pierre Gaston, thanks! This can cause quite confusing behaviour as Andreas Davour faced in his post <firstname.lastname@example.com> to comp.lang.lisp.
* slime.el (slime-events-buffer, slime-inspector-buffer): Disable undo.
The inspector page layout has changed slightly. Before the header looked like A proper list. [type: CONS] ------------------- It now looks like #<CONS {B3DBD39}>: A proper list. -------------------- Rationale is to have a "presentation link" to the currently inspected object itself, to copy it down to the REPL via `M-RET'. This is mostly useful when trying to get a value from the Slime Debugger to the REPL, which you can do by inspecting the value first by `i', and then using `M-RET' on the object representation in the new header layout. Such a "presentation link" existed already but was removed in 2007-08-23. The old behaviour was to have the title ("A proper list" in the above example) to contain the link. I decided to make the link more explicit. * swank.lisp (inspect-object): Now additionally returns a string-representation of the object itself, and an inspector id for it. Removed returning its type as this is implicit in the new string representation. * slime.el (slime-open-inspector): Adapted for new header layout.
* slime.el (slime-filesystem-toplevel-directory): New function. Windows doesn't have a filesystem that is as hierarchical as the Unix' one. Reported by Carsten Blaauw and Stefan Kluehspies. (slime-file-name-merge-source-root): Use it. (slime-highlight-differences-in-dirname): Use it.
* slime.el (slime-length=, slime-length>): Restore support for vectors, as `slime-length=' was already used with strings in `slime-parse.el'. This broke extended arglist display.
* slime.el (slime-setup): Call the respective init functions of contribs. * slime-autoloads.el (slime-setup-contribs): Ditto.
Simplify slime-compile-file. * slime.el (slime-compile-file): Don't save window config. (slime-curry, slime-rcurry): New functions.
* slime-c-p-c.el (slime-complete-symbol*-fancy): Move defcustom from slime.el to contrib/slime-c-p-c.el.
Reorder some devfars and menus code so that the compiler doesn't complain about free variables.
Fix apropos in Emacs 22. * slime.el (slime-print-apropos): Add button props for Emacs 22. (slime-call-describer): ARG is a marker in Emacs 22. (def-slime-selector-method ?c): Wait until slime-list-threads returns.
Remove define-slime-dialect. * slime.el (define-slime-dialect): Deleted. Use slime-lisp-implementations instead.
Introduce a slime-start-and-init function. * slime.el (slime-start-and-load, slime-lisp-options): New functions. (slime-start-and-load): Use it.
Simplify slime-length=. * slime.el (slime-length=, slime-length>): No need for vectors.
Remove explicit support for Scheme mode. * slime.el (slime-scheme-mode-hook, slime-shared-lisp-mode-hook) Deleted. (slime-indentation-update-hooks): New hook. (slime-handle-indentation-update): Use it.
Let slime-setup load contribs. * slime.el (slime-setup): Take a list of contribs to load as argument. * slime-autoloads.el (slime-setup): Ditto, but delay the actual loading until slime is loaded. (slime-setup-contribs): New function. Add the necessary hooks when loading some contribs, so that those contribs can be easily loaded with slime-setup. * slime-highlight-edits.el (slime-highlight-edits-mode-on): New function. Add this to slime-mode-hook by default. * slime-autodoc.el (slime-use-autodoc-mode): Change default to t.
* slime.el (slime-maybe-warn-for-different-source-root): Catch returned NIL from `slime-file-name-merge-source-root' if the two filenames don't share a common source root. Reported by Frank Goenninger.
* slime.el (slime-maybe-warn-for-different-source-root): Catch returned NIL from `slime-file-name-merge-source-root' if the two filenames don't share a common source root. Reported by Frank Goenninger.
* slime.el (slime-split-string): New semi-portability function. The behaviour of `split-string' changed between Emacs21 and Emacs22. Thanks to Christophe Rhodes for reporting this. (slime-file-name-merge-source-root): Use `slime-split-string'. (slime-highlight-differences-in-dirname): Likewise.
Some cleanups for the REPL. * slime.el (slime-repl-write-string): Split it up into smaller functions. (slime-repl-emit, slime-repl-emit-result) (slime-emit-string): New functions. (slime-repl-save-history): Use prin1 instead of pp. (repl-type-ahead): New test case.
* slime.el (slime-cl-symbol-name, slime-cl-symbol-package): Move to contrib/slime-parse.el.
Minor beautifications. * slime.el (slime-sbcl-manual-root): Move definition to contrib/slime-references.el. * contrib/slime-references.el (sldb-maybe-insert-references): Insert newlines differently.
Fix some of the bugs introduced when moving doc refs to contrib. * slime.el (sldb-dispatch-extras): Add missing quote. * slime-references.el (sldb-reference-face): Add missing quote. (sldb-reference-properties): We are lucky and can use keywords instead of strings.
Move SBCL doc references to contrib. * slime.el (sldb-insert-condition): Merge REFERENCES and EXTRAS. (sldb-extras-hooks, sldb-dispatch-extras): New hook. * swank.lisp (debugger-condition-for-emacs): Merge REFERENCES and EXTRAS. * swank-backend.lisp (condition-references): Removed. Merged with condition-extras. * swank-sbcl.lisp (condition-references): Removed. (condition-extras): Include references. (externalize-reference): New function. Don't return plain symbols. * swank-allegro.lisp (condition-references): Removed. * contrib/slime-references.el: New file.
* slime.el (slime-cl-symbol-name, slime-cl-symbol-package): Ressurected, as they're still used in this file. Reported by Edward Cant.
When working on multiple source trees simultaneously, the way `slime-edit-definition' (M-.) works can sometimes be confusing: `M-.' visits locations that are present in the current Lisp image, which works perfectly well as long as the image reflects the source tree that one is currently looking at. In the other case, however, one can easily end up visiting a file in a different source root directory (the one corresponding to the Lisp image), and is thus easily tricked to modify the wrong source files---which can lead to quite some stressfull cursing. If the variable `slime-warn-when-possibly-tricked-by-M-.' is T (the default), a warning message is issued to raise the user's attention whenever `M-.' is about opening a file in a different source root that also exists in the source root directory of the user's _current buffer_. There's no guarantee that all possible cases are covered, but if you encounter such a warning, it's a strong indication that you should check twice before modifying. * slime.el (slime-file-name-merge-source-root): New function. (slime-highlight-differences-in-dirname): New function. (slime-maybe-warn-for-different-source-root): New function. (slime-warn-when-possibly-tricked-by-M-.): New variable (T by default.) (slime-goto-location-buffer): Where appropriate, call `slime-maybe-warn-for-different-source-root'
* slime.el (save-restriction-if-possible): Place macro definition above use of the macro, to regain ability to byte-compile-file.
Fix message displaying on XEmacs. Reported by Steven E. Harris, and Ken Causey. * slime.el (slime-display-message): Resurrect secondary `buffer-name' argument which got lost in 2007-08-24. (slime-format-display-message): Resurrect passing "*SLIME Note*" as default buffer-name to `slime-display-message'.
(slime-repl-write-string): Use case, not ecase, for dispatching targets.Should fix XEmacs compatibility. Reported by Steven E. Harris.
* slime.el (slime-filename-translations): Fix custom type. * slime.el (slime-toggle-trace-fdefinition): Fix typo. The argument for interactive should be "P" not "p".
Move asdf support to contrib. * swank-backend.lisp (operate-on-system): Moved to swank-asdf.lisp. It wasn't specialized in any backend. * swank.lisp (operate-on-system-for-emacs) (list-all-systems-known-to-asdf, list-asdf-systems): Moved to swank-asdf.lisp. * slime.el: Move asdf commands to contrib slime-adsf.el. * swank-loader.lisp: Load swank-asdf if ASDF is in *FEATURES*. Also add the contrib source directory to swank::*load-path*.
* slime.el: Move tramp support to contrib. * contrib/slime-tramp.el: New file.
Move startup animation to contrib. * slime.el (slime-repl-banner-function): New hook. (slime-repl-update-banner): Use it and reset markers after calling it. (slime-set-default-directory): Don't call slime-repl-update-banner here. (slime-repl-insert-prompt): Set slime-repl-input-end-mark to point-max. * contrib/slime-banner.el: New file
* slime.el: Move inferior-slime-mode to contrib. * contrib/inferior-slime.el: New file.
* slime.el: Fix the test suite (except for SBCL).
Simplify slime-process-available-input. * slime.el (slime-process-available-input): We are called in a process filter, i.e. at arbitrary times and in an aribtrary buffer. So it doesn't make sense to save-and-restore the current buffer here (slime-eval-async): Instead, save and restore the buffer here. (slime-net-read-or-lose): New.
Remove request-abort condition. * swank-backend.lisp (request-abort): Removed (abort-request): Removed. Replace all (3) uses with ERROR. * swank.lisp (eval-for-emacs): No special case for request-abort. * slime.el (slime-eval-async): Remove optional arg of :abort.
Rename slime-insert-possibly-as-rectangle to slime-insert-indented. * slime.el (slime-insert-indented): Renamed. Update callers.
* slime.el (slime-obsolete-commands): New table. Use it to bind a command with an upgrade notice.
Move compound prefix completion and autodoc to contrib. * swank.lisp (simple-completions): Rewritten for simplicity. (operator-arglist): Rewritten for simplicity. * slime.el (slime-complete-symbol-function): Make simple completion the default. (slime-echo-arglist-function, slime-echo-arglist): New hook.
* slime.el (slime-reindent-defun): Fixed when used in lisp file buffers. (Similiar patch also provided by Gábor Melis; problem also reported by Jeff Cunningham.)
* slime.el (slime-sexp-at-point): Explicitely set current syntax table to operate in `lisp-mode-syntax-table' because `thing-at-point' is used which depends on the syntax table. (E.h. keywords like `:foo' aren't recognized as sexp otherwise.) * slime.el (slime-parse-extended-operator/declare): Wrap regexp stuff in `save-match-data' (slime-internal-scratch-buffer): Removed again. (Was only introduced as a performance hack; but it turned out that the bad performance was because of unneccessary recursive calls of `slime-make-form-spec-from-string'. (Which was fixed on 2007-08-27 already.) (slime-make-form-spec-from-string): Use `with-temp-buffer' instead of `slime-internal-scratch-buffer'. Removed activation of `lisp-mode' in the temporary buffer, because this made `lisp-mode-hooks' run. This activated autodoc in the temp buffer, although the temp buffer is used to compute an autodoc itself (which resulted in some very mutual recursion which caused the current arglist to be displayed again and again---as could have been witnessed in `*Messages*'.) `Lisp-mode' was activated to get the right syntax-table for `slime-sexp-at-point', but this one sets the correct syntax-table itself now.
(slime-repl-write-string): Insert a :repl-result before the prompt, not at point-max. Update markers properly.
(slime-repl-insert-prompt): Don't go to point-max but to slime-repl-input-start-mark if there is one. This fixes user input type-ahead again (this change from 2007-08-25 got lost). Testcase: Type (dotimes (i 5) (format t "Number ~A~%" i) (sleep 1)) and then type ahead while the command is executing and output arrives.
Fix some output related bugs. * swank.lisp (send-repl-results-to-emacs): Emit a fresh line. * slime.el (slime-insert-transcript-delimiter): Use insert-before-markers since slime-output-end is no longer left inserting. Reported by Austin Haas <firstname.lastname@example.com>.
(slime-repl-write-string): Handle arbitrary targets using slime-output-target-marker. (slime-last-output-target-id, slime-output-target-to-marker) (slime-output-target-marker) (slime-redirect-trace-output): Move back here from slime-presentations.el.
* slime.el (slime-make-form-spec-from-string): Elisp Hacking 101: Don't use `beginning-of-buffer' and `end-of-buffer' in Elisp code. * swank.lisp (read-form-spec): Unintern just newly interned symbols when an reader error occurs.
* swank.lisp (slime-repl-clear-buffer-hook): New hook. (slime-repl-clear-buffer): Use it. * slime-presentations.el (slime-clear-presentations): New function. Add it to slime-repl-clear-buffer-hook.
Remove the ID argument from :write-string protocol messages. Everything, except for rigid-indentation tricks, can be achieved by using :write-string in conjunction with :presentation-start and :presentation-end. (slime-dispatch-event): Change it here. (slime-write-string, slime-repl-write-string): And here.
* slime.el (slime-make-extended-operator-parser/look-ahead): Move to end of symbol at point. (slime-make-form-spec-from-string): Fixes unexpected behaviour of `save-excursion'.
* slime.el (slime-make-extended-operator-parser/look-ahead): Move to end of symbol at point. (slime-make-form-spec-from-string): Fixes unexpected behaviour of `save-excursion'.
* slime.el (slime-make-extended-operator-parser/look-ahead): Move to end of symbol at point. (slime-make-form-spec-from-string): Fixes unexpected behaviour of `save-excursion'.
* slime.el (slime-sexp-at-point): Fixes a few edge cases were Emacs' `(thing-at-point 'sexp)' behaves suboptimally. For example, `foo(bar baz)' where point is at the ?\(. (slime-internal-scratch-buffer): New. This variable holds an internal scratch buffer that can be reused instead of having to create a new temporary buffer again and again. (slime-make-extended-operator-parser/look-ahead): Uses `slime-make-form-spec-from-string' to parse nested expressions properly. (slime-nesting-until-point): Added docstring. (slime-make-form-spec-from-string): Added new optional parameter for stripping the operator off the passed string representation of a form. Necessary to work in the context of `slime-make-extended-operator-parser/look-ahead'. Added safety check against a possible endless recursion. * swank.lisp (parse-form-spec): Looses restriction for nesting.
* slime.el (slime-eval-feature-conditional): Fix typo. (slime-keywordify): Simplify.
(slime-last-expression): Don't use presentations.
(slime-open-stream-to-lisp): Fix typo.
Move presentations to contrib. Part I. * slime.el (slime-event-hooks, slime-dispatch-event): New hook. (slime-write-string-function, slime-write-string): New hook. (slime-repl-return-hooks, slime-repl-return): New hook. (slime-repl-current-input-hooks, slime-repl-current-input): New hook. (slime-open-stream-hooks, slime-open-stream-to-lisp): New hook. (sldb-insert-locals, slime-inspector-insert-ispec): Don't use presentations. * contrib/slime-presentations.el: New file
Reduces needless interning of symbols that was introduced by my recent work on autodoc to a minimum. Also fixes this issue for `slime-complete-form' which always interned symbols even before my changes. * slime.el (slime-sexp-at-point): If N is given, but there aren't N sexps available at point, make it return a list of just as many as there are. (slime-make-form-spec-from-string): New. Creates a ``raw form spec'' from a string that's suited for determining newly interned symbols later in Swank. (slime-parse-extended-operator/declare): Uses it. * swank.lisp (parse-symbol): Returns internal knowledge, to provide a means for callers to perform a sanity check. (call-with-ignored-reader-errors): New. Abstracted out from `read-incomplete-form-from-string.' * swank.lisp (read-form-spec): New. Only READs elements of a form spec if necessary. And if it does have to READ, it keeps track of newly interned symbols which are returned as secondary return value. (parse-form-spec): Use it. Propagate newly interned symbols. (parse-first-valid-form-spec): Likewise. (arglist-for-echo-area, complete-form, completions-for-keyword): Adapted to unintern the newly interned symbols.
* slime.el (current-slime-narrowing-configuration): Renamed to `slime-current-narrowing-configuration'. (set-slime-narrowing-configuration): Renamed to `slime-set-narrowing-configuration'. (current-slime-emacs-snapshot): Renamed to `slime-current-emacs-snapshot'. (current-slime-emacs-snapshot-fingerprint): Renamed to `slime-current-emacs-snapshot-fingerprint'. (set-slime-emacs-snapshot): Renamed to `slime-set-emacs-snapshot'.
* slime.el (save-restriction-if-possible): Fixed another typo, duh! Thanks again to Matthias Koeppe.
* slime.el (slime-cl-symbol-name): Handle vertical bars (|) (%slime-nesting-until-point): Renamed to `slime-nesting-until-point'.
(slime-insert-presentation): Make the rectangle-ification of multi-line presentations, introduced 2006-12-19, optional. (slime-write-string): Use it here only for regular output, but not for REPL results. (sldb-insert-locals): Use it here. (slime-inspector-insert-ispec): Use it here.
(slime-write-string): Make sure text properties are rear-nonsticky, so typed-ahead user input does not pick up the text properties. Fix up some markers. (slime-reset-repl-markers): Make the marker slime-output-end of insertion type nil (no automatic advances on insertions). (slime-with-output-end-mark): Update the location of slime-output-end here manually. (slime-repl-update-banner): Use insert-before-markers.
(slime-output-target-marker): New function. (slime-mark-presentation-start) (slime-mark-presentation-end): Use slime-output-target-to-marker. (slime-write-string): Likewise.
* slime.el (slime-last-output-target-id): New variable. (slime-output-target-to-marker): New variable. (slime-write-string): Handle general "target" arguments using slime-output-target-to-marker. (slime-redirect-trace-output): New command. (slime-easy-menu): Add a menu item for it. * slime.el (slime-mark-presentation-start) (slime-mark-presentation-end): Make "target" argument optional.
* slime.el (save-restriction-if-possible): Fixed typo in macroexpansion. Thanks to Matthias Koeppe for reporting.
(slime-insert-arglist): Removed, superseded by slime-complete-form since 2005-02-20.
* slime.el (slime-dispatch-event): Handle new optionals args of messages :presentation-start and :presentation-end. * slime.el (slime-mark-presentation-start) (slime-mark-presentation-end): New arg "target"; record presentation boundaries separately for REPL results and regular process output. This fixes the presentation markup of REPL results when the presentation-streams contrib is loaded.
Move typeout frame to contrib. * slime.el (slime-message-function, slime-background-message-function) (slime-autodoc-message-function): New variables. (slime-message, slime-background-message) (slime-autodoc-message): Call the function in the respective variable, so that the typeout window can be plugged in.
Move xref broser to contrib.
* slime.el (slime-forward-blanks): Wrapped w/ `ignore-errors.' (slime-sexp-at-point): Return results as a list of strings, rather than just one big string if called with arg > 1. (slime-parse-extended-operator-name): Wrapping some movement code in `ignore-errors'. Adapted to new return value of `slime-enclosing-form-specs'. Minor cosmetic changes. (slime-make-extended-operator-parser/look-ahead): Adapted to changes of the ``raw form spec'' format; returns a form of strings, instead of a string of a form. (slime-parse-extended-operator/declare): Simplified. Adapted to changes of the ``raw form spec'' format; passes decl-identifiers, or typespec-operators respectively, along the decl/type-spec. (%slime-in-mid-of-typespec-p): Removed. Replaced by an regexp based approach. (%slime-nesting-until-point): New helper for `slime-parse-extended-operator/declare'. * swank.lisp (parse-form-spec): Adapted to new ``raw form spec'' format. Updated format description in docstring accordingly.
Move slime-highlight-edits-mode to contrib.
Move slime-scratch to contrib.
Simplify slime-insert-propertized. * slime.el (slime-insert-propertized): Use plain insert instead of slime-insert-possibly-as-rectange.
Don't use rectangle code, because it inappropriately sets the mark. * slime.el (slime-with-rigid-indentation): Fix evaluation order. (slime-indent-rigidly): New. (slime-insert-possibly-as-rectange): Don't set mark.
(slime-inspect-presentation-at-mouse): Use swank:inspect-presentation here.
Added arglist display for declaration specifiers and type specifiers. Examples: `(declare (type' will display (declare (type type-specifier &rest vars)) `(declare (type (float' will display [Typespec] (float &optional lower-limit upper-limit) `(declare (optimize' will display (declare (optimize &any (safety 1) (space 1) (speed 1) ...)) &ANY is a new lambda keyword that is introduced for arglist description purpose, and is very similiar to &KEY, but isn't based upon plists; they're more based upon *FEATURES* lists. (See the comment near the ARGLIST defstruct in `swank.lisp'.) * slime.el: (slime-to-feature-keyword): Renamed to `slime-keywordify'. (slime-eval-feature-conditional): Adapted to use `slime-keywordify'. (slime-ensure-list): New utility. (slime-sexp-at-point): Now takes an argument that specify how many sexps at point should be returned. (slime-enclosing-operator-names): Renamed to `slime-enclosing-form-specs'. (slime-enclosing-form-specs): Returns a list of ``raw form specs'' instead of what was called ``extended operator names'' before, see `swank::parse-form-spec' for more information. This is a simplified superset. Additionally as tertiary return value return a list of points to let the caller see where each form spec is located. Adapted callers accordingly. Extended docstring. (slime-parse-extended-operator-name): Adapted to changes in `slime-enclosing-form-specs'. Now gets more context, and is such more powerful. This was needed to allow parsing DECLARE forms. (slime-make-extended-operator-parser/look-ahead): Because the protocol for arglist display was simplified, it was possible to replace the plethora of parsing function just by this one. (slime-extended-operator-name-parser-alist): Use it. Also add parser for DECLARE forms. (slime-parse-extended-operator/declare): Responsible for parsing DECLARE forms. (%slime-in-mid-of-typespec-p): Helper function for `slime-parse-extended-operator/declare'. (slime-incomplete-form-at-point): New. Return the ``raw form spec'' near point. (slime-complete-form): Use `slime-incomplete-form-at-point'. * swank.lisp: New Helper functions. (length=, ensure-list, recursively-empty-p): New. (maybecall, exactly-one-p): New. * swank.lisp (arglist-for-echo-area): Adapted to take ``raw form specs'' from Slime. (parse-form-spec): New. Takes a ``raw form spec'' and returns a ``form spec'' for further processing in Swank. Docstring documents these two terms. (split-form-spec): New. Return relevant information from a form spec. (parse-first-valid-form-spec): Replaces `find-valid-operator-name'. (find-valid-operator-name): Removed. (operator-designator-to-form): Removed. Obsoleted by `parse-form-spec'. (defstruct arglist): Add `any-p' and `any-args' slots to contain arguments belonging to the &ANY lambda keyword. (print-arglist): Adapted to also print &ANY args. (print-decoded-arglist-as-template): Likewise. (decode-arglist): Adapted to also decode &ANY args. (remove-actual-args): Adapted to also remove &ANY args. (remove-&key-args): Split out from `remove-actual-args'. (remove-&any-args): New. Removes already provided &ANY args. (arglist-from-form-spec): New. Added detailed docstring. (arglist-dispatch): Dispatching generic function for `arglist-from-form-spec' that does all the work. Renamed from prior `form-completion'. (arglist-dispatch) Added methods for dealing with declaration and type-specifiers. (complete-form): Adapted to take ``raw form specs'' from Slime. (completions-for-keyword): Likewise. (format-arglist-for-echo-area): Removed. Not needed anymore. * swank-backend.lisp (declaration-arglist): New generic function. Returns the arglist for a given declaration identifier. (Backends are supposed to specialize it if they can provide additional information.) (type-specifier-arglist): New generic function. Returns the arglist for a given type-specifier operator. (Backends are supposed to specialize it if they can provide additional information.) (*type-specifier-arglists*): New variable. Contains the arglists for the type specifiers in Common Lisp. * swank-sbcl.lisp: Now depends upon sb-cltl2. (declaration-arglist 'optimize): Specialize the `optimize' declaration identifier to pass it to sb-cltl2:declaration-information.
Some inspector cleanups.
Display a "Please upgrade" style message when C-c M-i is pressed.
Merge contrib branch.
* slime.el (slime-close-all-parens-in-sexp): Fix interplay with `slime-close-parens-limit'. This should also affect `slime-complete-form' (C-c C-s) in a positive way.
Add a contrib directory and move fuzzy completion code to that directory. * contrib: New directory. * swank.lisp (swank-require): New function to load contrib code. (*find-module*, module-filename, *load-path*, merged-directory) (find-module, module-canditates): New. Pathname acrobatics for swank-require. * swank-loader.lisp: Compile (but don't load) contribs. (*contribs*, contrib-source-files): New. * contrib/slime-fuzzy.el: New file. (slime-fuzzy-init): New function. Load CL code on startup. * contrib/swank-fuzzy.lisp: New file. Common Lisp code for fuzzy completion.
* slime.el (slime-process-available-input): Correct yesterday's change: the buffer a request was originally performed in doesn't necessarily exist at this time anymore, so we check for buffer liveness now. The problem arised when quitting in SLDB which would cause Swank to send a `:debug-return' message before the acknowledgement message for `sldb-quit' is sent. So the acknowledgement is received in a context where the sldb-buffer is closed already.
* slime.el (slime-process-available-input): Make sure that the event received from SWANK is processed in the context of the original buffer the request of the response was performed in. Previously, the clauses of `slime-rex' were processed in the internal *cl-connection* buffer. And as a result the continuations passed to `slime-eval' and `slime-eval-async' ditto.
Make `M-.' work on definitions outside the current restriction. `M-,' will also properly restore the narrowing as of before the jump. Similiarly for quiting from the compilation notes buffer and the Xref buffers. * slime.el (slime-narrowing-configuration, slime-emacs-snapshot), (current-slime-narrowing-configuration), (set-slime-narrowing-configuration), (current-slime-emacs-snapshot), (set-slime-emacs-snapshot), (current-slime-emacs-snapshot-fingerprint): New. Emacs' window configurations do not restore narrowing, so introduce a snapshot facility that contains the necessary information. * slime.el: Various renaming and adaptions in the Slime temp buffer, xref, goto-definition and compilation notes section to use the newly introduced snapshots instead of mere window configurations. * slime.el: (slime-highlight-notes, slime-remove-old-overlays): Still operate on whole buffer, but restore previous restriction if there was any. (slime-goto-location-position): Now widens the buffer to properly jump to definitions outside of the current restriction. * slime.el (slime-push-definition-stack), (slime-pop-find-definition-stack): Now also stores information about narrowing on the definition stack, in order to properly restore narrowing on `M-,'. * slime.el (def-slime-test narrowing): Test case for properly dealing with narrowing. * slime.el (slime-buffer-narrowed-p): New function, tests whether the current buffer is narrowed or not. (save-restriction-if-possibly): Like `save-restriction', but not as strict---see doc string. * slime.el (slime-length=): New function; semantically the same as (= (length seq) n), but more efficiently implemented for lists. Changed the above pattern into a call to SLIME-LENGTH= where appropriate.
* slime.el (slime-kill-all-buffers): Now also kills all buffers beginning with a `*SLIME' prefix (like, for instance, `*SLIME Apropos*', or `*SLIME macroexpansion*'.)
Undo some of Marco's changes from 2007-05-23. * slime.el (def-slime-selector-method): BODY can return a buffer name, like "*slime-events*". Handle that and never ignore invalid return values. Force BODY to abort if there's no suitable buffer. Why would you want to switch buffers if the desired buffer doesn't exist?
Fixing `C-c M-q' at the REPL. Thanks to André Thieme for pointing out that it has been broken since several months. * slime.el (slime-reindent-defun): Use functions `slime-beginning-of-defun' and `slime-end-of-defun' that were introduced in the last changeset.
Fixing `C-c M-q' at the REPL. Thanks to André Thieme for pointing out that it has been broken since several months. * slime.el (slime-reindent-defun): Use functions `slime-beginning-of-defun' and `slime-end-of-defun' that were introduced in the last changeset.
* slime.el: Pressing `C-M-a' (beginning-of-defun) in midst of the last REPL prompt directs the cursor to the beginning of the prompt. Pressing it again, would do nothing; now it moves the cursor to the start of the previous prompt (as it's consistent with the behaviour when the cursor was placed midst one of the old prompts.) Likewise for `C-M-e' (end-of-defun) Additionally fixing `C-c C-s' (slime-complete-form) at the REPL. (slime-keys): New bindings for `C-M-a' and `C-M-e' to SLIME-BEGINNING-OF-DEFUN and SLIME-END-OF-DEFUN respectively. (slime-keys): Making `C-c C-q' (slime-close-parens-at-point) obsolete, as it didn't work correctly on the REPL. (slime-repl-mode-map): Removed bindings for `C-M-a' and `C-M-e', as they're now inherited from SLIME-KEYS. (slime-repl-beginning-of-defun, slime-repl-end-of-defun): Jump to the previous (next) prompt if called twice in a row. (slime-close-parens-at-point): Commented out. (slime-close-all-sexp): Renamed to SLIME-CLOSE-ALL-PARENS-IN-SEXP. (slime-close-all-parens-in-sexp): Modified to take SLIME-CLOSE-PARENS-LIMIT into account. (slime-complete-form): Use SLIME-CLOSE-ALL-PARENS-IN-SEXP.
(def-slime-selector-method): Allow the selector body to not return a buffer. This means that, instead of being to forced to signal an error when a choosen buffer can't be found (like choosing d when there are no debugger buffers) can simply display a message.
* slime.el (slime-complete-form): Only insert a closing parenthesis if the form is not already closed. Reported by and adapted from Mac Chan.
* slime.el: Fixed proper handling of the abortion of a request. (For instance, when calling (SWANK::ABORT-REQUEST "FOO") from the REPL.) (sldb-quit): Updated the DESTRUCTURE-CASE clause for (:abort) to take an argument. (sldb-continue): Likewise. (sldb-invoke-restart): Likewise. (sldb-break-with-default-debugger): Likewise. (sldb-return-from-frame): Likewise. (sldb-restart-frame): Likewise. (slime-repl-eval-string) Likewise. (slime-repl-show-abort): Now also inserts the reason for the abort into the REPL buffer.
* slime.el (slime-pretty-lambdas): Removed. If you really want this, please use one of the external ressources that provide this; for instance, `pretty-lambda.el', `pretty-greek.el', or even `pretty-symbols.el'. For more information, please see http://www.emacswiki.org/cgi-bin/wiki/PrettyLambda
* slime.el: Fix macroexpanding on things like ",(loop ...)". (slime-sexp-at-point-for-macroexpansion): New function; like SLIME-SEXP-AT-POINT-OR-ERROR, but fixes up some misbehaviour with respect to macroexpansion. (slime-eval-macroexpand, slime-eval-macroexpand-inplace): Use the new function.
* slime.el: Within the Slime Inspector, `S-Tab' will now also work on X. Furthermore `Tab' and `S-Tab' will now correctly wrap around the beginning and end of the buffer; priorly it'd hang on the beginning with a message "Beginning of buffer", and would require an additional `S-Tab'. (slime-inspector-mode-map): Attached `[backtab]' to SLIME-INSPECTOR-PREVIOUS-INSPECTABLE-OBJECT, as Emacs translates `S-Tab' to `Backtab' on X. (slime-find-inspectable-object): New function; finds next or previous inspectable object. (slime-inspector-next-inspectable-object): Mostly rewritten. Use SLIME-FIND-INSPECTABLE-OBJECT to make the code clearer.
(slime-with-xref-buffer): Added missing ,
Pressing `q' in *compiler notes* after a `C-c C-k' or `C-c M-k' would not probably restore the original window configuration. Fix that. (slime-get-temp-buffer-create): New &key arg WINDOW-CONFIGURATION. (slime-with-xref-buffer): Likewise. (slime-compilation-finished): New &optional arg WINDOW-CONFIG. (slime-maybe-show-xrefs-for-notes): Likewise. (slime-show-xrefs) Likewise. (slime-maybe-list-compiler-notes): Likewise. (slime-list-compiler-notes): Likewise. (slime-compilation-finished-continuation): Renamed to SLIME-MAKE-COMPILATION-FINISHED-CONTINUATION. (slime-make-compilation-finished-continuation): Now takes two args, the current buffer and optionally the current window config to be restored. (slime-compile-file): Save current window configuration before popping up the REPL for compilation output, pass it down. (slime-easy-menu): Add entry for SLIME-UNTRACE-ALL.
(slime-easy-menu): Add entry for SLIME-UNTRACE-ALL.
(slime-compilation-finished): Don't use MULTIPLE-VALUE-BIND for list destructuring, only because multiple values happen to be implemented via lists in elisp! (slime-fuzzy-completions-mode): Added an detailed explanation to the docstring of how Fuzzy Completion works and how it'ss supposed to be worked with. (slime-fuzzy-explanation): Shortened to reference to SLIME-FUZZY-COMPLETIONS-MODE for help on fuzzy completion. (slime-fuzzy-choices-buffer): Set BUFFER-QUIT-FUNCTION to SLIME-FUZZY-ABORT to make it correctly exit fuzzy completion when pressing `Esc Esc Esc' (`M-Esc Esc').
(slime-inspector-operate-on-point): Allow the action calls to return nil.
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
* slime.el (with-selected-window): define for compatibility with Emacs 21.
(slime-read-port-and-connect): Fix race condition: retry one more time if the port file is empty. Pop up the debugger on other errors. (slime-attempt-connection): Moved to toplevel. (slime-timer-call): New. Used by slime-attempt-connection. (slime-cancel-connect-retry-timer): New. (slime-abort-connection): Use it. (slime-repl-insert-prompt): Use insert-before-markers. This fixes some redisplay problems, but I don't know why. Also: remove the timer for async output. (slime-repl-move-output-mark-before-prompt): Removed. (slime-repl-save-merged-history): Use with-temp-message. (slime-goto-location-buffer): Support Zip files. (sldb-quit): Don't print "Evaluation aborted".
(slime-scratch-buffer): Respect the syntax text properties of presentations.
(slime-copy-presentation-at-mouse-to-point): Manually invoke the after-change function, so that the presentation overlay is created even if we paste to non-REPL buffers. (slime-menu-choices-for-presentation): Evaluate menu-choices-for-presentation-id in the right buffer, thus in the right Lisp thread. Reported by Attila Lendvai. (slime-menu-choices-for-presentation): Show the id of the presentation. (sldb-insert-locals): Include the thread id in the presentation id.
(slime-repl-eval-string, slime-repl-insert-result): Support the presentation-less old protocol. (slime-goto-location-position): Use column number if available.
(slime-copy-presentation-at-mouse-to-point) (slime-copy-presentation-at-mouse-to-kill-ring): New commands. (slime-menu-choices-for-presentation): Change interface. New menu options, Copy to kill-ring, Copy to point. (slime-presentation-menu): Change call to slime-menu-choices-for-presentation.
Handle multiple reader conditionals on the same line for font-lock.
(slime-list-compiler-notes): Fetch the notes only if called interactively. (slime-set-query-on-exit-flag): New function, to avoid compiler warnings about obsolete function process-kill-without-query. (slime-defun-if-undefined): Perform the test at runtime not at compile time. Reported by Lennart Staflin.
(slime-delete-swank-port-file): Don't use display-warning; that's not available everywhere. (slime-repl-update-banner): Insert the date only if the buffer is empty.
* slime.el (slime-maybe-start-lisp): Pass directory argument to slime-start-lisp also in other cond branch. (slime-restart-sentinel): Pass a NIL directory to slime-start-lisp.
* slime.el (slime-start-lisp): Don't cd if no directory was specified.
(slime-start): Added :directory argument and pass it to slime-maybe-start-lisp. (slime-maybe-start-lisp): Added directory argument and pass it to slime-start-lisp (but not slime-reinitialize-inferior-lisp-p) (slime-start-lisp): Added directory argument. Used to set buffer's directory before starting the inferior lisp.
(slime-find-tag-if-tags-table-visited): New function. (slime-edit-definition-fallback-function): Offer it as a value for customization.
(sldb-insert-locals): Repair presentation markup of frame locals.
(slime-write-string): When writing a :repl-result, update the slime-output-end marker for the purpose of asynchronous output (when *use-dedicated-output-stream* is true). Reported by Madhu <email@example.com>.
(slime-delete-swank-port-file): Fix typo in warning message.
(slime-inferior-connect): Warn, as oposed to bailing out with an error, when deleting the port file fails. Patch by: Samium Gromoff <email@example.com>
(slime-repl-update-banner): Restore animation. (slime-startup-animation): restore.
(slime-complete-symbol-function): Restore old default. (set-keymap-parents): Deleted. (slime-startup-animation): Deleted. (slime-read-from-minibuffer): Don't use defun*. (slime-repl-terminate-history-search): New. (slime-repl-next-matching-input): Use it.
(slime-start): Continue even if the user, after prompting, didn't recompile the stale .elc file. (slime-urge-bytecode-recompile) [xemacs]: Abort immediately if the user doesn't want to continue. (slime-recompile-bytecode): Don't use byte-compile-warning-types; it may not exist in XEmacs. Patch from Sean O'Rourke <firstname.lastname@example.com>.
(sldb-recenter-region): Use count-screen-lines instead of count-lines.
(slime-scratch-mode-map): Changed parent keymap to lisp-mode-map to prevent unnecessary duplication of slime-mode-map bindings and so that lisp-mode-map key bindings are present in the slime scratch buffer. Change identified by Ariel Badichi.
(slime-call-defun): Put the docstring before the (interactive) form so that "C-h f slime-call-defun" will return it.
(slime): Use COMMAND and CODING-SYSTEM parameters. Previously they were ignored.
Fix slime-repl-defparameter by Kilian Sprotte
(slime-init-command): Use expanded files when writing the LOAD form for swank.
Cleanups for the repl history code. (slime-repl-mode-map): Don't shadow M-C-d. (slime-repl-history-replace): Simplified. (slime-repl-history-search-in-progress-p): New. (slime-repl-position-in-history): If there's no match return out-of-bound positions instead of nil. (slime-repl-add-to-input-history): Never modify the argument. (slime-repl-previous-input): Renamed from slime-repl-previous-input-starting-with-current-input. (slime-repl-next-input): Renamed from slime-repl-next-input-starting-with-current-input (slime-repl-forward-input): Renamed from slime-repl-next-input. (slime-repl-backward-input): Renamed from slime-repl-previous-input. (slime-repl-history-pattern): Renamed from slime-repl-matching-input-regexp. (slime-repl-delete-from-input-history): Simplified. (slime-repl-history-map) (slime-repl-history-navigation-neutral-commands) (slime-repl-jump-to-history-item) (slime-repl-previous-or-next-input) (slime-repl-starting-with-current-input-regexp) (slime-repl-continue-search-with-last-pattern) (slime-repl-previous-or-next-matching-input): Deleted. (sldb-list-locals, sldb-list-catch-tags): Deleted. Aren't of much use anymore.
Fix default key binding typo for slime-repl-next-matching-input
* slime.el (slime-read-expression-map): Switch the slime-mode-map and minibuffer-local-map back the way they were. The original change was made due to a misunderstanding caused by a keybinding for [(return)] apparently being more specific than one for (kbd "RET"), even when the former is in a parent keymap and the latter in the child.
Offer systems already know to ASDF for completion
(slime-keys): Remove binding of M-*, restore binding of M-,.
New REPL shortcuts by Kevin Rosenberg
* slime.el (slime-read-expression-map): Switch the slime-mode-map and minibuffer-local-map around, so that the minibuffer binding for return takes precedence over the slime-mode one.
* slime.el (slime-read-expression-map): restore tab completion in the minibuffer.
(slime-keys): Removed binding of M-,
Some cleanups for the debugger code: add some outline sections and docstrings. (sldb-setup): Always display the beginning of the condition text. Previously, we always showed the beginning of the backtrace. (sldb-prune-initial-frames): Do what the docstring says. Reverted to Luke's version. (sldb-dispatch-extras): Fix typo. (sldb-insert-restarts, sldb-insert-frames) (sldb-insert-frame, sldb-fetch-more-frames) (sldb-toggle-details, sldb-show-frame-details) (sldb-insert-locals): Simplified. (sldb-frame-details): New. (slime-save-coordinates, slime-coordinates) (slime-restore-coordinate, slime-count-lines): New macro and its helpers. (sldb-recenter-region): Renamed from slime-maybe-recenter-region. (sldb-enable-styled-backtrace, sldb-show-catch-tags) (sldb-highlight): Deleted. Seem to be obsolete. (sldb-add-face): Removed, because it is now the same as slime-add-face. (sldb-help-summary): Deleted. The docstring for sldb-mode is already pretty terse. (define-sldb-face): Renamed from def-sldb-face.
FIX: set-keymap-parents for GNU Emacs was bogus, fixed by Ariel Badichi.
(slime-repl-merge-histories): Use (setf (gethash ...) instead of puthash, for Emacs 20.
Added set-keymap-parents when not available (GNU Emacs). Result: slime bindings while reading expressions from the minibuffer.
FIX: slime-insert-possibly-as-rectange and sldb stuff on newer emacsen
Added slime-insert-possibly-as-rectangle and use it when inserting things here and there. The effect of this is that multi-line strings coming from swank (e.g. stuff in sldb) are inserted with insert-rectangle, so they are properly indented.
FIX: older Emacsen have no line-number-at-pos
Convert some minibuffer reading defun's to defun* and use keywords. Support extra arguments.
Use set-parent-keymaps when available (xemacs only for now) when setting up slime-read-expression-map. The effect of this is that the minibuffer will have all the slime-mode-map keys where minibuffer-local-map is not overriding.
Handle better the case when swank can not read anything from the string sent to be inspected. Only bring up the debugger when the inspect command is prefixed.
Only offer an ASDF system as initial input if it's really in the central registry
(slime-repl-insert-prompt): Don't insert a result, only the prompt. (slime-repl-insert-result): Removed. (slime-repl-eval-string, slime-repl-show-abort) (slime-repl-set-package, slime-output-buffer) (slime-repl-update-banner): Change all callers. (slime-dispatch-event): Event :WRITE-STRING gets an optional argument TARGET, which controls where the string is inserted. (slime-write-string): Handle targets NIL (regular process output) and :REPL-RESULT.
(slime-repl-mode-beginning-of-defun) (slime-repl-mode-end-of-defun): New. (slime-repl-mode): Use them as beginning-of-defun-function and end-of-defun-function. (slime-enclosing-operator-names): Bind parse-sexp-lookup-properties to nil, don't parse more than 20000 characters before point, don't determine exact argument positions larger than 64. Byte-compile this function.
Added customizable dwim lookup hook support for inspect
(slime-inspector-position): New. (slime-inspector-operate-on-point, slime-inspector-reinspect): Use it here to make it work on GNU Emacs too. (slime-open-inspector): Fix row-col addressing at end of buffer.
(slime-inspect): Add a dwim-mode keyword argument, move all input handling into the interactive spec. Restore the behavior of slime-inspect when point is within a presentation (no prompting, no DWIM). (slime-inspect-presentation-at-mouse): Don't do DWIM here, so the presentation-retrieval expression does not end up on the inspector stack.
FIX: inspecting presentations from the right click menu broke in the inspect refactor
FIX: slime-fuzzy-target-buffer-completions-mode's keymap must always precede other keymaps
Extend :write-string with and &optional presentation id and use this in present-in-emacs
Fix slime-insert-presentation to handle multi-line presentations better (use insert-rectangle)
Smarten up the sldb heuristic that drops swank frames
FIX dwim inspecting to handle (setf some-fun) functions, too
FIX: slime-sexp-at-point for foo::|bar::baz|
FIX: Properly keep track of slime-buffer-package in the inspector
Added dwim-mode to slime-inspect that tries to be smart unless prefixed
Make slime-fuzzy-complete-symbol the default in the belife that it's better for new users
Set slime-fuzzy-completion-in-place enabled by default
Added (cons row col) addressing to slime-open-inspector, use in slime-inspector-operate-on-point
FIX: operate the inspector in the debug thread when started from sldb
Convert some inspector defuns to defun* and use keywords. Other minor cleanups.
(slime-region-for-defun-at-point): end-of-defun and beginning-of-defun modify match-data, so we should save it.
(slime-expand-abbreviations-and-complete): Emacs `choose-completion' (choosing a completion from the *Completions* buffer) always replaces text upto (point). So the code which figures out an `unambiguous-completion-length' and places the point there in `slime-expand-abbreviations-and-complete' causes problems: the replacement text gets garbled. Get rid of the bogus `unambiguous-completion-length'. Patch by Madhu <firstname.lastname@example.com>
(slime-repl-output-mouseover-face): Fix a pair of extra parens. Patch by Madhu <email@example.com>. (slime-search-buffer-package): Remove Xemacs special casing. There's already a compatibility defun for match-string-no-properties.
Implement INSPECT-IN-EMACS, tweak inspection of integers.
Work on repl history navigation, restore old M-p/M-n behaviour due to #lisp demand Also print the current regexp in the minibuffer messages. M-p/M-n takes the repl input up to the point not the entire input as it did before. slime-repl-previous/next-input-starting-with-current-input: new names for the old M-p/M-n commands History navigation commands jump to the end of buffer when point is before the prompt.
Fix/smarten up temp-buffer-quit Now it tries its best to remember the original window config and restore it at slime-temp-buffer-quit unless it was changed meanwhile. IOW, fix "q" after macroexpand in a macroexpand buffer not closing the temp window. Also fix the compiler notes usage of the temp buffer.
FIX: slime-symbol-name-at-point for symbols like foo::|bar::baz|
Added slime-repl-delete-from-input-history that deletes the current history entry when no input is supplied
slime-repl-kill-input kills the entire input when point is at the prompt and resets the history navigation state
Use a hashtable to remove duplicates in slime-repl-merge-histories
(slime-inspect): If a prefix argument is provided pass :eval nil to swank:init-inspector.
(slime-search-buffer-package): Don't call match-string-no-properties if it's not defined (as is on some xemacs') (slime-repl-clear-buffer): Added optional prefix argument specifying how many lines to leave.
(slime-start, slime-set-connection-info): Add support for a :init-function which is called after the usual initialization of the connection is completed.
(match-string-no-properties): Define it for XEmacs compatibility.
(slime-first-change-hook): Don't do anything if buffers file doesn't exist.
Restore the way M-n and M-p used to work in the REPL. (cherry-picked from a patch with other changes, sent by Attila Lendvai). * slime.el (slime-repl-previous-input-starting-with-current-input) (slime-repl-next-input-starting-with-current-input): New functions, work like the old slime-repl-previous-input / next-input. (slime-repl-matching-input-regexp): Restore old version. (slime-repl-mode-map): Bind s-r-p-i-s-w-c-i and s-r-n-i-s-w-c-i to M-p and M-n respectively. slime-repl-previous-input and slime-repl-next-input are still accessible with C-up / C-down.
(slime-repl-read-break): Use a :emacs-interrupt message instead of a RPC to swank:simple-break. Suggested by Taylor R Campbell. (slime-dispatch-event, slime-interrupt): Decide whether to use SIGINT or a :emacs-interrupt message in slime-interrupt.
Suggestions from Antonio Menezes Leitao: (slime-search-buffer-package): Prettify the package name if it is written as string or keyword. (slime-in-expression-p): Use `read' and `eq' to test the first element of the list. Previuosly, the pattern (foo) wrongly matched (foobar) because we used (looking-at <symbol>).
(slime-edit-definition): Don't hide error messages.
(slime-compile-file): Let the Lisp side choose the coding system. (slime-coding): Deleted. (slime-set-connection-info): On protocol version mismatch, ask the user how to proceed. (slime-protocol-version): New variable. Initialize it at compile time to detect stale elc files.
(slime-make-tramp-file-name): Added (require 'tramp) since tramp-make-tramp-file-name is not an autoloaded function.
cosmetic change - escaped right parenthesis
*** empty log message ***
(sldb-sexp-highlight-mode): Remove bloat.
(sldb-sexp-highlight-mode): New custom. (slime-handle-repl-shortcut): Trigger slime-lookup-shortcut when the point is anywhere before slime-repl-input-start-mark. IOW, you can press "," anywhere before the prompt. (slime-edit-definition): Handle the case when there are only such entries returned from swank that have errors. (slime-read-from-minibuffer): Allow overriding of the keymap. (slime-repl-previous-matching-input): Similar behaviour like isearch-forward. (slime-repl-next-matching-input): Ditto. In more details: You can freely navigate with slime-repl-previous/next-input with M-p and M-n at any time among the history entries. When M-r is pressed, which invokes slime-repl-previous-matching-input, the the minibuffer is activated to read the regexp to search for and the contents will default to the current repl input. Pressing M-r again will start searching with the last pattern used no matter what the content of the minibuffer is. Subsequent invocations of M-r get the next match, and of course the same applies for M-s, which is slime-repl-previous-matching-input.
(slime-global-variable-name-regexp): New variable. (slime-global-variable-name-p): Use slime-global-variable-name-regexp. ("swank-version"): Load swank-version.el to get the wire protocol version. (slime-set-connection-info): Check the wire protocol version.
(slime-global-variable-name-regexp): New variable. (slime-global-variable-name-p): Use slime-global-variable-name-regexp.
(slime-global-variable-name-p): Oops... need to handle very long strings.
(slime-global-variable-name-p): Use defun* instead of defun.
(slime-global-variable-name-p): Simplified.
(slime-completions-for-character): New. (slime-contextual-completions): Use it here.
fix xemacs problems in previous commit
(slime-setup-command-hooks): Use make-local-hook. (slime-repl-mode): Ditto. (slime-fuzzy-choices-buffer): Ditto. (sldb-mode): Ditto. (slime-fuzzy-completion-limit): New variable. (slime-fuzzy-completion-time-limit-in-msec): New variable. (slime-fuzzy-next): Fix when at the end of the buffer. (completion-output-symbol-converter): New to handle escaped symbols for those who need to mess around with symbols like layered-function-definers::|CONTEXTL::SLOT-VALUE-USING-LAYER|. When a symbol is escaped then completion is case sensitive. (completion-output-package-converter): New. (mimic-key-bindings): New to easily define bindings by first trying to look up bindings for an operation and only use the provided default bindings if nothing was found in the source keymap. Use it to set up fuzzy bindings. (Hint: if you have keys like previous-line customized, then only load slime after they have been set, and the fuzzy mode will mimic them.) (slime-temp-buffer-quit): Always close the opened window, updated docstring. Also made the fuzzy maps smarter, they now try to look up keys with 'where-is-internal and map the functions on them.
(slime-global-variable-name-p): Use a custom 'parser' instead of string-match to avoid regexp overflow errors on very long strings.
(slime-execute-tests): Show the test name to the echo area.
(slime-fuzzy-choices-buffer): Added kill-buffer-hook to the completion buffer to slime-fuzzy-abort, so we get out from the completion mode and key maps when the completion buffer is closed.
(slime-target-buffer-fuzzy-completions-map): Fix a dug I introduced when applying levente's patch.
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
(slime-search-buffer-package): Fix.
(slime-find-buffer-package): Simplify.
(slime-find-buffer-package): Handle #. forms.
(slime-accept-process-output): The timeout arg can be nil. Handle that case.
(slime-insert-presentation): Honor slime-repl-enable-presentations. Presentations kill SLDB and the inspector in Emacs 20 (besides being troublesome GC-wise).
(slime-init-command): Send a single form.
(unwind-to-previous-sldb-level): New test.
(sldb-activate): Get debug-info from the correct thread. Fixes bug reported by Dan Weinreb <email@example.com>.
(slime-presentation-syntax-table): New. (slime-add-presentation-properties): Install it in a syntax-table text property, so that #<...> is balanced in a presentation. (slime-remove-presentation-properties): Remove the text property. (slime-repl-mode): Respect the syntax text properties of presentations in REPL buffers.
(slime-highlight-compiler-notes): New variable. (slime-compilation-finished): Only highlight notes when slime-highlight-compiler-notes is non-NIL.
*** empty log message ***
*** empty log message ***
(slime-goto-first-note-after-compilation): New variable. This controls the behaviour of (next|prev)-note immediatly after a slime-compile-and-load-file. (slime-compilation-just-finished): New variable. (slime-compilation-finished): Update slime-compilation-finished. (slime-next-note, slime-previous-note): Respect slime-compilation-just-finished. (slime-autodoc-use-multiline-p): Specify the type. (slime-repl-grab-old-input): Typo in docstring.
*** empty log message ***
*** empty log message ***
*** empty log message ***
sbcl single-stepper
(slime-rex): Update docstring. (slime-eval, slime-eval-async): Added new REASON parameter sent along with :abort message.
*** empty log message ***
(slime-insert-xrefs): Specify which file the item is in (when that information is available).
Fixup (push|pop)-directory and (push|pop)-package.
Added disconnect, a new repl shortcut.
(slime-open-inspector): Added a slime-part-number property to the topline so that you can slime-inspector-copy-down the object being inspected. There are some cases where we have an object in the inspector and we'd like to dump it to the repl but we can't get at it through other means (like in back-traces).
REPL history with paredit &al, stepping in the REPL with SBCL.
(slime-repl-return-behaviour): Fix the defcustom type, so Emacs 21.3 does not signal an error when creating a customization buffer containing this variable.
(slime-ensure-presentation-overlay): Provide a help-echo for presentations, showing the mouse bindings. (slime-presentation-around-click): New function. (slime-copy-or-inspect-presentation-at-mouse) (slime-inspect-presentation-at-mouse) (slime-copy-presentation-at-mouse) (slime-describe-presentation-at-mouse) (slime-pretty-print-presentation-at-mouse): New commands. (slime-copy-presentation-at-point): Removed (misnomer). (slime-presentation-map): Bind mouse-2 to slime-copy-or-inspect-presentation-at-mouse, so the right thing is done in REPL buffers and in Inspector and Debugger buffers. (slime-menu-choices-for-presentation): Use the new commands here instead of inline lambdas. (sldb-inspect-in-frame): Use slime-read-object here, so if point is in a presentation in the debugger buffer, inspect it immediately just like slime-inspect does. (slime-inspect-presented-object): Removed. (slime-inspect): Don't expect that "swank:init-inspector" is already part of the form. Accept an optional arg "no-reset". (slime-read-object): Don't add "swank:init-inspector" to the read form; slime-inspect now adds it.
(slime-inspector-insert-ispec): Mark up all values of inspected parts as presentations. (sldb-insert-locals): Mark up the values of local variables as presentations. (slime-remove-presentation-properties): Fix for read-only buffers. (slime-copy-presentation-at-point): Make it work when the current buffer is not the REPL buffer. (slime-menu-choices-for-presentation): Describe into a separate buffer, not the REPL. New menu item, pretty-print. (slime-presentation-expression): Handle presentation ids that are not numbers. (slime-inspect-presented-object): Don't reset the inspector if already in the inspector buffer.
(slime-parse-extended-operator-name/apply): New. (slime-extended-operator-name-parser-alist): Add it to the alist.
(slime-accept-process-output-supports-floats): New variable to cache the result of calling accept-process-output with a float as timeout argument. Not all Emacs version support that and if the call raises an error we know that it's not supported. (slime-accept-process-output): Use it.
Test disconnecting.
(slime-restart-inferior-lisp-aux): Remove the interactive spec.
(slime-find-filename-translators): CL:MACHINE-INSTANCE can return nil. Silently accept that case for now.
(slime-enclosing-operator-names): For nesting levels without operator, record nil. (slime-completions-for-keyword): New argument arg-indices. (slime-contextual-completions): Pass all enclosing operators and arg-indices to slime-completions-for-keyword.
(slime-edit-definition): Invoke the slime-edit-definition-fall-back-function also in the case where find-definitions-for-emacs returns an error message. (slime-edit-definition-fallback-function): Fix typo (find-tag rather than find-tags).
(slime-shared-lisp-mode-hook): New function, factored out from slime-lisp-mode-hook. (slime-lisp-mode-hook): Use it here. (slime-scheme-mode-hook): New function, use slime-shared-lisp-mode-hook. (slime-setup): If scheme-mode is one of the slime-lisp-modes, install our hook.
(test compile-defun): Add a test for #. reader macro at toplevel. (slime-run-one-test): New command. (sldb-activate): Recreate the sldb buffer if it doesn't exits. (Can happen if someone kills the buffer manually.) (slime-wait-condition): Add a dummy to slime-stack-eval-tags while waiting so that the SLDB enters a recursive edit.
(slime-echo-arglist): Simplify, just use slime-autodoc.
(slime-parse-extended-operator-name): Don't move point; fixes infinite loop.
(slime-parse-extended-operator-name) (slime-enclosing-operator-names): Fix the case when point is within the operator.
(slime-parse-extended-operator-name/cerror): Handle cerror and change-class with :make-instance. (slime-extended-operator-name-parser-alist): Handle change-class.
(slime-parse-extended-operator-name) (slime-parse-extended-operator-name/make-instance) (slime-parse-extended-operator-name/defmethod): New functions, factored out from slime-enclosing-operator-names. (slime-parse-extended-operator-name/cerror): New function. (slime-extended-operator-name-parser-alist): New variable. (slime-enclosing-operator-names): Use them here.
(slime-goto-definition): If all definitions of a name have the same location, go there directly rather than presenting an xref buffer.
(slime-get-temp-buffer-create): New keyword REUSEP which indicates whether an already-existing buffer named like the buffer to be created should be reused, i.e. not killed, then freshly created. Update docstring accordingly. (slime-with-output-to-temp-buffer): Make &optional arg MODE an &key keyword arg. Add REUSEP keyword. (slime-macroexpansion-minor-mode-map): Make remapped `undo' update highlighted edits in the macroexpansion buffer. (slime-eval-macroexpand-in-place): Update highlighted edits when macroexpanding in-place. (slime-eval-macroexpand): Reuse macroexpansion buffer if it exists already to preserve `undo' functionality.
(slime-use-autodoc-mode): Fix typo in docstring. (slime-use-highlight-edits-mode): New variable, analogous to SLIME-USE-AUTODOC-MODE. (slime-setup, slime-lisp-mode-hook): Make above variable work. Also, activates the HIGHLIGHT-EDITS-MODE in proper way (thus avoiding the nasty "Toggling ... off; better pass an explicit argument." message.) Fix typo in comment about communication protocol.
*** empty log message ***
*** empty log message ***
(slime-repl-return-behaviour): New variable which controls slime-repl-return's heaviour. (slime-repl-return): Respect slime-repl-return-behaviour.
(slime-repl-return): Only send repl input if point is past a complete form.
(slime-macroexpansion-minor-mode-map): Rebind 'undo' to set buffer-read-only temporarily to t.
* slime.el (slime-autodoc): Fix reference to unbound variable.
(slime-find-filename-translators): Use assof-if instead of assoc-default for XEmacs compatibility. (slime-show-note-counts): Don't show the highlighting bit as it spills of the screen. (slime-highlight-notes): Use with-temp-message. (with-temp-message): Define it for XEmacs. (slime-beginning-of-symbol): Use eq instead of char-equal as char-equal signals an error at the beginning of a buffer.
(slime-fontify-string): Use slime-insert-propertized rather than set-text-properties or propertize.
(slime-fontify-string): Use set-text-properties, not propertize, for Emacs 20 compatibility. Patch by Matthew D. Swank
(slime-find-filename-translators): Use string-match.
(slime-macroexpansion-minor-mode): Make it Emacs 20 compatible. (slime-init-command): Don't translate filenames since the new scheme doesn't work without a connection. (slime-to-lisp-filename,slime-from-lisp-filename): Remove some redundancy.
(slime-repl-mode): Enable autodoc-mode if slime-use-autodoc-mode is true.
(slime-recently-visited-buffer): Ignore internal buffers (starting with a space), to avoid selecting the *slime-fontify* buffer. Reported by Andreas Fuchs.
(slime-enclosing-operator-names): Fix last change.
(slime-enclosing-operator-names): Handle forms similar to make-instance (make-condition, error, etc.), to get extra keywords based on the condition class.
(slime-make-tramp-file-name): If emcas' tramp has tramp-multi-methods then pass the method parameter to tramp-make-tramp-file-name, otherwise don't. (slime-create-filename-translator): Use slime-make-tramp-file-name.
(slime-hyperspec-lookup): Don't get confused by a cl: or common-lisp: package prefix.
(slime-enclosing-operator-names): Fix for situation when point is at end of buffer, as it happens often in the REPL.
(slime-fontify-string): Fix for arguments spanning multiple lines. (slime-autodoc-message-dimensions): New. (slime-autodoc-thing-at-point): Use it here to either ask for a one-line or a nicely formatted multi-line arglist. (slime-enclosing-operator-names): Handle linebreaks.
(slime-background-activities-enabled-p): Allow "background activities" in sldb-mode. (slime-autodoc-message-ok-p): Allow autodoc in sldb-mode. (sldb-mode-syntax-table): New variable. (sldb-mode): Enable autodoc-mode when slime-use-autodoc-mode is true. Use sldb-mode-syntax-table to make #<...> balance like parentheses. This enables autodoc-mode to match #<unreadable> actual arguments in the backtraces with formal arguments of the function. (slime-beginning-of-symbol, slime-end-of-symbol): Handle es::|caped| symbols. (slime-enclosing-operator-names): Use syntax table to check whether we are at the beginning of a balanced expression.
Allow swank:ed-in-emacs to take cons function names. (This adds some ambiguity with conses representing filenames and positions)
* slime.el (slime-qualify-cl-symbol-name): Strip leading colon from package names for qualifying symbols. (slime-call-defun): New command. (slime-keys): Bind it to C-c C-y. (slime-easy-menu): Show it in the menu. * slime.el (slime-autodoc-use-multiline-p): New defcustom. (slime-autodoc-message): Use it here. Fix bug that autodoc messages exceeding one line could not be overwritten by later autodoc messages. (slime-autodoc-pre-command-refresh-echo-area): Use message rather than slime-background-message.
(slime-ed): Handle (FILENAME :charpos CHARPOS).
(slime-autodoc-pre-command-refresh-echo-area): Show the last autodoc message again (movement commands clear it); technique to avoid flickering, taken from eldoc. (slime-autodoc-mode): Install it as a pre-command-hook. (slime-autodoc-last-message): New variable. (slime-autodoc-message): New function. (slime-autodoc): Use them here. (slime-autodoc-message-ok-p): OK to overwrite an autodoc message. (slime-handle-indentation-update): Also update scheme-indent-function if slime-lisp-modes contains scheme-mode.
(slime-space): First insert the space, then obtain information. (slime-fontify-string): Also handle argument highlights. (slime-enclosing-operator-names): As a secondary value, return a list of the indices of the arguments to the nested operator. (slime-contextual-completions): Use changed interface of slime-enclosing-operator-names. (slime-function-called-at-point): Removed. (slime-function-called-at-point/line): Removed. (slime-autodoc-thing-at-point): New. (slime-autodoc): Re-implement with slime-enclosing-operator-names instead of slime-function-called-at-point. (slime-echo-arglist): Pass the argument indices to arglist-for-echo-area. (slime-autodoc-message-ok-p): Autodoc is also OK in REPL buffers.
(slime-goto-location-buffer): Avoid calling the expensive function find-file-noselect when we are already in the right buffer. (slime-autodoc): Use :print-right-margin here to make use of the whole width of the echo area for arglist display.
(slime-to-lisp-filename): Call expand-file-name before passing the filename to the to-lisp function.
(slime-note-counts-message): New variable. (slime-show-note-counts): Store the note counts message for later use. (slime-highlight-notes, slime-list-compiler-notes): Show a progress message, keeping note counts visible.
(slime-system-history): New variable. (slime-read-system-name): Use a separate history list for ASDF system names.
* slime.el: (slime-create-filename-translator): use the tramp methods for dissecting and building filenames.
(slime-filename-translations): Typo in example. (slime-create-filename-translator): Typo in generated lambdas.
*** empty log message ***
(slime-translate-to-lisp-filename-function): removed. (slime-translate-from-lisp-filename-function): removed. (slime-filename-translations): New variable. (slime-to-lisp-filename): Rewrote to search through available transalations. (slime-from-lisp-filename): idem. (slime-create-filename-translator): New function. (slime-add-filename-translation): New function.
(slime-eval-macroexpand-inplace): Indent the inserted macroexpansion.
(slime-macroexpansion-minor-mode): Attempt to map -inplace functions to the same keys as their regular contureparts in slime-mode-map. (slime-eval-macroexpand-inplace): New function. (slime-macroexpand-1-inplace): New function. (slime-macroexpand-all-inplace): New function.
Replace some occurrences of *VARNAME* with VARNAME which is more idiomatic Elisp.
(slime-lisp-host): New variable. Replace all references to "127.0.0.1" with the variable.
(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.
(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.
(slime-expand-abbreviations-and-complete): Scroll the completions buffer if the TAB key is pressed another time, like Emacs minibuffer completion does.
*** empty log message ***
Test to see what UseNewInfoFmtStrings=yes does.
(slime-enclosing-operator-names): Represent MAKE-INSTANCE calls by (:make-instance "CLASS-NAME"), handle DEFMETHOD too.
(slime-complete-form): Indent the inserted template.
(slime-fontify-string): New. (slime-echo-arglist, slime-arglist, slime-autodoc): Use it here to fontify echo-area arglists.
Patch from Lu�s Oliveira. Extend slime-echo-arglist to display initargs and initforms when make-instance is detected. * 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" . "<class-name>") 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.
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.
(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. (slime-selector ?r): Call slime instead of slime-start to pick up the usual defaults. (slime-init-command): Updated for the new loader.
(slime-open-stream-to-lisp): Inherit the process-coding-system from the current connection. From Harald Hanche-Olsen.
(slime-highlight-edits-compile-hook): Remove overlays also from surrounding whitespace. (slime-highlight-edits): Save match data. (slime-only-whitespace-p): New function.
Make highlighting of modified text a minor mode. Also use after-change-functions instead of rebinding all self-inserting keys. (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.
(slime-self-insert-command): Got rid of message about setting up face and skipping edit-hilights when in a comment.
Be more careful when adding slime-self-insert-command bindings
slime-selector tweak, robuster printing
(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.
(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.
(slime-find-coding-system): Use check-coding-system only if it's actually fbound.
(slime-connect): Use slime-net-coding system if the optinal coding-system was not supplied. From Marco Monteiro.
(slime-compile-file): Call 'check-parens before compiling. (slime-find-coding-system): Return nil if the coding system isn't valid instead of signalling an error. (slime-repl-history-file-coding-system): Use slime-find-coding-system find the default.
(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.
(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.
(slime-eval-macroexpand): Use lisp-mode (and font-lock-mode) when dispaying the expansion. Suggested by Jan Rychter.
(slime-set-connection-info): Generate a new connection name only if the implementation-name and the inferior-lisp-name are different.
(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.
(slime-eval): Ensure that the connection is open before waiting for input.
* slime.el (slime-repl-history-size, slime-repl-history-file): Use defcustom to declare the variables.
(slime-start-swank-server): Avoid comint-send-input here as it seems to trigger a bug in ansi-color-for-commit-mode.
(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).
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. From Stefan Kamphausen.
(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.
(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 argumenets 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 implemetantion. (slime-symbolic-lisp-name): Deleted. And updated all the functions which pass 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.
(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.
(slime-setup-command-hooks): Make after-change-functions a buffer-local variable; it's by default global in XEmacs.
(slime-io-speed-test): New command. (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-open-stream-to-lisp): Fix parens. The coding system should also be set if presentations are disabled.
(slime48): New Command.
(slime-repl-return) don't copy presentation to input if already in input area.
(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.
* 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...
(slime-presentation-expression): Remove handling of cons presentation-ids.
*** empty log message ***
*** empty log message ***
(slime-repl-insert-result): Add slime-repl-result-face face. (slime-repl-update-banner): Avoid insert extra newlines.
(slime-current-output-id): Remove this ugly kludge. (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.
(slime-enable-evaluate-in-emacs): Resurrected. (slime-dispatch-event): Respect slime-enable-evaluate-in-emacs for messages :eval-no-wait and :eval.
*** empty log message ***
(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.
(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 it's 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.
(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.
*** empty log message ***
(slime-dispatch-event): Handle new messages :y-or-n-p, :background-message. (slime-y-or-n-p): New.
*** empty log message ***
(slime-repl-mode-hook): Show the SLIME menu in the REPL too.
(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-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.
(slime-presentation-menu): When an object is no longer recorded, remove text properties from the presentation.
(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.
* 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. * 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.
*** empty log message ***
(slime-mark-presentation-end): Really remove the presentation-start entry from the hash table.
(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.
* slime.el (substring-no-properties): Fix to handle non-zero start argument correctly. * 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.
*** empty log message ***
(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.
(slime-read-object): Handle ids that are conses. Patch by "Thas" on #lisp.
(undo-in-progress): Define for XEmacs compatibility. Reported by Friedrich Dominicus.
(slime-presentation-menu, slime-presentation-menu) (slime-inspect-presented-object): Quote the presentation id, as it can be a cons.
(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-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-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-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.
* slime.el (slime-dispatch-event): New events :presentation-start, :presentation-end for bridge-less presentation markup.
(slime-set-default-directory): Fix typo in doc string.
(slime-goto-location-buffer): Put "SLIME Source Form" buffer into Lisp mode. (slime-input-complete-p): Skip over strings too.
(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.
(slime-compile-file): Send the coding system if the buffer local variable `slime-coding' is bound.
(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. (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.
*** empty log message ***
From Alexey Dejneka: fix "pgk" typo.
Minor changes to ED-IN-EMACS / slime-ed. Now (push 'swank:ed-in-emacs sb-ext:*ed-functions*) works more-or-less as required. (We don't obey the constraint that file-error conditions be signalled on file system errors, but...)
(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.
(slime-background-activities-enabled-p): Allow background stuff in repl-mode buffers too.
*** empty log message ***
(slime-first-change-hook): Use slime-background-activities-enabled-p.
(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): Don't do anything if slime-mode is disabled.
Distinguish macro and special operators from functions.
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
(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 :-)
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
(slime-property-bounds): Factored out this common part of slime-repl-grab-old-{input,output}. (slime-read-object): Avoid inline CL code.
(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.
(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.
If ~/.slime-secret exists then send the contents to Lisp as authentication.
Minor comment tweaks.
* slime.el (slime-inspector-reinspect): New function which reinspects the current object. (slime-inspector-mode-map): Bind slime-inspector-reinspect to g.
(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 lookuping 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.
(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.)
(slime-selector): Discard input after sleeping.
(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.
(slime-net-coding-system): Even more fixes to make it with mule-XEmacs.
(slime-net-coding-system): More fixes for non-mule-XEmacsen.
(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. (slime-set-connection-info): Initialize them. (find-coding-system, check-coding-system, process-coding-system): Dummy functions for non-mule-XEmacsen.
(slime-xref-mode): Summarise the most important bindings in the mode description.
(sldb-get-buffer): Initialize the buffer local variables slime-buffer-connection and slime-current-thread when create a fresh buffer.
(slime-goto-definition): Handle :error locations here before any window/buffer changes are made.
(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.
(slime-selector): Removed unneeded "the" prefixes in descriptions of what the selector methods do.
(slime-complete-symbol*-fancy): Now nil by default.
(slime-run-when-idle): New function to hide Emacs/XEmacs differences. See Steven E. Harris' message from 15 Mar 2005. (slime-process-available-input): Use it.
(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.
Fix to slime-edit-value-callback to disable slime-temp-buffer-mode. Otherwise 'q' dismisses the buffer.
(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.
Fix from Antonio Menezes Leitao.
(slime-toggle-trace-fdefinition): If there is no symbol at point then prompt for one.
Tweaks to new symbolic lisp names.
Added symbolic lisp names.
Added slime-complete-form to the menu.
(slime-inferior-lisp): Don't display the buffer. Let callers do that. (slime): Display the inferior buffer. (slime-net-sentinel): Always print a message when the lisp disconnects. (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 dead windows of dead processes. (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.
(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 handeled 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.
(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.
(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.
(slime-complete-form): Emacs 20 compatibility fix. (slime-repl-update-banner): Remove animation stuff. (slime-startup-animation): Deleted.
(slime-complete-form): New command. (slime-keys): Bind C-c C-s to slime-complete-form rather than slime-insert-arglist.
(slime-dispatch-event): Added the :evaluate-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.
Require the timer package explicitly.
(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.
(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" will first match find-if-not if it occurs earlier in the file. Patch from Bryan O'Connor.
(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 continuatons. (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.
(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.
(slime-header-line-p): Customize variable to enable/disable the header-line in the REPL.
(slime-complete-symbol*-fancy): Now defaults to 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.
(slime-complete-symbol*-fancy): New variable to enable extra bells and whistles with slime-complete-symbol*. Currently controls whether to use arglists semantically. (slime-complete-symbol*): Avoid displaying an arglist when the minibuffer is active.
(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).
slime.el (slime-complete-symbol*): Maybe insert closing parenthesis or space after symbol completion has finished.
(slime-changelog-date): Return nil if the ChangLog file doesn't exits. (slime-repl-update-banner): Write "ChangLog file not found" if the ChangeLog doesn't exist.
(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.
(slime-conservative-indentation): The default is now nil. Suggested by Travis Cross. (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.
(slime-complete-symbol*): Bind comint-completion-addsuffix so unambiguous or exact completion closes the string automatically.
(slime-keys): Bind M-* to slime-pop-find-definition-stack for compatibility with standard Emacs convention.
(slime-lisp-modes): New variable to make C-c C-k customizable and usable in scheme-mode. (slime-compile-file): Use it.
(slime-output-string): Remove debugging stuff.
(slime-edit-definition-other-frame): New function. (slime-edit-definition): Switch to the other frame if the `where' is 'frame.
(slime-repl-grab-old-input): Remove the 'old-input text-property from the copied text.
(slime-repl-grab-old-input): Append the old input to the current input by default. If the new `replace' argument and is true, replace the current input.
(slime-repl-mode-map): Bind <home> to slime-repl-bol. Suggested by Chris Capel.
(slime-global-variable-name-p): Return true for names of constants like +foo+.
(slime-repl-clear-buffer, slime-repl-clear-output): Fix docstrings.
(slime-global-variable-name-p): Allow optional "<package-name>:" or "<package-name>::". (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.
(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): Add argument to clear the input at the end of the history. (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.
(slime-net-coding-system): Use find-coding-system in XEmacs. coding-system-p means something different here.
(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-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.
(slime-repl-mode-map): Add slime-load-file on `C-c C-l'.
(slime-repl-mode-map): Add C-up and C-down to move through history. Consistent with comint-mode.
(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.
(slime-insert-xrefs): one-line-ify the label. From Matthew Danish. (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.
(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. The REPL commands ,quit and ,sayoonara are now distinct. Previously Quit killed all Lisps an all buffers. The 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-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.
(slime-reader-conditional-face): New face.
(slime-activate-font-lock-magic): Add support XEmacs. From Raymond Toy.
call slime-start-lisp in ,restart-inferior-lisp with the right number of args
(slime-eval-feature-conditional): Convert AND, OR, and NOT to lowercase keywords. (slime-net-read3): Silly optimization: use give char-after the offset as argument to avoid save-excursion and forward-char.
* 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.
(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.
(slime-kill-all-buffers): More regexp kludges. From Bill Clementson.
(slime-dispatch-event): Accept stepping flag. (slime-space): Call slime-message in the right buffer, so that after-command hooks are added in the right buffer. Reported by Juho Snellman. (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-init-command): New function to send the command to load swank. Havering 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.
(slime-repl-defparameter): Change default value to "*".
slime-show-source-location: Use `push-mark' instead of `set-mark-command'.
(slime-show-source-location): Call `set-mark-command' to push the source position onto the global mark ring.
(slime-message): Use slime-typeout-frame if available.
(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.
(slime): Arguments should be optional.
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 just disconnect and reconnect or start a new process. (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.
(slime-set-connection-info): Print the words of encouragement here after all the other asynchronous initialization.
(slime-set-connection-info): Hide the *inferior-lisp* after we now Lisp's pid. (slime-find-buffer-package): We need to preserve the case for things like (:in-package "foo"), so return "\"foo\"".
(define-slime-dialect): New macro to make invoking different command lines easier. (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. (slime-browse-classes, slime-browse-xrefs): New commands to browse class hierarchies and xref graphs in a tree widget. By Rui Patroc�nio.
(slime-start-and-load): Only start SLIME is if it is not running.
(slime-start-and-load): Take arguments so that the function can be called non-interactively. (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.
(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 extras): New function. (sldb-show-frame-source): New non-interactive version of sldb-show-source. (sldb-show-source): Use it. (sldb-break-on-return, sldb-break): New commands. (slime-beginning-of-symbol, slime-symbol-end-pos): 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.
(slime-inspector-label-face, slime-inspector-value-face, slime-inspector-action-face, slime-inspector-type-face): These faces now inherit from similar font-lock-<whatever> faces. (slime-open-inspector): Use slime-inspector-value-face for values.
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 <position fixnum> <string> <delta fixnum>) Got to position, then search for string, then move delta. To support upcoming source recording for openmcl debugging.
2004-09-13 Marco Baringer <email@example.com> * 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. * swank-sbcl.lisp (swank-mop, slot-definition-documentation, function-name): Implement. * swank-openmcl.lisp (swank-mop, function-name): Implement. (arglist): Implement for function objects.
Add some docstrings.
(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. (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 again. It's now almost a line.
(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.
Adding directory argument to swank-compile-string.
(slime-pretty-package-name): Fix last cond clause.
(slime-space): Use slime-message instead of slime-background-message. This displays multi-line arglists. (sldb-mode-map): Bind 'C' to sldb-inspect-condition.
(slime-find-buffer-package): Use "%s", not "%S", to avoid ugly escape characters, if the package name contains dots.
(sldb-eval-in-frame): Print result to the REPL when a prefix argument is given. Added pull-down menus for SLDB and the REPL.
(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--". Reported by Sundar Narasimhan.
(slime-thread-attach): Fixed misnamed function call.
*** empty log message ***
(slime-mode-map, slime-repl-mode-map, slime-repl-read-mode-map): Remove the bind 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.)
(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. (slime-current-package): Deal with narrowing.
(slime-search-suppressed-forms): Also consider #+ after an opening paren.
(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.
(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-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.
(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-first-change-hook): Add `save-match-data' to avoid breaking e.g. query-replace. Also added `save-excursion' just to be safe.
(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.
(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.
Putting in fix for Allegro tests. (Thought I checked this in the other day.)
(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 func