Вы можете переопределить fsharp-run-исполняемый файл и использовать его вместо этого:
(defun fsharp-run-executable-file ()
(interactive)
(let ((name (buffer-file-name)))
(if (string-match "^\\(.*\\)\\.\\(fs\\|fsi\\)$" name)
(compile (concat "mono " (match-string 1 name) ".exe")))))
Есть два изменения: 1) concat mono
перед командой (как писал petebu); 2) используйте функцию compile
, чтобы вывод находился в буфере *compilation*
.
Для быстрого тестирования просто оцените вышеупомянутую функцию (добавьте ее в файл инициализации Emacs для постоянного изменения). Обратите внимание, что вам не следует изменять файл fsharp.el, так как я могу обновить его в какой-то момент (вы не хотите потерять свои изменения).
Редактировать
Одна проблема с предыдущей функцией заключается в том, что она изменяет последнюю команду компиляции. Это может раздражать, если вы компилируете свой код с помощью команд compile
или recompile
. Вот исправление:
(defun fsharp-run-executable-file ()
(interactive)
(let ((name (buffer-file-name)))
(if (string-match "^\\(.*\\)\\.\\(fs\\|fsi\\)$" name)
(compilation-start (concat "mono " (match-string 1 name) ".exe")))))