Emacs 如何在指定的主模式中禁用全局次模式

Emacs 如何在指定的主模式中禁用全局次模式,emacs,minor-mode,Emacs,Minor Mode,我使用Prelude,我想在除web模式外的所有程序模式中启用hs次要模式。我写 (add-hook 'prog-mode-hook #'hs-minor-mode) (make-variable-buffer-local 'hs-minor-mode) (add-hook 'web-mode-hook (lambda () (setq hs-minor-mode nil))) 在personal.el中,但它不起作用 (add-hook 'pr

我使用Prelude,我想在除web模式外的所有程序模式中启用hs次要模式。我写

(add-hook 'prog-mode-hook #'hs-minor-mode)          
(make-variable-buffer-local 'hs-minor-mode)        
(add-hook 'web-mode-hook (lambda () (setq hs-minor-mode nil)))      
在personal.el中,但它不起作用

(add-hook 'prog-mode-hook #'hs-minor-mode)          
(make-variable-buffer-local 'hs-minor-mode)        
(add-hook 'web-mode-hook (lambda () (setq hs-minor-mode nil)))      

我该怎么办?

通常,要禁用次要模式,仅设置变量是不够的。您必须调用mode函数。因此,请尝试以下方法:

(add-hook 'prog-mode-hook #'hs-minor-mode)          
(make-variable-buffer-local 'hs-minor-mode)        
(add-hook 'web-mode-hook (lambda () (setq hs-minor-mode nil)))      
(add-hook 'web-mode-hook (lambda () (hs-minor-mode -1)))

另一种方法是使你的
prog mode钩子
以当前模式为条件。你能给我举个例子吗?我不知道如何使prog-mode钩子有条件。在钩子上放一个函数,类似于
(除非(eq-major-mode'web-mode)(hs-mode))
。重复