1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-25 07:28:20 +00:00

Revert field-related thingatpt changes

This reverts 7db376e560, which led to
severe performance regressions when being run in large buffers with no
fields (bug#52593)
This commit is contained in:
Lars Ingebrigtsen 2021-12-22 13:56:47 +01:00
parent 9bcb732686
commit 29fffbdd87
3 changed files with 16 additions and 31 deletions

View File

@ -3038,7 +3038,6 @@ checkdoc will now check the format of 'yes-or-no-p'.
*** New command 'checkdoc-dired'.
This can be used to run checkdoc on files from a Dired buffer.
---
*** No longer checks for 'A-' modifiers.
Checkdoc recommends usage of command substitutions ("\\[foo-command]")
in favor of writing keybindings like 'C-c f'. It now no longer warns

View File

@ -162,30 +162,24 @@ Possibilities include `symbol', `list', `sexp', `defun',
When the optional argument NO-PROPERTIES is non-nil,
strip text properties from the return value.
If the current buffer uses fields (see Info node `(elisp)Fields'),
this function will narrow to the field before identifying the
thing at point.
See the file `thingatpt.el' for documentation on how to define
a symbol as a valid THING."
(save-restriction
(narrow-to-region (field-beginning) (field-end))
(let ((text
(cond
((cl-loop for (pthing . function) in thing-at-point-provider-alist
when (eq pthing thing)
for result = (funcall function)
when result
return result))
((get thing 'thing-at-point)
(funcall (get thing 'thing-at-point)))
(t
(let ((bounds (bounds-of-thing-at-point thing)))
(when bounds
(buffer-substring (car bounds) (cdr bounds))))))))
(when (and text no-properties (sequencep text))
(set-text-properties 0 (length text) nil text))
text)))
(let ((text
(cond
((cl-loop for (pthing . function) in thing-at-point-provider-alist
when (eq pthing thing)
for result = (funcall function)
when result
return result))
((get thing 'thing-at-point)
(funcall (get thing 'thing-at-point)))
(t
(let ((bounds (bounds-of-thing-at-point thing)))
(when bounds
(buffer-substring (car bounds) (cdr bounds))))))))
(when (and text no-properties (sequencep text))
(set-text-properties 0 (length text) nil text))
text))
;;;###autoload
(defun bounds-of-thing-at-mouse (event thing)

View File

@ -223,12 +223,4 @@ position to retrieve THING.")
(should (equal (test--number "0xf00" 2) 3840))
(should (equal (test--number "0xf00" 3) 3840)))
(ert-deftest test-fields ()
(with-temp-buffer
(insert (propertize "foo" 'field 1) "bar" (propertize "zot" 'field 2))
(goto-char 1)
(should (eq (symbol-at-point) 'foo))
(goto-char 5)
(should (eq (symbol-at-point) 'bar))))
;;; thingatpt-tests.el ends here