【问题标题】:Can not run REPL sml-mode in Emacs (Mac)无法在 Emacs (Mac) 中运行 REPL sml 模式
【发布时间】:2017-05-16 09:13:48
【问题描述】:

系统:El Capitan v10.11.15

已安装 Emacs 和 smlnj

which smlnj 给我:/usr/local/bin/sml

调整了我的.bash_profile : export PATH="$PATH:/usr/local/bin/sml"

.emacs 到:

(setenv "PATH" (concat "/usr/local/bin/sml:" (getenv "PATH")))

(setq exec-path (cons "/usr/local/bin/sml" exec-path))

现在当我对 sml 文件执行 C-c C-s 时,它给了我:

正在搜索程序:没有这样的文件或目录!

谁能帮帮我?

【问题讨论】:

  • 你在 Emacs 中设置了 SML 解释器的名称(sml-program-name)吗? (你可以把它设置成完整路径,而不必乱用exec-path。)
  • 我遇到了同样的问题,并且在我之前添加了一个 ' 之后它对我有用(缺点。所以 .emacs 看起来像:(setq exec-path '(cons "/usr/local/smlnj/bin " 执行路径))

标签: macos emacs smlnj


【解决方案1】:

2017 年 1 月 2 日星期一 16:44:47 GMT

[无法添加评论,因为声望点数不足 50。]

提供的信息中遗漏了一些细节:

  1. $PATH 和 exec-path 需要目录 - 而不是 sml 二进制文件的文件名。 export PATH=$PATH:/usr/local/bin 最好把它放在 .bashrc 中(这样它就可以在新启动的 shell 中使用)

  2. 什么版本的emacs

  3. 什么版本的 smlnj
  4. 你安装了哪些相关的sml包?
  5. 打开文件时是否激活了 sml 相关模式?
  6. 文件的扩展名是否正确,可以激活 sml 模式?
  7. C-c C-s 绑定到什么? [我已经安装了 tuareg 并且 C-c C-s 一定会运行 utop]

注意点 - which smlnj 应该产生 smlnj not found。 (which sml 将产生/usr/local/bin/sml

【讨论】:

  • 现在可以添加 cmets。 :)
【解决方案2】:

假设您使用 homebrew 或类似软件安装 emacs 和 sml。

注意事项

  • 您的 PATH 环境应该是目录路径列表,而不是文件路径,即

    导出 PATH=$PATH:/usr/local/bin

在您的 .bash_profile 中。请注意,PATH 设置应该放在 bash_profile 而不是 .bashrc 中。不同之处在于 bash_profile 在登录时获取一次,而 bashrc 是针对每个交互式 shell 获取的,因此最好使 bashrc 尽可能小。但是,对于路径设置,如果您计划从启动板运行 emacs,则还有另一个“问题”,因为启动板不会获取您的 bash_profile 或 bashrc 文件。

有多种方法可以将环境设置添加到 luanchpad 配置中,但最简单的 PATH 设置解决方案是将 /usr/local/bin 添加到全局环境中。最简单的方法是在 /etc/paths 文件的一行中添加 /usr/local/bin(您需要使用 sudo 来编辑该文件)。

  • 有一个非常有用的 emacs ELPA 包,称为 exec-path-from-shell,它使设置 exec 路径的东西变得很容易。建议安装该软件包。 melpa 存档中还有一些其他有用的 OSX 特定包,您可能还会发现它们对改进 Emacs 和 OSX 集成很有用。

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 2012-06-23
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多