如何在emacs的单个缓冲区中禁用全局次要模式

时间:2011-02-19 13:06:00

标签: emacs elisp

我已通过

启用智能标签模式作为全局次要模式
(global-smart-tab-mode 1)

并希望在eshell模式下禁用它,

(add-hook 'eshell-mode-hook
          (lambda ()
            (smart-tab-mode -1)))

但它似乎不起作用,我确定这个钩子已被执行。 如果我在eshell中手动运行(smart-tab-mode -1),那就没关系。

我不知道为什么,有人可以帮助我,提前谢谢!

2 个答案:

答案 0 :(得分:2)

我认为eshell-mode-hook中次要模式的停用以及global-smart-tab-mode引起的激活是以错误的顺序调用的。

最近版本的smart-tab.el有一个smart-tab-disabled-major-modes变量,您可以添加eshell-mode,即(add-to-list 'smart-tab-disabled-major-modes 'eshell-mode)

答案 1 :(得分:0)

有不同版本的smart-tab.el - 您使用哪一个?如果它是John Anderson's version,则不需要添加钩子,只需通过调用

自定义变量smart-tab-disabled-major-modes
M-x customize-variable <ENTER> smart-tab-disabled-major-modes <ENTER>

然后将“eshell-mode”添加到列表中。

如果您使用的是Daniel Hackney's version,则可以使用新功能turn-off-smart-tab-mode代替上述代码中的(smart-tab-mode -1)