在相同symbol间移动

Emacs有highlight-thing的插件,可以高亮当前光标下的内容。我曾经给LispWorks也写过一个类似的插件,但我当时写它的主要目的是为了能快速在重复的symbol间navigate,可highlight-thing恰好缺少这个功能。受不了了,在highlight-thing的基础上随便手搓了一个,有时间再优化吧。

若有重复或更好用的功能请务必指出,目前精神分裂发作期,逻辑不畅还请见谅。加载下面代码后,按C-<光标移动到前一个symbol出现位置,C->移动到后一个

(defun prev-thing ()
  "Navigate to previous same thing.

Should be used together with `highlight-thing'"
  (interactive)
  (when-let (it (search-backward-regexp highlight-thing-last-regex nil t 1))
    (goto-char it)))
(defun next-thing ()
  "Navigate to next same things.

Should be used together with `highlight-thing'."
  (interactive)
  (when-let (it (search-forward-regexp highlight-thing-last-regex nil t 1))
    (goto-char it)))

;; Recommend Binding

(global-set-key (kbd "C-<") 'prev-thing)
(global-set-key (kbd "C->") 'next-thing)

Happy Hacking!

4 个赞

symbol-overlay 有这个功能。symbol-overlay-put 之后高亮 symbol,然后在高亮区域内按 p 和 n 前后跳转,按 q 可以批量改名。

5 个赞

多谢!

请问一下,左边的大纲视图是什么包呀?

lsp-ui-imenu,包括推荐右面的minimap.el配合IBM VGA 8*8 2号方形字体

1 个赞

感谢!

我有一个小包,干这个用的。还可以配合最基本的 M-s h . 系列命令,移动到下一个高亮。

minimap 会有性能问题么