ocaml的REPL可以支持自动完成等吗?

z_a*_*xis 7 ocaml

除了使用rlwrap之外,还有其他方法可以使ocaml支持自动完成等吗?

祝商祺!

Jef*_*eld 11

最近,在OCaml邮件列表上宣布了一个名为utop的系统.它是OCaml顶级产品的替代产品,具有许多高级功能.它似乎托管在OcamlCore.org:

http://forge.ocamlcore.org/projects/utop/

我没试过,但听起来不错.

我自己用rlwrap.


gas*_*che 7

您可以在Emacs缓冲区内使用ocaml toplevel,它可以获得rlwrap类似于固体的编辑功能,以及Emacs配置中的任何内容,包括潜在的非ocaml特定的完成模式.

除了杰弗里已经引用的JérémieDimino的utop之外,还有其他相对于OCaml顶级项目的老项目.它们并非都提供完成,但您可能仍然对它们感兴趣:

  • Zheng Li的Enhtop(README),提供浏览当前顶级环境的指令
  • Peng Zang的Enhtop +,是Enhtop的增量补丁,带有tuareg-plus模式,提供额外的tuareg功能,包括ocaml-aware完成,也可以从Emacs顶级缓冲区获得

(相关但不是面向顶层的是Jun Furuse的Ocamlspotter,它允许在Emacs中获取OCaml文件的这个名称定义信息的精确位置)

所有这些项目都作为OCaml源的补丁.这意味着要安装它们,您必须下载OCaml编译器的源代码,修补它们,编译并将结果用作OCaml安装(可以选择保留现有的OCaml安装,修补和编译相同版本的编译器分开,并有选择地使用/替换有趣的可执行文件).这也意味着补丁开发者需要遵循OCaml编译器升级的维护负担,并且您可能会受限于要使用哪个版本的OCaml.简而言之,部署起来并不容易.