【问题标题】:how to run sml/nj program under emacs如何在emacs下运行sml/nj程序
【发布时间】:2016-09-20 21:29:51
【问题描述】:

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

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

非常感谢。

【问题讨论】:

    标签: smlnj emacs24


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我使用这段代码来启动和重启 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)
      

      【讨论】:

        【解决方案3】:
        (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))
        

        【讨论】:

          【解决方案4】:

          @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)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-15
            • 2013-10-16
            • 2013-01-17
            • 2011-11-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多