MATLAB社区

MATLAB,社区等

MATLAB-Emacs集成又回来了

我要欢迎来自MATLAB图形团队的客座博主Eric Ludlam。

小事情

早在今年四月,Mike写了一篇关于桌面博客的文章小事才是最重要的.在本文的评论中,一些长期使用EmacsLink的人在发现R2009a Editor接口不再支持EmacsLink后写道。万博1manbetx作为一个大量Emacs代码的作者,和当前的维护者matlab-emacs在Source Forge上的项目,以及帮助将最初的Emacs Link引入存在的人,我既高兴地知道有这么多人发现它有用,又为他们从未加入过而感到难过Matlab-emacs邮件列表在弗吉源,许多问题都可以很容易地得到解答。

什么是matlab-emacs项目吗?

matlab-emacs项目是一个MATLAB模式的Emacs,由Emacs Lisp代码组成,实现了一个主模式Emacs,帮助编辑MATLAB脚本。它还允许使用Emacs代替MATLAB编辑器来编辑MATLAB源代码,调试MATLAB代码,并使用mlint检查MATLAB代码的语法/语义。Emacs的MATLAB模式不包括“EmacsLink”,这是一个更紧密地集成MATLAB和Emacs的工具,用于调试M代码。“EmacsLink”只包含MATLAB与Emacs的通信接口。编辑模式一直是matlab-emacs项目的一部分。matlab-mode,它构成了matlab-emacs项目的根源,由Matt Wette在1991年首次编写。

去哪里买matlab-emacs

matlab-emacs项目托管在SourceForgeEmacs Lisp代码可以从哪里下载git.详细的下载和安装说明是可用的在这里.一定要加入邮件列表获取有关设置和使用matlab-emacs项目的帮助。使用您喜欢的方法下载了代码之后,请阅读INSTALL文件以获得完整的详细信息。matlab-emacs项目已被用户扩展,包括对中的几个特性的支持万博1manbetxCEDET.CEDET是一个Emacs包,它提供了mlint支持所需的对象系统,以及一个复杂的完成/导航包。万博1manbetx

在Emacs中编写MATLAB代码

在Emacs中编写MATLAB代码与在Emacs中编写任何其他代码非常相似。Emacs的MATLAB模式有几个用户期望从Emacs中得到的特性,还有几个使编辑MATLAB代码更好的特性。我确信许多用户认为是一个单独的“EmacsLink”,因为它随MATLAB一起发布,有两个部分。一部分是MATLAB与Emacs之间的通信,进行调试。二是MATLAB脚本编辑模式。编辑模式没有任何改变,除了使这些工具变得更好,比如支持最新的缩进样式、单元格模式和编程结构,比如MATLAB对象系统。万博1manbetx因此,您在Emacs中的编辑经验只会变得更好。设置matlab-mode对于Emacs来说非常简单。下面是一个简单的设置示例:
(add-to-list 'load-path "~/path/to/matlab_dot_el") (load-library " matlab_load ");;为MATLAB代码启用CEDET特性支持。万博1manbetx(可选)(matlab-cedet-setup)
在这个使用Linux上的Emacs 23完成的屏幕截图中,您可以看到一些语法高亮显示,mlint支持嵌套函数,以及粗体跨函数变量。万博1manbetx嵌套函数和TAGS菜单上的蓝线是CEDET支持的一部分,它包括函数浏览和完成。万博1manbetx它还显示if/end块匹配,以及显示函数详细信息的CEDET汇总模式。目前,Emacs的matlab模式支持以下特性:万博1manbetx
  1. 语法高亮显示。支持三种颜色级别。万博1manbetx
  2. 智能缩进。选项卡键,返回键将使代码行缩进。缩进地区(决定物价- \)适用于更大的区域。
  3. 代码自动填充和段落填充。mq在大型评论上做得很好。自动填充是语法感知的,可以在代码中找到放置换行符的好地方。
  4. 语法感知块移动。向前/向后sexp (C-M-f, C-M-b)和函数的开始/结束(C-M-a, C-M-e)正确地移动开始/结束语法。
  5. 块的Paren样式匹配。突出匹配结束当光标在如果,以及许多其他匹配结构。
  6. mlint支万博1manbetx持。突出显示代码中的mlint警告,以及一个方便的上下文菜单,用于标记和导航错误。Emacs可以自动修复一些错误。
  7. 突出显示嵌套变量。使用mlint,嵌套变量被高亮显示,在处理嵌套函数时提供帮助。
  8. 完成发动机。使用CEDET中的工具,Emacs将解析您的M文件,并提供非常好的补全和代码修饰。

如何使用Emacs代替MATLAB编辑器

好了,现在来回答Desktop博客评论中出现的许多问题。最常见的问题似乎是“你为什么要带走EmacsLink ?”迈克和肯很好地回答了这个问题。真正的问题应该是“我现在该做什么?”幸运的是,我有两个答案,您可以选择最适合您的开发风格的答案。

使用Emacs作为外部编辑器。

您现在可以使用Emacs作为外部编辑器,其方式与EmacsLink提供的类似。博客上出现的一个问题是关于使用首选项面板将Emacs设置为默认编辑器的问题,抱怨是:
  1. 每次“编辑”或“打开”不同的函数时,都会创建一个新的emacs进程。应该发生的情况是,只有第一个“edit”应该启动一个新会话,后续的“edit”应该在现有会话中打开文件。我可以很快地在桌面上多打开30个窗口。
  2. 在出现错误时,单击matlab命令窗口中的错误链接将打开正式编辑器,而不是emacs,尽管我在首选项中指定了emacs。
解决这些问题的方法是使用一个旧的Emacs工具emacsclient.Emacslient允许您告诉已经运行的Emacs加载一个文件进行编辑。要在emacs中启用emacsclient,请将此行添加到您的~ / . emacs文件:
(服务器启动)
在unix命令提示符中,你现在可以像这样调用emacsclient:
Emacsclient -n myfile.m
而且myfile.m将加载到Emacs中进行编辑。在用Ken和Mike研究了这个问题之后,我提供了一些简单的工具来进行这个设置。matlab-emacs项目现在有一个工具箱目录。如果要在目录中安装matlab-emacs~ / / matlab-emacs lisp,你现在可以在你的启动程序中放置这样的代码。m文件:
目录~ / lisp / matlab-emacs /工具箱,'开始');重新处理;emacsinit;
这将把MATLAB - Emacs项目工具箱添加到您的路径中,emacsinit脚本将配置MATLAB,以便在您输入时告诉已经运行的Emacs该做什么编辑,或单击命令窗口中的链接。
这个截图显示了一个手动设置的位置emacsclient被指定为emacsinit.这在Windows上很重要,因为它可能不在您的路径上。现在,当在调试器中停止时,您可以单击蓝色行号跳转到某个文件中的该位置。正在调试的文件是鲁比克蛇这是我几年前写的demo。比起仅仅在提供的文本字段中插入“emacs”,这是一个很大的进步,但并没有回答这个问题:
  1. 当然,其他的交互功能都不行。没有emacs的评估代码,没有调试,等等。
