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

如何在emacs的单个缓冲区中禁用全局次要模式,emacs,elisp,Emacs,Elisp,我已通过启用智能选项卡模式作为全局次要模式 (global-smart-tab-mode 1) 要在eshell模式下禁用它 (add-hook 'eshell-mode-hook (lambda () (smart-tab-mode -1))) 但它似乎不起作用,我相信这个钩子已经被执行了。 如果我在eshell中手动运行(智能选项卡模式-1),就可以了 我不知道为什么,有人能帮我吗,提前谢谢 我认为eshell模式钩子中次要模式的停用和由全局智

我已通过启用智能选项卡模式作为全局次要模式

(global-smart-tab-mode 1)
要在eshell模式下禁用它

(add-hook 'eshell-mode-hook
          (lambda ()
            (smart-tab-mode -1)))
但它似乎不起作用,我相信这个钩子已经被执行了。 如果我在eshell中手动运行
(智能选项卡模式-1)
,就可以了


我不知道为什么,有人能帮我吗,提前谢谢

我认为
eshell模式钩子
中次要模式的停用和由
全局智能选项卡模式
引起的激活是按错误的顺序调用的


smart-tab.el的最新版本有一个
smart-tab disabled MARY modes
变量,您可以将
eshell mode
添加到该变量中,即
(添加到“smart-tab disabled MARY modes”eshell mode列表中)

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

M-x customize-variable <ENTER> smart-tab-disabled-major-modes <ENTER>
M-x自定义变量智能选项卡禁用主要模式
然后将“eshell模式”添加到列表中

如果您正在使用,则有一个新功能
关闭智能选项卡模式
,您可以使用该功能代替上述代码中的
(智能选项卡模式-1)

重复