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.
This commit is contained in:
parent
3bbec2eb2b
commit
40a5df8143
2 changed files with 22 additions and 0 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue