经过一天的挣扎,我终于为 SML/NJ 配置了 Emacs。我是 emacs 和 SML 的新手,现在我在如何在 emacs 下运行 sml 程序方面遇到了问题。当我命令时,M-x 短信模式看起来没问题,没有错误报告。
打开(或创建像test.sml这样的文件)后,我编写了简单的sml程序,我不知道如何编译它。我尝试了C-c C-c和C-c C-b,如一些视频所示。但没有任何回应。我正在使用emacs 24.1,SMLNj和Windows vista系统。有些人可以告诉我如何在 emacs 中编译和运行 SML 程序吗?我是初学者,所以简单详细的答案.
谢谢。
改为尝试C-c C-l
。你将不得不摆弄并确保你拥有的任何sml
可执行文件都可以用于Emacs和你的PATH或其他任何东西。我对Windows上的Emacs不够熟悉,无法帮助你。但这是sml-mode
手册的相关部分:http://www.smlnj.org/doc/Emacs/sml-mode.html#Interaction-Mode
我使用这段代码来启动和重新启动 sml repl。我把它绑定到M-s M-m。
(defun isml ()
"If sml repl exists, then restart it else create a new repl"
(interactive)
(when (get-buffer "*sml*")
(with-current-buffer "*sml*"
(when (process-live-p "sml")
(comint-send-eof)))
(sleep-for 0.2))
(sml-run "sml" ""))
(global-set-key (kbd "M-s M-m") 'isml)
(defun gcr/sml-eval-buffer ()
"Intelligently evaluate a SML buffer."
(interactive)
(gcr/save-all-file-buffers)
(let ((sml-process (get-process "sml")))
(when sml-process
(quit-process sml-process)))
(sleep-for 0.25)
(let ((sml-buffer (get-buffer "*sml*")))
(when sml-buffer
(kill-buffer sml-buffer)))
(sml-prog-proc-load-file buffer-file-name))
@wenjun.yan 的答案在我的 Emacs 上不起作用。所以我把它改成这样:
(defun isml ()
"If sml repl exists, then restart it else create a new repl"
(interactive)
(when (get-buffer "*sml*")
(when (process-live-p
(get-process "sml"))
(with-current-buffer "*sml*"
(comint-send-eof)))
(sleep-for 0.2)
(kill-buffer "*sml*"))
(sml-run "sml" ""))
(global-set-key (kbd "<f7>") 'isml)