diff options
| author | Lars Ingebrigtsen | 2021-01-20 04:44:18 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2021-01-20 04:44:18 +0100 |
| commit | 40a5df81434ce02fba01779256b50976fb74da4f (patch) | |
| tree | 706991cdbf784b269a206df7202cf6bf5b0503db | |
| parent | 3bbec2eb2b2a48a0eaac8e83c27313bfbe9d420e (diff) | |
| download | emacs-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.el | 8 | ||||
| -rw-r--r-- | test/lisp/thingatpt-tests.el | 14 |
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 |