3

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

高亮符号示例

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

我真的很想能够跳转到符号的第一次出现。这对于查找符号的导入位置非常有用。我该怎么办?

4

2 回答 2

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))))
于 2013-05-20T14:08:56.880 回答
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)))))
于 2013-05-20T14:12:36.660 回答