The attached patch creates the option of having the naked Tab key do both indent and autocomplete as it currently does in the repl. I moved and renamed slime-repl-indent-and-complete-symbol to slime-indent-and-complete-symbol since it is not repl specific.
Also, I have added more default options for the typeout frame--specifically it now has a default width, and moves the typeout frame to the upper right.
-- eblood
Index: slime.el =================================================================== RCS file: /project/slime/cvsroot/slime/slime.el,v retrieving revision 1.309 diff -u -w -r1.309 slime.el --- slime.el 8 Jun 2004 23:58:09 -0000 1.309 +++ slime.el 9 Jun 2004 04:44:28 -0000 @@ -135,6 +135,10 @@ (defvar slime-kill-without-query-p t "If non-nil, kill Slime processes without query when quitting Emacs.")
+(defvar slime-tab-indent-and-complete-p t + "Whether the TAB key should do both an indent and autocomplete in the +Slime minor mode.") + (defvar slime-sbcl-manual-root "http://www.sbcl.org/manual/" "*The base URL of the SBCL manual, for documentation lookup.")
@@ -553,7 +557,10 @@ (define-key inferior-slime-mode-map [(control return)] 'inferior-slime-closing-return) (define-key inferior-slime-mode-map - [(meta control ?m)] 'inferior-slime-closing-return)) + [(meta control ?m)] 'inferior-slime-closing-return) + (when slime-tab-indent-and-complete-p + (slime-define-key "\C-i" 'slime-indent-and-complete-symbol + :inferior t)))
(slime-init-keymaps)
@@ -1033,6 +1040,18 @@ (when (buffer-live-p (get-buffer buffer-name)) (kill-buffer buffer-name)))
+(defun slime-indent-and-complete-symbol () + "Indent the current line and perform symbol completion. +First indent the line. If indenting doesn't move point complete the +symbol." + (interactive) + (let ((pos (point))) + (lisp-indent-line) + (when (and (= pos (point)) + (save-excursion + (re-search-backward "\(\s_\|\sw\)+\=" nil t))) + (slime-complete-symbol)))) + (defmacro slime-with-rigid-indentation (level &rest body) "Execute BODY and then rigidly indent its text insertions. Assumes all insertions are made at point." @@ -2330,18 +2349,6 @@ (insert "\n") (lisp-indent-line)))
-(defun slime-repl-indent-and-complete-symbol () - "Indent the current line and perform symbol completion. -First indent the line. If indenting doesn't move point complete the -symbol." - (interactive) - (let ((pos (point))) - (lisp-indent-line) - (when (and (= pos (point)) - (save-excursion - (re-search-backward "\(\s_\|\sw\)+\=" nil t))) - (slime-complete-symbol)))) - (defun slime-repl-delete-current-input () (delete-region slime-repl-input-start-mark slime-repl-input-end-mark))
@@ -2490,7 +2497,7 @@ ("\C-c:" 'slime-interactive-eval) ("\C-c\C-e" 'slime-interactive-eval) ;("\t" 'slime-complete-symbol) - ("\t" 'slime-repl-indent-and-complete-symbol) + ("\t" 'slime-indent-and-complete-symbol) (" " 'slime-space) ("\C-\M-x" 'slime-eval-defun) ("\C-c\C-o" 'slime-repl-clear-output) @@ -3565,7 +3572,8 @@ "The current typeout window.")
(defvar slime-typeout-frame-properties - '((height . 16) (minibuffer . nil) (name . "SLIME Typeout")) + '((width . 40) (height . 10) (minibuffer . nil) + (left . -10) (top . 10) (name . "SLIME Typeout")) "The typeout frame properties (passed to `make-frame').")
(defun slime-typeout-active-p () @@ -3637,7 +3645,7 @@ (slime-complete-restore-window-configuration)) ((memq this-command '(self-insert-command slime-complete-symbol - slime-repl-indent-and-complete-symbol + slime-indent-and-complete-symbol backward-delete-char-untabify backward-delete-char scroll-other-window))
Eric Blood eblood@winkywooster.org writes:
The attached patch creates the option of having the naked Tab key do both indent and autocomplete as it currently does in the repl. I moved and renamed slime-repl-indent-and-complete-symbol to slime-indent-and-complete-symbol since it is not repl specific.
Also, I have added more default options for the typeout frame--specifically it now has a default width, and moves the typeout frame to the upper right.
Thank you for the patch.
I don't like to change the binding for TAB. It would be irritating for me, because the behavior would be different in Emacs Lisp buffers. I also heard that some people prefer M-TAB for completion in the REPL buffer, because it works consistently everywhere. I only changed the name to slime-indent-and-complete-symbol; rebinding TAB to that function is as easy as setting slime-tab-indent-and-complete-p, so I decided to leave the variable out.
Helmut.
Eric Blood eblood@winkywooster.org writes:
Also, I have added more default options for the typeout frame--specifically it now has a default width, and moves the typeout frame to the upper right.
[...]
(defvar slime-typeout-frame-properties
- '((height . 16) (minibuffer . nil) (name . "SLIME Typeout"))
- '((width . 40) (height . 10) (minibuffer . nil)
- (left . -10) (top . 10) (name . "SLIME Typeout")) "The typeout frame properties (passed to `make-frame').")
I just rolled these back: the `name' was interacting badly with X properties (didn't pickup my Emacs background colour), the width is narrower than Lisp what will be formatting messages for, and the frame position seemed like somewhere that'd be in the way and require manual window-moving anyhow.
Just defaults of course.
-Luke