Emacs在多个窗口中突出显示符号

时间:2014-05-27 14:03:54

标签: search emacs window highlight

是否可以在多个窗口中突出显示符号? 我经常使用优秀的" Highlight-Symbol"或者" Iedit"用于搜索和突出显示源文件中的符号的包。不幸的是,这仅适用于当前窗口的缓冲区。因此,我正在寻找一种简单的方法来突出显示当前窗口中的符号,以及其他窗口中的符号(通常我使用3或4个源文件窗口)。

我也试过"发生/ moccur"或类似但他们总是打开一个新窗口,其中包含一系列出现的事件。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这个功能应该可以解决问题。它需要原件并遍历窗口列表。 (奇怪的是,walk-windows没有用。)

(defun highlight-symbol-at-point-all-windows ()
  "Toggle highlighting of the symbol at point in all windows."
  (interactive)
  (let ((symbol (highlight-symbol-get-symbol)))
    (unless symbol (error "No symbol at point"))
    (save-selected-window                           ; new
      (cl-dolist (x (window-list))                  ; new
        (select-window x)                           ; new
        (if (highlight-symbol-symbol-highlighted-p symbol)
            (highlight-symbol-remove-symbol symbol)
          (highlight-symbol-add-symbol symbol))))))

答案 1 :(得分:0)

在库Highlighthighlight.el)中尝试命令 hlt-highlight-symbol

默认情况下绑定到 C-x X h s (默认情况下,库中的命令使用前缀键C-x X)。使用前缀arg C-u C-x X h s),它会对所有可见或图标化的缓冲区起作用。如果没有前缀arg,它只作用于当前缓冲区(如果它处于活动状态,则仅作用于区域)。

您可以取消强调使用相同的键序列,但使用 u 而不是 h 。因此C-u C-x X u s取消所有(可见或图标化)缓冲区中的符号,C-x X u s仅在当前缓冲区(或活动区域)中取消亮点。


(我今天刚刚添加了这个前缀-arg行为。如果您从MELPA而不是上面的(EmacsWiki)链接中提取库,那么您可能需要等待一天才能获得最新版本。