emacs-diffs
[Top][All Lists]
Advanced

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

master 40a5df8 2/3: Make `symbol-at-point' work in buffers with no symbo


From: Lars Ingebrigtsen
Subject: master 40a5df8 2/3: Make `symbol-at-point' work in buffers with no symbols
Date: Tue, 19 Jan 2021 23:09:06 -0500 (EST)

branch: master
commit 40a5df81434ce02fba01779256b50976fb74da4f
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make `symbol-at-point' work in buffers with no symbols
    
    * lisp/thingatpt.el (thing-at-point--end-of-symbol): New function
    (bug#14234).
    (symbol): Use it instead of `forward-symbol', because the latter
    will move to the end of the buffer even if there is no symbol
    there.  Instead error out like `forward-sexp' and friends.
---
 lisp/thingatpt.el            |  8 ++++++++
 test/lisp/thingatpt-tests.el | 14 ++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index d3ba941..69c23c3 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -218,6 +218,14 @@ The bounds of THING are determined by 
`bounds-of-thing-at-point'."
 
 (put 'sexp 'beginning-op 'thing-at-point--beginning-of-sexp)
 
+;; Symbols
+
+(put 'symbol 'end-op 'thing-at-point--end-of-symbol)
+
+(defun thing-at-point--end-of-symbol ()
+  "Move point to the end of the current symbol."
+  (re-search-forward "\\(\\sw\\|\\s_\\)+"))
+
 ;;  Lists
 
 (put 'list 'bounds-of-thing-at-point 'thing-at-point-bounds-of-list-at-point)
diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el
index c43c81a..b7c3150 100644
--- a/test/lisp/thingatpt-tests.el
+++ b/test/lisp/thingatpt-tests.el
@@ -146,4 +146,18 @@ position to retrieve THING.")
       (should (thing-at-point-looking-at "2abcd"))
       (should (equal (match-data) m2)))))
 
+(ert-deftest test-narrow-buffer-symbol ()
+  (with-temp-buffer
+    (insert "foo bar zot")
+    (goto-char 5)
+    (should (equal (symbol-at-point) 'bar)))
+  (with-temp-buffer
+    (insert "`[[`(")
+    (goto-char 2)
+    (should (equal (symbol-at-point) nil)))
+  (with-temp-buffer
+    (insert "aa `[[`(")
+    (goto-char 4)
+    (should (equal (symbol-at-point) nil))))
+
 ;;; thingatpt.el ends here



reply via email to

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