Index: slime.el
===================================================================
RCS file: /project/slime/cvsroot/slime/slime.el,v
retrieving revision 1.425
diff -r1.425 slime.el
203a204,215
> (defcustom slime-do-indent-complete t
>   "Have slime-indent do symbol completion when the line is already indented
> property and the point is next to a symbol."
>   :group 'slime-mode
>   :type 'boolean)
> 
> (defcustom slime-show-arglist-on-indent t
>   "Have slime-indent show arglists when the line is already indented and
> the point isn't next to a symbol."
>   :group 'slime-mode
>   :type 'boolean)
> 
1018,1023c1035,1043
< (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)))
---
> (defun slime-indent (&optional do-complete show-arglist)
>   "Indent the current line and perform symbol completion and arglist help.
> First indent the line. If indenting doesn't move the point, try to
> complete the current symbol. If there's no symbol at the point, show the
> arglist for the most recently enclosed macro or function."
>   (interactive)
>   (let ((pos (point))
>         (do-complete (or do-complete slime-do-indent-complete))
>         (show-arglist (or show-arglist slime-show-arglist-on-indent)))
1026,1029c1046,1055
<     (when (and (= pos (point))
<                (save-excursion 
<                  (re-search-backward "[^ \n\t\r]+\\=" nil t)))
<       (slime-complete-symbol))))
---
>     (when (= pos (point))
>       (if (or (save-excursion
>                 (backward-char)
>                 (or (looking-at " ") (looking-at (char-to-string ?\t))))
>               (save-excursion 
>                 (not (re-search-backward "[^ )\n\t\r]+\\=" nil t))))
>           (when show-arglist
>             (slime-echo-arglist-for-enclosing))
>           (when do-complete
>             (slime-complete-symbol))))))
4121,4129c4161
<         (let ((names (slime-enclosing-operator-names)))
<           (when names
<             (slime-eval-async 
<              `(swank:arglist-for-echo-area (quote ,names))
<              (lexical-let ((buffer (current-buffer)))
<                (lambda (message)
<                  (if message
<                      (with-current-buffer buffer
<                        (slime-message "%s" message)))))))))
---
>         slime-echo-arglist-for-enclosing)
4149a4182,4191
> (defun slime-echo-arglist-for-enclosing ()
>   (let ((names (slime-enclosing-operator-names)))
>     (when names
>       (slime-eval-async 
>        `(swank:arglist-for-echo-area (quote ,names))
>        (lexical-let ((buffer (current-buffer)))
>          (lambda (message)
>            (if message
>                (with-current-buffer buffer
>                  (slime-message "%s" message)))))))))
