typerex 1.0.1 with ocaml 3.12.1和emacs,找不到cmt(i)文件

时间:2013-05-27 14:27:09

标签: ocaml typerex

是否有人设法获得当前版本的typerex(我认为是1.0.1)意味着ocaml< 4.0.0完全正常工作? 我目前正在使用ocaml 3.12.1,这应该是好的,以及emacs24。我按照了typerex网站上的说明,所以我下载了gz,进行了配置,make,make install并将emacs行添加到我的.emacs文件中。如果我启动emacs,它会执行代码突出显示,但是当我尝试从typerex下拉菜单中获取某些内容时,例如重命名,我得到一个'命令失败:没有cmt(i)文件...'。

根据typerex(http://www.typerex.org/manual-index.html)的网站,我应该在myocamlbuild文件中添加一行,

Options.ocamlc := S [ A "ocp-ocamlc"]

,我喜欢这样:

let _ = dispatch & function
  | Before_options ->
      (* Set up to use ocamlfind *)
      Options.ocamlc     := S [ A "ocp-ocamlc"]

但我仍然遇到同样的问题。

我的.typerex文件指向我所提到的_build,所以CMT _build(这是该文件中唯一存在的东西)。

我开始怀疑,因为显然cmt文件仅支持ocaml 4.0.0或类似的东西(在某处读取),所以我在某处得到了错误版本的东西(我不这么认为,但这当然不能证明什么。 该网站上的文档有点稀疏,支持选项卡立即转发到stackoverflow,所以我在这里,我猜...

卡斯帕

1 个答案:

答案 0 :(得分:3)

从版本4.00开始,OCaml生成

.cmt个文件。我相信Typerex的早期版本提供了一个特别修改版本的OCaml编译器,它集成了-bin-annot分支,已经在4.00版本之前 - -bin-annot正是在OCamlPro上开发的,以满足Typerex的需求。 / p>

Typerex 2的显着不同之处在于,Typerex的上一个/现在的设计使得部署太重,而且正如您所见,难以配置。当您等待更精美的第二版时,您可以使用以下非常好的工具:

  • Merlin是一个年轻的程序,可以从正在编辑的OCaml缓冲区中逐步提取语法和输入信息(因此只有部分正确的来源),以便提供早期错误反馈,它提供了类型感知完成等。它为Vim和Emacs提供了编辑器模式(Vim现在更加精致),我相信对于获得部分增量信息的问题,正确答案完整的消息来源 - 它会比Typerex更好。

  • ocamlspot是一个分析完整 OCaml源文件并提供语义信息的程序,目前主要是定义信息点。从4.00开始,它依赖于-bin-annot机器,因此很容易安装和部署(之前它与4.00之前的Typerex有很多相同的问题)。它也可以从Emacs和Vim中使用(但这次Emacs界面看起来更加精致)。

这些工具的组合不会为您提供Typerex,现有或承诺的所有功能(特别是重构不多),但它们依赖于坚实的设计,随着时间的推移可能会很好地发展。