我正在尝试在迷你缓冲区中打开auto-complete:
(add-hook 'minibuffer-setup-hook 'auto-complete-mode)
我得到的是auto-complete
在minibuffer的第一个实例中运行,但不再运行。加载后即为完整的minibuffer-setup-hook
:
(auto-complete-mode turn-on-visual-line-mode ido-minibuffer-setup rfn-eshadow-setup-minibuffer minibuffer-history-isearch-setup minibuffer-history-initialize)
如何持续打开auto-complete
?
[如果您的函数充当切换键,您很少想向钩子变量添加功能符号(大多数次要模式就是这种情况。
minibuffer-setup-hook
在“进入迷你缓冲区后立即运行”,这意味着您将在首次输入迷你缓冲区时启用自动完成模式;第二次禁用它;第三次启用它;等等...
通常,您要么查看是否存在预定义的turn-on-autocomplete-mode
类型的函数,要么定义自己的函数:
(defun my-turn-on-auto-complete-mode ()
(auto-complete-mode 1)) ;; an argument of 1 will enable most modes
(add-hook 'minibuffer-setup-hook 'my-turn-on-auto-complete-mode)
我无法测试,因为您尚未链接到正在使用的自动完成模式。
“自动完成模式”的创建者明确排除了用于自动完成的小型缓冲区。次要模式的定义是:
(define-global-minor-mode global-auto-complete-mode
auto-complete-mode auto-complete-mode-maybe
:group 'auto-complete)
所以“打开模式”功能是“也许是自动完成模式-该功能的定义是:
(defun auto-complete-mode-maybe ()
"What buffer `auto-complete-mode' prefers."
(if (and (not (minibufferp (current-buffer)))
(memq major-mode ac-modes))
(auto-complete-mode 1)))
此函数在if语句中显式测试current-buffer是否为minibuffer,如果为,则不打开auto-complete-mode。
如果要在微型缓冲区中使用自动完成模式,则可能应该联系该模式的维护者,并询问他为什么他排除了微型缓冲区,以及他认为需要进行什么编程更改才能在微型缓冲区中启用该模式。 >
Zev引起我注意auto-complete-mode-maybe
,这是必需的修改(文件auto-complete.el
,所有更改都有注释):