【问题标题】:Failure to send buffer region to REPL in sml-mode在 sml 模式下发送缓冲区到 REPL 失败
【发布时间】:2013-01-19 07:20:10
【问题描述】:

最近我开始涉足sml-mode Emacs 包以运行 SML 代码。我面临的问题是当我尝试将我的 SML 代码/文件的一个区域发送到 REPL 时(我认为这是在 SML 中编写多行函数而不会受到原始 REPL 困扰的唯一合乎逻辑的方式)。这是我的工作流程:

  • 打开一个 SML 文件(SML 模式显示在窗口底部)
  • 如果 REPL 尚未运行,请打开它 (C-c C-s)
  • 再次回到 SML 文件并编写函数
  • 选择整个功能,然后按C-C C-r。我收到错误消息“不是 `sml-prog-proc` 缓冲区”
  • 现在不要选择区域,只需尝试使用C-C C-l 将整个文件发送到 REPL;迷你缓冲区中再次出现同样的错误

有人可以帮我理解为什么会发生这种情况,以及在使用 SML 时如何将代码从脚本/文件实际发送到 REPL?如果重要的话,我正在使用 SML/NJ。

TIA, 佐助

【问题讨论】:

  • 您可能不想添加您的 emacs 版本和 sml-mode。我已按照您的步骤进行操作,但无法重现您的问题。目前我正在使用 sml-mode 的 $Name$ 版本,根据 sml-mode 信息 :)... 根据 apt-cache 我正在使用 sml- 的 4.1-2 和 23.3+1-1ubuntu9.1 版本mode 和 emacs 分别
  • 当你选择整个函数并按C-c C-r时,缓冲区的模式行说什么?它仍然说缓冲区处于“SML”模式吗?
  • @Stefan:是的,主要模式没有变化;它显示类似(SML Undo-Tree)。
  • @Jesper.Reenberg:emacs 版本为:24.3.50.1; sml-mode.info 文件中的 sml-mode 版本是:4.13;操作系统版本:Xubuntu 12.04 LTS。希望这是足够的信息。 :)

标签: emacs sml


【解决方案1】:

这也困扰着我,因为它在某些情况下有效,但在其他情况下无效。

如果 sml 进程被 C-d 杀死(在发出“使用”命令时建议)并立即从同一个缓冲区(C-c C-s)重新启动,则无论何时发生错误都会发生'send-to-repl' 操作被执行。

正确的方法(杀死 repl 之后)是切换回包含正在编辑的 .sml 文件的缓冲区,然后从那里 (C-c C-s) 或通过 (C-c C-r) 或 ( C-c C-l)。

HTH。

【讨论】:

  • 谢谢,这似乎可以解决问题,但我想知道如果 REPL 被杀死并在没有进入 SML 模式文件的情况下启动它为什么不起作用。在接受这个答案之前,我会等待一段时间。 :)
  • 简单看一下 elisp 代码,sml-prog-proc 必须与与 .sml 文件关联的缓冲区链接。当 REPL 从自身内部启动时,代码缓冲区和 REPL 之间没有链接,因此当尝试发送到 REPL 时,代码缓冲区无处可发送。
猜你喜欢
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
相关资源
最近更新 更多