我使用合并与Emacs一起编辑OCaml代码。它通常运行得很好,但我解决了以下问题:
我需要使用一个由其他人构建的包,它为OCaml添加了一些与语言无关的关键字。因为我使用这个包来编译代码,所以编译工作非常出色。另一方面,梅林疯了,认为新的关键字是一个错误。幸运的是,新关键字只出现在行的开头,所以我的代码如下所示:
let square x = x * x;;
let rec fact x =
if x <= 1 then 1 else x * fact (x - 1);;
FOO "This syntax is not standard Ocaml" square fact;;其中FOO是新关键字。梅林会抱怨并说Unbound constructor FOO。所以问题是,我能让马林忽略这句话吗?或者你能想到用Merlin不会抱怨的东西来包装语法吗?
发布于 2015-06-24 19:28:53
Merlin不支持任意语法扩展,也不会支持任意语法扩展,但是它们确实对最常用的camlp4扩展(如pa_lwt、pa_macro等)进行解析攻击。最新的merlin版本将跳过未知的行并恢复解析,这样就可以对文件的其他部分进行“转到定义”和类型回滚工作,而不是通过语法扩展名进行修改。
发布于 2016-03-04 11:58:31
另一种选择,虽然非常不同,但它提供了Merlin功能的一个子集(在文件中导航,从库中完成和文档),即ocp索引。
Ocp-索引不解释或键入当前文件(它只扫描文件打开之类的内容),因此不会受到任意扩展的困扰。
https://stackoverflow.com/questions/25676322
复制相似问题