редактирование сценариев Matlab - PullRequest
2 голосов
/ 04 марта 2010

Я хотел бы редактировать сценарии Matlab в двух случаях

(1) В командном окне matlab, запущенном в терминале Linux, как создать и отредактировать файл сценария? используйте

edit(filename)

вызовет интерактивный редактор, который нежелателен при работе на сервере Linux.

(2) В emacs есть ли способ удобно редактировать скрипт matlab? Что лучше, используя MATLAB-Emacs или EmacsLink?

когда я пытаюсь оформить cvs MATLAB-Emacs из http://sourceforge.net/scm/?type=cvs&group_id=154105, какое имя модуля мне следует указать?

Спасибо!


EDIT:

При установке MATLAB-emacs возникает некоторая проблема. Я думал, что мой CEDET установлен здесь:

/usr/share/emacs22/site-lisp/cedet-common   
/usr/share/emacs22/site-lisp/cedet-contrib  

У меня CEDET версии 1: 1.0pre4-3 (intrepid) в Ubuntu. Поэтому я набираю команду:

$ 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.    

Что не так? Спасибо!

Ответы [ 3 ]

5 голосов
/ 04 марта 2010

Вы должны знать, что начиная с версии R2009a EmacsLink был удален из Matlab, поэтому я бы сказал, что на данный момент Matlab-Emacs является лучшей альтернативой. Основным преимуществом EmacsLink была тесная интеграция с Matlab, особенно при использовании отладчика, но текущая версия Matlab-Emacs вполне способна и, вероятно, удовлетворит потребности большинства людей так же, как и EmacsLink.

Для вызова Emacs из Matlab самое чистое решение - запустить сервер Emacs (M-x server-start). Затем можно настроить команду edit (), чтобы открыть скрипт в Emacs. Подробные инструкции о том, как это сделать, а также о запуске matlab-shell как низшего процесса приведены здесь:

http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/

Относительно проверки CVS: modulename является "matlab-emacs". Раньше вы могли загружать архив и просто распаковывать его в свой каталог elisp.

РЕДАКТИРОВАТЬ: Я решил переустановить Matlab-Emacs; вот пошаговое из того, что я сделал. (Шаги довольно очевидны, но это может быть полезно, если посмотреть, как легко столкнуться с ошибкой компиляции или неправильно интерпретировать некоторые инструкции). Обратите внимание, что matlab-emacs не компилировался, пока я не переустановил CEDET.

Скачать CEDET с http://cedet.sourceforge.net/ (1.0pre7 в моем случае) Распакуйте архив в ~ / .emacs.d / elisp / (теперь есть каталог ~ / .emacs.d / elisp / cedet-1.0pre7 /) Скомпилируйте CEDET через make EMACS=/usr/bin/emacs Находясь в ~ / .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.m add

addpath('~/.emacs.d/elisp/matlab-emacs/toolbox','-begin');
rehash;
emacsinit;

Это должно сделать это! Запустите emacs и выполните M-x matlab-shell. Если редактирование foo.m не открывает foo.m в emacs, убедитесь, что сервер запущен (M-x server-start).

Чтобы быть наиболее продуктивным, вы, возможно, захотите выяснить, что работает для вас с точки зрения отправки команд из буфера редактирования в процесс Matlab (поэкспериментируйте с ярлыками в справке режима). Наконец, если вам нужно отладить что-либо, выполните dbstop in foo, и когда вы запустите foo, вы можете либо использовать команды семейства dbstop (посмотреть их вверх), либо включить панель инструментов (Mx tool-bar-mode) и использовать кнопки там, чтобы управление точками останова, пошаговым выполнением, продолжением и т. д. По завершении введите dbquit.

К сожалению, если вы работаете в Windows, matlab-shell не подходит (что немного удивительно, если посмотреть, как я могу запускать практически все остальное под солнцем из командной строки - Mathematica, R, numpy ..) .) - поэтому ваши возможности для тесной интеграции в emacs / matlab несколько ограничены (если вы не возражаете против запуска старой версии matlab, которая поддерживает emacslink).

4 голосов
/ 04 марта 2010

Проект matlab-emacs по адресу http://matlab -emacs.sourceforge.net / является немного более современной версией скриптов Emacs, доступных в каталоге EmacsLink, который поставляется с MATLAB.Можно использовать файлы проекта matlab-emacs с файлами EmacsLink, которые поставляются с MATLAB."Modulename" - это "matlab-emacs".

Я сделал сообщение в блоге о том, как использовать Emacs с MATLAB в более поздних версиях MATLAB, где была прекращена поддержка EmacsLink.Вы можете прочитать это здесь:

http://blogs.mathworks.com/desktop/2009/09/14/matlab-emacs-integration-is-back/

Скрипты здесь показывают, как настроить MATLAB для использования "emacsclient", чтобы файлы загружались в уже работающий Emacs.

РЕДАКТИРОВАТЬ:

Система сборки немного несовершенна с частичной загрузкой.Тот факт, что matlab-publish не компилировался, не критичен.

Код matlab-emacs из CVS включает в себя каталог инструментов с некоторым количеством M-кода.Когда вы запускаете этот код, он должен настроить MATLAB для использования emacsclient в качестве редактора.Я написал emacsinit.m для самой последней MATLAB, поэтому вам может потребоваться отредактировать ее с помощью старых MATLAB, которые не поддерживают все функции.

Чтобы запустить emacsclient из matlab-shell, путь должен быть установлен автоматическии он должен запустить emacsclient автоматически.Если вы не используете matlab-shell, вам нужно добавить этот каталог в путь к MATLAB, а затем вызвать emacsinit.

Если он не работает для вызовов редактирования, то я думаю, что более старыйMATLAB не имеет таких же функций конфигурации.Вы можете запустить MATLAB один раз с включенным рабочим столом и использовать диалоговое окно «Настройки», чтобы указать свой внешний редактор как emacsclient -n.

0 голосов
/ 03 сентября 2010

Причина, по которой matlab-publish.el не компилируется, заключается в том, что на самом деле он не загружается (поэтому отсутствует) сценарием MATLAB dl_emacs_support.m . Я также обнаружил, что скрипт загрузки также не загружал company-matlab-shell.el , который существует в архиве из CVS. Следовательно, когда вызывается make, возникает ошибка, когда требуемые файлы не найдены.

Еще хуже, сценарий dl_emacs_support.m заменяется файлом из CVS при загрузке исходных файлов путем выполнения сценария в MATLAB. Исправления или модификации dl_emacs_support.m , таким образом, теряются после загрузки файлов.

Чтобы быть в безопасности, я рекомендую скачать matlab-emacs из tarball на сервере CVS или проверить исходный код. Компиляция должна идти хорошо тогда.

Замечание по поводу CEDET : Я проверил исходный код CEDET и скомпилировал его без всяких усилий. Если вы используете Ubuntu, я считаю, что следующие пакеты в репозитории должны быть установлены до компиляции matlab-emacs: cedet-common , ede , eieio , семантический , скоростной бар . Эти пакеты установлены в /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".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...