aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2021-01-20 04:44:18 +0100
committerLars Ingebrigtsen2021-01-20 04:44:18 +0100
commit40a5df81434ce02fba01779256b50976fb74da4f (patch)
tree706991cdbf784b269a206df7202cf6bf5b0503db
parent3bbec2eb2b2a48a0eaac8e83c27313bfbe9d420e (diff)
downloademacs-40a5df81434ce02fba01779256b50976fb74da4f.tar.gz
emacs-40a5df81434ce02fba01779256b50976fb74da4f.zip
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.
-rw-r--r--lisp/thingatpt.el8
-rw-r--r--test/lisp/thingatpt-tests.el14
2 files changed, 22 insertions, 0 deletions
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index d3ba941fcc2..69c23c35431 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'."
218 218
219(put 'sexp 'beginning-op 'thing-at-point--beginning-of-sexp) 219(put 'sexp 'beginning-op 'thing-at-point--beginning-of-sexp)
220 220
221;; Symbols
222
223(put 'symbol 'end-op 'thing-at-point--end-of-symbol)
224
225(defun thing-at-point--end-of-symbol ()
226 "Move point to the end of the current symbol."
227 (re-search-forward "\\(\\sw\\|\\s_\\)+"))
228
221;; Lists 229;; Lists
222 230
223(put 'list 'bounds-of-thing-at-point 'thing-at-point-bounds-of-list-at-point) 231(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 c43c81af9fd..b7c315062f9 100644
--- a/test/lisp/thingatpt-tests.el
+++ b/test/lisp/thingatpt-tests.el
@@ -146,4 +146,18 @@ position to retrieve THING.")
146 (should (thing-at-point-looking-at "2abcd")) 146 (should (thing-at-point-looking-at "2abcd"))
147 (should (equal (match-data) m2))))) 147 (should (equal (match-data) m2)))))
148 148
149(ert-deftest test-narrow-buffer-symbol ()
150 (with-temp-buffer
151 (insert "foo bar zot")
152 (goto-char 5)
153 (should (equal (symbol-at-point) 'bar)))
154 (with-temp-buffer
155 (insert "`[[`(")
156 (goto-char 2)
157 (should (equal (symbol-at-point) nil)))
158 (with-temp-buffer
159 (insert "aa `[[`(")
160 (goto-char 4)
161 (should (equal (symbol-at-point) nil))))
162
149;;; thingatpt.el ends here 163;;; thingatpt.el ends here