我使用优秀的highlight-symbol.el在相同符号的不同出现之间移动。
在此屏幕截图中,foo_bar
会突出显示,我可以调用highlight-symbol-prev
跳转到它。请注意,这是语法感知的,因此知道foo_bar_baz
不同(isearch无法理解)足够聪明。
我真的希望能够跳转到符号的第一个出现位置。这对于找到导入符号的位置非常有用。我该怎么做呢?
答案 0 :(得分:3)
这些方面应该做你想做的事。
(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))))
答案 1 :(得分:0)
(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)))))