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))