[推销package] symbol-overlay,同时高亮多个symbol

可以选择一个区域再高亮吗?而不是当前symbol

1 个赞

我的意思是:你想把这个工具结合color-rg的话,是不是就是把 当前高亮的symbol 吐给color-rg?

而不是 当前symbol

就是把你写的这个 (thing-at-point 'symbol) 换成找到需要查找的高亮symbol就可以了。

不知道你说的结合是不是就是这个意思。

当前高亮可能不止一个欧

扔给color-rg也不难的

我想要的是查找下一个symbol不仅限于当前buffer

而是可以查其他buffer的

比如说 sql 里的SRLECT输出

(defvar symbol-overlay-color-rg-directory nil)
(defvar symbol-overlay-color-rg-literal   nil)
(defvar symbol-overlay-color-rg-no-ignore nil)
(defvar symbol-overlay-color-rg-case-sensitive nil)


(defun symbol-overlay-color-rg-init (rg-buf symbol)
  (with-current-buffer rg-buf
    (goto-char 1)
    (when (re-search-forward
           (concat "\\_<" (regexp-quote symbol) "\\_>") )
      (left-char 1)
      (symbol-overlay-put)
      (symbol-overlay-jump-next)
      )))

(defun symbol-overlay-color-rg-buffer (symbol)
  (let ((buf-name (color-rg-buffer symbol))
        rg-buf)
    (setq rg-buf (get-buffer buf-name))
    (unless rg-buf
      (setq color-rg-window-configuration-before-search
            (current-window-configuration))
      (add-hook 'color-rg-process-finish
                '(lambda (rg-buf symbol)
                   (symbol-overlay-color-rg-init rg-buf symbol)))
      (setq
       rg-buf
       (color-rg-search
        symbol
        (cond
         ((stringp symbol-overlay-color-rg-directory)
          symbol-overlay-color-rg-directory)
         ((functionp symbol-overlay-color-rg-directory)
          (funcall symbol-overlay-color-rg-directory))
         (t default-directory))
        symbol-overlay-color-rg-literal
        symbol-overlay-color-rg-no-ignore
        symbol-overlay-color-rg-case-sensitive
        t
        ))
      (set-window-configuration
       color-rg-window-configuration-before-search)
      )
    rg-buf))

;;(symbol-overlay-color-rg-buffer "case-fold-search")

如果做成了 也就面目全非了

我觉得这根本就是两件事,为什么要混到一起来?

2 个赞

编辑器和shell是两回事 emacs里有个eshell

编辑器和数据库是两回事 emacs里有个sql

编辑器和浏览器是两回事 emacs里有个eww

这个类比就不合适了,纯粹抬杠。两者设计目标不同,强行混到一起只会把事情搞复杂。emacs和eshell/shell是包含关系,本身也是设计目标之一。如果两个包能行成良好互动可以考虑,否则就是得不偿失。个人浅见而已。

我说了三个类比

其他两个呢?

这不是一样的吗?理解力啊。现在说的是package 你却非要整个emacs来类比。如果symbol-overlay扩展设计目标就另当别论,但我不认为是个好主意

一个是在当前文件中搜索符号

一个是在目录中搜索符号

文件和目录不是一回事吗?

我Baidu了一下

看看你的理解力吧

做出了第一版

凑活能用

有时间发个图片

好吧,角度不同。你要这么理解也没办法。 symbol-overlay主要是当前buffer内多个关键字的高亮,color-rg主要是目录或者项目内搜索。没猜错的话你是想搜索高亮的多个关键字,这种场景并不多见,而且真要搜索多个关键字没必要先去高亮。搜索光标下的符号是最常见的。当然非要这么做也是可以的,我是想说,高亮和搜索其实是两件事,不一定非要混到一起用。如果把逻辑弄复杂了不如回归到本质。当然你也可以按照自己的需求实现,毕竟Emacs是个自由的世界。只是之前的比喻实在不恰当。

2 个赞

你把他看成高亮

我把他看成跳转

完善了第一版

找到了一个bug

发现了两个新需求

多谢亲,有劳了

目录搜索确实不是symbol-overlay的设计目标。而且它会把项目变得复杂,边际成本过高。

但是在emacs世界中还有什么是不可能的呢,你完全可以按照自己喜好融合不同插件,且欢迎提merge request上来。

2 个赞

谢谢老铁一直以来的支持,说实话我自己都没想到现在会有这么多人用

1 个赞

好吧 可能是因为我不用lsp的缘故

lsp本身就有跳转到引用的功能 也就不用搜索目录了

我可能需要的是symbol-search 或者是叫 discover 更好

dumb-jumb

正解~~~~