我想在两种情况下编辑matlab脚本。
(1)在运行在linux终端上的matlab命令窗口中,如何创建和编辑脚本文件?使用
edit(filename)将调用交互式编辑器,这是在linux服务器上操作时不需要的。
(2)在emacs中,是否有方便地编辑matlab脚本的方法?哪个更好,使用MATLAB还是EmacsLink?
当我试图从id=154105签出MATLAB-Emacs时,我应该指定哪个模块名?
谢谢!
编辑:
在安装MATLAB-emacs时,存在一些问题.我以为我的CEDET安装在这里:
/usr/share/emacs22/site-lisp/cedet-common
/usr/share/emacs22/site-lisp/cedet-contrib 我的CEDET是Ubuntu上的版本1:1.0pre4-3 (无畏的)。所以我输入命令:
$ make "LOADPATH=/usr/share/doc/cedet-common /usr/share/doc/cedet-contrib"
for loadpath in . /usr/share/doc/cedet-common /usr/share/doc/cedet-contrib; do \
echo "(add-to-list 'load-path \"$loadpath\")" >> autoloads-compile-script; \
done;
"emacs" -batch --no-site-file -l autoloads-compile-script -f cedet-batch-update-autoloads matlab-load.el .
Generatim autoloads for cedet-matlab.el...
Generatim autoloads for cedet-matlab.el...done
Generatim autoloads for matlab.el...
Generatim autoloads for matlab.el...done
Generatim autoloads for mlint.el...
Generatim autoloads for mlint.el...done
Generatim autoloads for semantic-matlab.el...
Generatim autoloads for semantic-matlab.el...done
Generatim autoloads for tlc.el...
Generatim autoloads for tlc.el...done
Generatim autoloads for semanticdb-matlab.el...
Generatim autoloads for semanticdb-matlab.el...done
Updatim header...
Updatim header...done
Wrote /home/tim/.emacs.d/matlab-emacs/matlab-load.el
make: *** No rule to make target `matlab-publish.el', needed by `lisp'. Stop. 怎么了?谢谢!
发布于 2010-03-04 01:32:26
您应该知道,从版本R2009a EmacsLink开始,就已经从Matlab中删除了,所以我想说,此时Matlab是一个更好的选择。EmacsLink的主要优点是与Matlab紧密结合,特别是在使用调试器时,但是目前版本的Matlab相当能够满足大多数人的需求,就像EmacsLink一样。
为了从Matlab调用Emacs,最干净的解决方案是运行Emacs服务器(M服务器-start)。然后,可以设置编辑()命令,以便在Emacs中打开脚本。这里提供了关于如何这样做的详细说明,以及如何将matlab-shell作为次进程运行的详细说明:
http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/
对于CVS校验:模名是"matlab-emacs“。过去,您可以下载一个归档文件,只需将其解压缩到您的elisp目录中。
编辑:我决定重新安装matlab-emacs;下面是我所做的一步一步的工作.(这些步骤很明显,但这可能仍然很有用,看看如何容易遇到编译错误或错误解释某些指令)。请注意,matlab-emacs直到重新安装CEDET才进行编译。
从http://cedet.sourceforge.net/下载CEDET (在我的示例中为1.0pre7),将存档解压缩到~/.emacs.d/elisp/ (现在有~/.emacs.d/elisp/cedet-1.0pre7/目录)通过make EMACS=/usr/bin/emacs编译CEDET,而在~/.emacs.d/elisp中,执行cvs签出:
cvs -z3 -d:pserver:anonymous@matlab-emacs.cvs.sourceforge.net:/cvsroot/matlab-emacs co -P matlab-emacs编译matlab-emacs
make "LOADPATH=../cedet-1.0pre7/common ../cedet-1.0pre7/eieio ../cedet-1.0pre7/semantic/bovine/ ../cedet-1.0pre7/semantic/"理想情况下,所有东西都应该编译;现在是编辑启动文件的时候了:在.emacs中添加
(setq load-path (cons "~/.emacs.d/elisp/matlab-emacs/" load-path))
(load-library "matlab-load")在matlab启动程序中添加
addpath('~/.emacs.d/elisp/matlab-emacs/toolbox','-begin');
rehash;
emacsinit;这样就行了!发射emacs,并做M matlab-shell.如果编辑foo.m没有在emacs中打开foo.m,请确保服务器已经启动(M服务器启动)。
为了提高效率,您可能希望找出从编辑缓冲区发送命令到matlab进程(尝试模式帮助中的快捷方式)对您有用的方法。最后,如果您需要调试一些东西,请执行dbstop in foo,当您运行foo时,您可以使用dbstop系列命令(查找它们)或打开工具栏(M工具条模式),并使用那里的按钮来控制断点、步进、继续等。
不幸的是,如果您在Windows上,matlab-shell并不是一个选项(这有点令人惊讶,因为我可以从命令行运行几乎所有其他的东西-- Mathematica,R,numpy.) --所以您的紧密emacs/matlab集成的选项有点有限(除非您不介意运行支持emacslink的旧matlab版本)。
发布于 2010-03-04 01:33:35
http://matlab-emacs.sourceforge.net/的matlab-emacs项目是http://matlab-emacs.sourceforge.net/附带的EmacsLink目录中可用的Emacs脚本的最新版本。可以在MATLAB附带的EmacsLink文件中使用matlab-emacs项目文件。“模块名”是"matlab-emacs“。
我写了一篇关于如何在最新版本的MATLAB中使用EmacsLink支持的Emacs的博客文章。你可以在这里读到:
http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/
这里的脚本展示了如何调整MATLAB以使用"emacsclient“,以便在已经运行的Emacs中提取文件。
编辑:
构建系统有一点不完善,需要部分下载。matlab没有编译的事实并不重要。
CVS的matlab-emacs代码包括一个工具箱目录,其中包含一些M代码。当您运行该代码时,它应该设置MATLAB以使用emacsclient作为编辑器。我用最新的MATLAB编写emacsinit.m,所以您可能需要使用不支持所有功能的旧MATLAB来编辑它。
要从matlab-shell运行emacsclient,应该自动设置路径,并自动运行emacsclient。如果不使用matlab-shell,则需要将该目录添加到MATLAB路径中,然后调用emacsinit。
如果它不适用于编辑调用,那么我猜旧的MATLAB没有相同的配置特性。您可以在启用桌面的情况下启动MATLAB一次,并使用Preferences对话框将外部编辑器指定为emacsclient -n。
发布于 2010-09-03 06:32:45
matlab-publish.el没有编译的原因是因为它实际上没有被MATLAB脚本dl_emacs_support.m.下载(因此丢失)。我还发现下载脚本也没有从CVS下载存在于tarball中的company-matlab-shell.el,。因此,当调用make时,如果找不到所需的文件,就会发生错误。
更糟糕的是,当源文件通过在MATLAB中执行脚本下载时,dl_emacs_support.m脚本被替换为来自CVS的文件。因此,在下载文件后,对dl_emacs_support.m的修补程序或修改将丢失。
为了安全起见,我建议从CVS服务器上的tarball下载matlab-emacs,或者签出源代码。那么,汇编工作应该进行得很顺利。
关于CEDET的注释:我检查了CEDET的源代码,并毫不费力地编译了它。如果您正在使用Ubuntu,我相信在编译matlab-emacs之前,应该安装存储库中的以下软件包:cedet-common,ede、eieio、semantic、speedbar。这些包被安装到/usr/share/emacs/site-lisp中,所以LOADPATH应该是"/usr/share/emacs/site-lisp/cedet-common /usr/share/emacs/site-lisp/ede /usr/share/emacs/site-lisp/eieio /usr/share/emacs/site-lisp/semantic /usr/share/emacs/site-lisp/semantic/bovine"。
https://stackoverflow.com/questions/2376178
复制相似问题