Привязка ключей режима Emacs matlab для выполнения тестов

#unit-testing #matlab #emacs

#модульное тестирование #matlab #emacs

Вопрос:

Я использую Emacs matlab-mode в качестве среды разработки Matlab. У меня также установлен MTEST вместе с Matlab для запуска моих модульных тестов — что я хочу сделать сейчас, так это иметь привязку ключа, которая запускает тесты из текущего файла в оболочке matlab, которую я постоянно открываю вокруг ( M-x matlab-shell ) .

До сих пор у меня было:

 ; Runs the unit tests available in the current buffer
(defun run-matlab-test ()
(interactive)
(matlab-shell-run-command (concat "runtests "
                (car (split-string (buffer-name) "\.")))))

; Bind "C-c l" to running unit tests in matlab-mode
(defun map-run-matlab-test-keys ()
  (local-set-key (kbd "C-c l") 'run-matlab-test))

(add-hook 'matlab-mode-hook 'map-run-matlab-test-keys)
  

Что мне нужно сделать, так это в run-matlab-test функции иметь способ вызова runtests команды с параметром, предоставленным (buffer-name) командой, и все это должно происходить в оболочке matlab, о которой я упоминал выше. Какие-либо подсказки?

Редактировать: мне удалось заставить его работать, позвонив matlab-shell-run-command . Предостережение здесь заключается в том, что оно работает только в том случае, если начальная последовательность такова: откройте свой unit-test.m файл, запустите этот файл M-x matlab-shell (таким образом, matlab запускается с текущего рабочего каталога в каталоге тестов), а затем вы можете использовать вышеуказанную привязку.

Ответ №1:

Чтобы избежать вашего предостережения выше, вы, вероятно, могли бы отправить компакт-диск в matlab перед вызовом runtest, выполнив что-то вроде следующего (непроверенного):

 (defun run-matlab-test ()
  (interactive)
  (matlab-shell-run-command (concat "cd " (file-name-directory (buffer-file-name))))
  (matlab-shell-run-command (concat "runtests "
                            (car (split-string (buffer-name) "\.")))))