跳转到Emacs中第一次出现的符号

时间:2013-05-20 13:58:26

标签: emacs

我使用优秀的highlight-symbol.el在相同符号的不同出现之间移动。

highlight-symbol-example

在此屏幕截图中,foo_bar会突出显示,我可以调用highlight-symbol-prev跳转到它。请注意,这是语法感知的,因此知道foo_bar_baz不同(isearch无法理解)足够聪明。

我真的希望能够跳转到符号的第一个出现位置。这对于找到导入符号的位置非常有用。我该怎么做呢?

2 个答案:

答案 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)))))