0

经过一天的努力,我终于为 SML/NJ 配置了 Emacs。我对 emacs 和 SML 都是新手,现在我对如何在 emacs 下运行 sml 程序有疑问。当我命令时,Mx sml-mode 看起来不错,没有错误报告。

在打开(或创建像 test.sml 之类的文件)之后,我编写了简单的 sml 程序,但我不知道如何编译它。如某些视频所示,我尝试了 Cc Cc 和 Cc Cb。但没有任何回应。我正在使用 emacs 24.1、SMLNj 和 windows vista 系统。有人能告诉我如何在 emacs 中编译和运行 SML 程序吗?我是初学者,所以简单而详细的答案。

非常感谢您。

4

4 回答 4

1

我使用这段代码来启动和重启 sml repl。我把它绑定到Ms Mm。

(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)
于 2013-03-29T18:18:10.197 回答
1

试试C-c C-l吧。您将不得不摆弄并确保sml您拥有的任何可执行文件都可用于 Emacs 和您的 PATH 或其他任何东西。我对 Windows 上的 Emacs 不够熟悉,无法帮助您。但这里是手册的相关部分sml-modehttp ://www.smlnj.org/doc/Emacs/sml-mode.html#Interaction-Mode

于 2013-01-02T21:53:34.880 回答
0
(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))
于 2013-10-13T02:54:46.500 回答
0

@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)
于 2016-09-20T13:29:51.933 回答