如何在emacs中针对个别缓冲区禁用全局次要模式

4
我已经通过以下方式将智能制表符模式作为全局次要模式启用:
(global-smart-tab-mode 1)

我想在eshell模式下禁用它,

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

但是似乎不起作用,我确定这个hook已经被执行。 如果我在eshell中手动运行(smart-tab-mode -1),就能正常工作。

我不知道原因,有人可以帮忙吗?谢谢!


2个回答

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)


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的版本,则有一个新函数turn-off-smart-tab-mode,您可以在上面的代码中使用它而不是(smart-tab-mode -1)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接