为此,您需要使用Emacs命令matlab-shell

使用matlab-shell

Emacs命令M-x matlab shell RET,在unix上,将启动MATLAB作为Emacs下的子进程。命令提示符将在Emacs缓冲区中可用,与unix提示符显示的方式相同m x壳.如果你使用matlab-shell它会自动配置你的MATLAB,如前所述,允许“编辑”命令在当前运行的Emacs中打开文件。此外,Emacs将能够将M文件中的文本发送到正在运行的MATLAB中执行。一旦matlab-shell已经启动,可以选择吗“地区”“细胞”在编辑时从菜单中.m文件。这将把源文件中的文本发送到matlab-shell来执行。如果您只是想将光标移动到外壳,您可以这样做M-x matlab shell RET第二次使已经运行的shell向前运行。
在上图中,你可以看到最新的Aquamacs正在运行matlab-shell.选择“转到最后一个错误”或单击链接将光标移动到我的弹射器建模程序中引入的错别字。要进行调试,可以使用工具栏设置断点,或者使用db命令。例如:
ls dbstep dbstep dbquit
这将导致ls.m文件在Emacs缓冲区中弹出,调试箭头指向正确的行。遍历该文件或进入新文件将把箭头移动到正确的位置。

windows用户

MATLAB不支持Windows万博1manbetx上的tty命令窗口,因此不能使用matlab-shell.你还是可以用的emacsclient然而。要做到这一点,你需要像这样修改安装配置:
目录~ / lisp / matlab-emacs /工具箱,'开始');重新处理;emacsinit(“c: /应用程序/ Emacs / lib-src / emacsclient - n ');
在这里,您可以将emacsinit的参数替换为系统上emacsclient二进制文件的实际路径。的- n参数指定emacsclient不应等待用户完成文件编辑。Windows配置emacsclient也不像在Unix上那么简单。在开始matlab-emacs配置之前,您可能需要仔细阅读如何配置Emacsclient才能正常工作。

使matlab-emacs更好

matlab-emacsproject已经存在很长时间了,它的许多贡献者已经使它成为一种使用MATLAB的强大方式。如果您希望Emacs作为您的编辑器,请加入Matlab-emacs邮件列表,并帮助它变得更好。

免费的截图

下面的截图包括matlab-mode启用CEDET支持,运万博1manbetx行、编辑和调试matlab shellsliceomaticEmacs代码浏览器大家一起跑。

Vim用户

vim用户也发表了评论,这里用于Emacs的技术也适用于vim。修改这两个MATLAB脚本文件以调用vim,应该可以很容易地开始使用vim,或者任何其他MATLAB编辑器。——作者:Eric Ludlam, The MathWorks
|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。