2014-06-17 48 views
1

我使用Emacs與邪惡模式,並且當我輸入搜索模式時,顯示ElDoc消息替換當前搜索模式。這很煩人。我查看了ElDoc並查看了一個函數eldoc-display-message-p,該函數檢查ElDoc不應顯示消息的條件。Emacs ElDoc干擾邪惡搜索

我需要一些提示來指導此功能,以防止ElDoc干擾惡意搜索。

+0

我無法重現您的問題,您可以提供更多的信息?當我將光標放在應該觸發eldoc的地方,然後啓動:/ s/foo/bar時,不會顯示eldoc消息。你使用了什麼命令?你使用的是什麼類型的源/ eldoc? 一個可能的解決方案可能是在'eldoc-display-message-no-interference-p'條件中包含(active-minibuffer-window)。所以如果有一個活動的小型緩衝器,eldoc不會顯示 –

+0

@JordonBiondo用'/ something'搜索時發生問題,而不是Evil-ex。我試過包括'(active-minibuffer-window)',但它仍然是一樣的。謝謝。 – tungd

+1

你使用的是什麼eldoc實現?你在編輯什麼代碼?這可能會產生很大的差異,特別是如果您的eldoc功能正在向外部進程傳遞信息。另一種可能的解決方案是檢查'eldoc-display-message-no-interference-p'中的'isearch-mode'是否爲非零,在惡意使用isearch中搜索,以便在你的緩衝區中變量不爲零搜索。 –

回答

2

函數eldoc-display-message-no-interference-p是一個謂詞函數,它將決定是否在此時顯示eldoc消息。

在Evil中搜索使用isearch,因此當您搜索時,變量isearch-mode將不爲零。

您可以通過直接編輯來自定義eldoc-display-message-no-interference-p的行爲,但這通常不是最佳選擇,我們可以通過使用「after advice」來修改它的行爲。 If you are unfamiliar with advice, read about it here.

(defadvice eldoc-display-message-no-interference-p (after dont-show-when-isearching activate) 
    "Always return nil if isearch-mode is active." 
    (setq ad-return-value (and ad-return-value (not isearch-mode))))