我使用出色的highlight-symbol.el在同一符号的不同出现之间移动。
在此屏幕截图中,foo_bar
突出显示,我可以调用highlight-symbol-prev
以跳转到它。请注意,这是语法感知的,所以它足够聪明,知道这foo_bar_baz
是不同的(isearch 不理解的东西)。
我真的很想能够跳转到符号的第一次出现。这对于查找符号的导入位置非常有用。我该怎么办?
我使用出色的highlight-symbol.el在同一符号的不同出现之间移动。
在此屏幕截图中,foo_bar
突出显示,我可以调用highlight-symbol-prev
以跳转到它。请注意,这是语法感知的,所以它足够聪明,知道这foo_bar_baz
是不同的(isearch 不理解的东西)。
我真的很想能够跳转到符号的第一次出现。这对于查找符号的导入位置非常有用。我该怎么办?
这些方面的东西应该做你想做的事。
(defun goto-first-reference ()
(interactive)
(eval
`(progn
(goto-char (point-min))
(search-forward-regexp
(rx symbol-start ,(thing-at-point 'symbol) symbol-end))
(beginning-of-thing 'symbol))))
(eval-when-compile (require 'cl))
(require 'highlight-symbol)
(defmacro save-mark-ring (&rest body)
"Save mark-ring; execute BODY; restore the old mark-ring."
`(let ((old-mark-ring mark-ring))
,@body
(setq mark-ring old-mark-ring)))
(defun highlight-symbol-jump-to-first ()
"Jump to the first occurrence of the symbol at point."
(interactive)
(push-mark)
(save-mark-ring
(let (earliest-symbol-pos)
(loop do
(highlight-symbol-jump -1)
(setq earliest-symbol-pos (point))
while (< (point) earliest-symbol-pos)))))