From: Dmitry Gutov <dgutov@yandex.ru>
Date: Fri, 19 Sep 2014 03:41:42 +0000 (+0400)
Subject: Fix bug#18265
X-Git-Tag: emacs-25.0.90~2635^2~679^2~266
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3907574bb864de9a9020af11c30ec0b48588fc13;p=emacs.git

Fix bug#18265

* lisp/emacs-lisp/lisp.el (lisp-completion-at-point): Only calculate
`table-etc' when `end' is non-nil.
(lisp-completion-at-point): Move `end' back if it's after quote.
If in comment or string, only complete when after backquote.
---

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 777322dc82c..997071f2dc8 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -2,6 +2,9 @@
 
 	* emacs-lisp/lisp.el (lisp-completion-at-point): Only calculate
 	`table-etc' when `end' is non-nil.
+	(lisp-completion-at-point): Move `end' back if it's after quote.
+	If in comment or string, only complete when after backquote.
+	(Bug#18265)
 
 2014-09-19  Dmitry Gutov  <dgutov@yandex.ru>
 
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 581e9b9504b..a8bad47a90a 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -957,12 +957,14 @@ It can be quoted, or be inside a quoted form."
 		  (save-excursion
 		    (goto-char beg)
 		    (forward-sexp 1)
+                    (skip-chars-backward "'")
 		    (when (>= (point) pos)
 		      (point)))
 		(scan-error pos))))
            ;; t if in function position.
            (funpos (eq (char-before beg) ?\()))
-      (when end
+      (when (and end (or (not (nth 8 (syntax-ppss)))
+                         (eq (char-before beg) ?`)))
         (let ((table-etc
                (if (not funpos)
                    ;; FIXME: We could look at the first element of the list and