]> git.eshelyaron.com Git - emacs.git/commitdiff
Make `symbol-at-point' work in buffers with no symbols
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 20 Jan 2021 03:44:18 +0000 (04:44 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 20 Jan 2021 03:44:18 +0000 (04:44 +0100)
* 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
test/lisp/thingatpt-tests.el

index d3ba941fcc2fb66f691a3a7b458ced1d89cf35a9..69c23c35431271dd833f4d3c71beeb2696d46fa6 100644 (file)
@@ -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)
index c43c81af9fde264460d0f012871f78fb0ed0e691..b7c315062f96f118c940d350aed4b7d7402f15a1 100644 (file)
@@ -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