From: Lars Ingebrigtsen Date: Wed, 20 Jan 2021 03:44:18 +0000 (+0100) Subject: Make `symbol-at-point' work in buffers with no symbols X-Git-Tag: emacs-28.0.90~4199 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=40a5df81434ce02fba01779256b50976fb74da4f;p=emacs.git 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. --- 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'." (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 c43c81af9fd..b7c315062f9 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