[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