将emacs搜索扩展到其他缓冲区

时间:2013-07-01 10:08:05

标签: search emacs buffer elisp dot-emacs

我正在尝试改进我的emacs的搜索功能,并允许它在其他窗口中搜索(当打开多个窗口时),搜索我当前正在搜索的单词并搜索鼠标单击。 我使用this unit-at-cursor创建了以下函数:

(defun seek-other-tab ()
  (interactive)
   (setq unit (elt (unit-at-cursor 'word) 0) // gets the word at which the cursor is
   (other-window 1) // get to the next window
   (search-forward unit nil nil)))  // search...

(defun seek-buffer ()
 (interactive)
 (search-forward (elt (unit-at-cursor 'word) 0))

然而,这比手动搜索其他缓冲区弱,因为a。它没有环绕和b。它不记得搜索所以基本上我需要使用这两个函数进行有效搜索。它也没有将候选人标记为isearch-forward。

关于使用鼠标作为搜索者(我想像Alt-mouse一样选择一个单词并查找其所有实例 - 比如GVIM shift-mouse1),我甚至不知道如何分配鼠标点击:(

所以我的问题是: 如何改进我的功能以进行环绕搜索并突出显示选择\使isearch记住搜索,这样至少我将能够继续使用C-s进行搜索? 如何制作第三个功能,选择鼠标触摸的单词并搜索实例(最好还突出显示)

更新: highlight_symbol模式几乎是我想用鼠标作为搜索设备所需要的:

 (global-set-key [(control shift mouse1)] 'highlight-symbol-at-point)

但是,该功能仍然只在光标下看而不是鼠标位置。 会在另一个主题中问它。 我仍然无法为其他窗口中的(可包装)搜索项目创建一个不错的功能:(

2 个答案:

答案 0 :(得分:1)

在misearch.el中存在multi-isearch,如果没有提供您正在寻找的所有内容,这可能会提供一个很好的起点。

答案 1 :(得分:0)

好吧,解决方案可能不是很花哨和非凡,但我只是做了一个宏:

(defalias 'search-other-window (read-kbd-macro "M-b C-s C-w C-x o C-s C-s"))
(global-set-key (kbd "C-=") 'search-other-window)

并通过Ctrl- =获得所需的行为。 它还将搜索保存在isearch内存中,因此连续的C-s将继续搜索。

有点沉闷的解决方案,但是谁说所有的解决方案都必须非常出色并且闪亮......