用Lisp以外的语言编写Emacs扩展

用Lisp以外的语言编写Emacs扩展,emacs,lisp,ocaml,Emacs,Lisp,Ocaml,我希望获取一个现有的应用程序(用OCaml编写)并为其创建一个Emacs“接口”(例如,Emacs GDB模式)。我更愿意在不编写大量Lisp代码的情况下完成这项工作。在MVC术语中,我希望视图是Emacs,但模型和控制器仍然(主要)是OCaml 有人知道用Lisp以外的语言编写Emacs扩展的方法吗?这可以采取绑定到其他语言的Emacs扩展API的形式(例如,使OCaml成为一流的Emacs扩展语言),也可以采取Emacs交互模式,例如,扩展有一个管道,它可以在其中写入Emacs Lisp表达

我希望获取一个现有的应用程序(用OCaml编写)并为其创建一个Emacs“接口”(例如,Emacs GDB模式)。我更愿意在不编写大量Lisp代码的情况下完成这项工作。在MVC术语中,我希望视图是Emacs,但模型和控制器仍然(主要)是OCaml


有人知道用Lisp以外的语言编写Emacs扩展的方法吗?这可以采取绑定到其他语言的Emacs扩展API的形式(例如,使OCaml成为一流的Emacs扩展语言),也可以采取Emacs交互模式,例如,扩展有一个管道,它可以在其中写入Emacs Lisp表达式并读取结果值。

我不知道这是否适用于您的特定问题,但我一直在使用shell命令转换字符串函数执行类似的操作:

(shell-command-to-string
    "bash -c \"script-to-exec args\"")
例如,我们已经有了用python编写的脚本,它会破坏一个文件,所以上面让我通过emacs lisp调用脚本

一个快速的谷歌搜索描述了一个用Python编写扩展的系统,所以做你想做的事情似乎是可行的。。。您只需查看是否有人为OCaml编写过类似的框架。

是您可以使用的所有非Elisp扩展语言的列表

它似乎是以动态语言为中心的

该列表中缺少,因为它不是一种扩展语言,而是一种Elisp公共Lisp桥。它的源代码将展示如何通过套接字进行来回通信

Erlang的类似IDE是Distel、at(当前已关闭)和

祝你好运

没有“扩展API”。Emacs Lisp就在那里,它不会移动

您可以从其他进程运行Emacs命令。看看Gnuserv

在许多应用程序中,Emacs是单独流程中模型/控制器的视图。Emacs GDB接口就是一个很好的例子。我不确定是否有更简单的示例,可能是sql postgresql?

Try,它允许在Python中扩展Emacs


编辑:更新链接。

从静态类型语言的角度来看,Haskell的一些功能非常出色:

从Ensime项目中重用Scala可能还有一些有用的东西(为Emacs和Vim提供了一个桥梁):

此外,一个快速的谷歌搜索揭示了另一个使用经典FP语言OCaml扩展Emacs的潜在候选者;该项目有很多
.ml
源文件,因此在某个地方必须有一个Emacs OCaml桥:


一些扩展Api现在可以通过引入的emacs 25.1和动态模块实现

一个库,提供基于
libffi
的外部函数接口


查看上的完整文档。

我建议您看看merlin是如何做到这一点的,正如Erik Allik所建议的,例如启动一个进程,并使用异步处理程序向ocaml merlin进程发送命令。死链接,这没有帮助