emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 76e297c: (thing-at-point 'list) return nil if no li


From: Tino Calancha
Subject: [Emacs-diffs] master 76e297c: (thing-at-point 'list) return nil if no list at point
Date: Thu, 3 Nov 2016 11:38:58 +0000 (UTC)

branch: master
commit 76e297c15f6312a83599aab216be0396e9aac5c5
Author: Tino Calancha <address@hidden>
Commit: Tino Calancha <address@hidden>

    (thing-at-point 'list) return nil if no list at point
    
    * lisp/thingatpt.el (thing-at-point-bounds-of-list-at-point):
    Check first if we are at the beginning of a top-level sexp (Bug#24627).
    If point is inside a comment or string, look for a list out of the
    comment/string.
    Escape '[' in doc string.
    * test/lisp/thingatpt-tests.el (thing-at-point-bug24627): Update
    expected test result as pass.
---
 lisp/thingatpt.el            |   25 ++++++++++---------------
 test/lisp/thingatpt-tests.el |    1 -
 2 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 6d1014b..e423630 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -219,22 +219,17 @@ The bounds of THING are determined by 
`bounds-of-thing-at-point'."
 
 (defun thing-at-point-bounds-of-list-at-point ()
   "Return the bounds of the list at point.
-[Internal function used by `bounds-of-thing-at-point'.]"
+\[Internal function used by `bounds-of-thing-at-point'.]"
   (save-excursion
-    (let ((opoint (point))
-         (beg (ignore-errors
-                (up-list -1)
-                (point))))
-      (ignore-errors
-       (if beg
-           (progn (forward-sexp)
-                  (cons beg (point)))
-         ;; Are we are at the beginning of a top-level sexp?
-         (forward-sexp)
-         (let ((end (point)))
-           (backward-sexp)
-           (if (>= opoint (point))
-               (cons opoint end))))))))
+    (let* ((st (parse-partial-sexp (point-min) (point)))
+           (beg (or (and (eq 4 (car (syntax-after (point))))
+                         (not (nth 8 st))
+                         (point))
+                    (nth 1 st))))
+      (when beg
+        (goto-char beg)
+        (forward-sexp)
+        (cons beg (point))))))
 
 ;; Defuns
 
diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el
index 71d2c88..9d72db4 100644
--- a/test/lisp/thingatpt-tests.el
+++ b/test/lisp/thingatpt-tests.el
@@ -88,7 +88,6 @@ position to retrieve THING.")
 ;; `thing-at-point-bounds-of-list-at-point'.
 (ert-deftest thing-at-point-bug24627 ()
   "Test for http://debbugs.gnu.org/24627 ."
-  :expected-result :failed
   (let ((string-result '(("(a \"b\" c)" . (a "b" c))
                          (";(a \"b\" c)")
                          ("(a \"b\" c\n)" . (a "b" c))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]