From: Stefan Monnier Date: Tue, 20 Apr 2010 16:37:31 +0000 (-0400) Subject: (lisp-completion-at-point): Complete around point. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~470 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6e610c726148a9c931a9efcab89368a1b7beecac;p=emacs.git (lisp-completion-at-point): Complete around point. I.e. include text after point in the completion region. Also, return nil when we're not after/in a symbol. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 869907f2ae7..030d2f4fed9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2010-04-20 Stefan Monnier + * emacs-lisp/lisp.el (lisp-completion-at-point): Complete around point. + I.e. include text after point in the completion region. + Also, return nil when we're not after/in a symbol. + * international/mule-cmds.el (view-hello-file): Don't fiddle with the default enable-multibyte-characters. diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index da482e715b1..e6b9af95a73 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -631,12 +631,11 @@ considered." (defun lisp-completion-at-point (&optional predicate) ;; FIXME: the `end' could be after point? - (let* ((end (point)) + (let* ((pos (point)) (beg (with-syntax-table emacs-lisp-mode-syntax-table (save-excursion (backward-sexp 1) - (while (= (char-syntax (following-char)) ?\') - (forward-char 1)) + (skip-syntax-forward "'") (point)))) (predicate (or predicate @@ -656,12 +655,21 @@ considered." ;; Maybe a `let' varlist or something. nil ;; Else, we assume that a function name is expected. - 'fboundp)))))) - (list beg end obarray - :predicate predicate - :annotate-function + 'fboundp))))) + (end + (unless (or (eq beg (point-max)) + (member (char-syntax (char-after beg)) '(?\( ?\)))) + (save-excursion + (goto-char beg) + (forward-sexp 1) + (when (>= (point) pos) + (point)))))) + (when end + (list beg end obarray + :predicate predicate + :annotate-function (unless (eq predicate 'fboundp) - (lambda (str) (if (fboundp (intern-soft str)) " ")))))) + (lambda (str) (if (fboundp (intern-soft str)) " "))))))) ;; arch-tag: aa7fa8a4-2e6f-4e9b-9cd9-fef06340e67e ;;; lisp.el ends here