在Emacs中使用主要模式进入次要模式

Dan*_*hoa 4 emacs q

这个问题可能与此问题重复,但我无法在我的emacs中正常使用以下内容.

mlint-mode每当我进入主模式时,我都会尝试进入次模式matlab-mode(两种模式都在SourceForge页面上可用).我的.emacs文件中有以下内容:

(add-hook 'matlab-mode-hook
      (function (lambda()
                  (mlint-mode))))
Run Code Online (Sandbox Code Playgroud)

这看起来像我上面链接的问题的答案.打开.m文件时,出现以下错误:

文件模式指定错误:(void-function mlint-mode)

mlint-mode当我打开.m文件时,有人可以协助我帮助我写正确的钩子吗?FWIW,我正在运行emacs 23.1.50.1.

Lin*_*cer 10

我认为正确的名字是mlint-minor-mode.另外,请记住确保Emacs知道所有matlab内容,这可以通过以下方式完成:

(require 'matlab-load)
Run Code Online (Sandbox Code Playgroud)

作为旁注,在钩子中使用lambda函数通常是个坏主意.如果你检查钩子的值,你会看到很多不相关的东西.此外,如果您修改lambda表达式并重新添加它,旧版本和新版本都将处于挂钩状态.

相反,你可以这样做:

(defun my-matlab-hook ()
   (mlint-minor-mode 1))
(add-hook 'matlab-mode-hook 'my-matlab-hook)
Run Code Online (Sandbox Code Playgroud)

"1"确保打开mlint模式,或者如果先前启用则保持打开状态.