Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Emacs中使用主模式进入次模式_Emacs_Q - Fatal编程技术网

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

在Emacs中使用主模式进入次模式,emacs,q,Emacs,Q,这个问题可能是重复的,但我无法使以下内容在我的emacs中正常工作 每当我进入主模式matlab模式(两种模式均可在上获得)时,我都会尝试进入次模式mlint模式。我的.emacs文件中包含以下内容: (add-hook 'matlab-mode-hook (function (lambda() (mlint-mode)))) 这看起来像是我上面链接的问题的答案。打开.m文件时,出现以下错误: 文件模式规范错误:(无效函数mlint模式) 当我打

这个问题可能是重复的,但我无法使以下内容在我的emacs中正常工作

每当我进入主模式
matlab模式
(两种模式均可在上获得)时,我都会尝试进入次模式
mlint模式
。我的.emacs文件中包含以下内容:

(add-hook 'matlab-mode-hook
      (function (lambda()
                  (mlint-mode))))
这看起来像是我上面链接的问题的答案。打开
.m
文件时,出现以下错误:

文件模式规范错误:(无效函数mlint模式)


当我打开
.m
文件时,请有人帮助我编写正确的钩子以进入
mlint模式
?FWIW,我正在运行emacs 23.1.50.1。

我认为正确的名称是
mlint次要模式。此外,请记住,确保Emacs了解所有matlab内容,这可以通过以下方式完成:

(require 'matlab-load)
作为旁注,在钩子中使用lambda函数通常是个坏主意。如果你检查钩子的值,你会看到很多不相关的东西。此外,如果修改lambda表达式并重新添加它,旧版本和新版本都将挂起

相反,您可以执行以下操作:

(defun my-matlab-hook ()
   (mlint-minor-mode 1))
(add-hook 'matlab-mode-hook 'my-matlab-hook)

“1”可确保mlint模式在之前启用时打开或保持打开状态。

为什么不干脆
(添加钩子“matlab模式钩子”mlint模式)
?你确定你真的加载了次要模式吗?这是我第一次尝试,但没有成功。请参阅下面@Lindydancer的答案。您不会这样做,因为大多数次要模式在无参数调用时会切换其功能(就像您以交互方式调用它们一样)。因此,如果已经为缓冲区启用了mlint模式,并且您更改为matlab模式,则上述形式将具有关闭mlint模式的效果。因此,在使用钩子函数启用次要模式时,通常希望传递参数(通常为1或t,但检查适当的docstring)。