2

有没有人设法让当前版本的 typerex(我猜是 1.0.1)意味着 ocaml < 4.0.0 完全工作?我目前使用 ocaml 3.12.1,应该不错,还有 emacs24。我按照 typerex 网站上的说明进行操作,所以我下载了 gz,进行了配置、制作、制作安装,并将 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,所以我在这里,我猜...

卡斯帕

4

1 回答 1

3

.cmt文件由 OCaml 从 4.00 版开始生成。我相信 Typerex 的早期版本提供了一个专门修改过的 OCaml 编译器版本,该版本集成了-bin-annot分支,早在 4.00 版本之前就已经-bin-annot在 OCamlPro 上针对 Typerex 的需求进行了精确开发。

Typerex 2 将显着不同的原因是 Typerex 以前/现在的设计使其部署起来太重,并且如您所见,难以配置。在等待更完善的第二个版本时,您可以使用以下非常好的工具:

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

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

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

于 2013-05-28T09:38:08.173 回答