我想要一个现有的应用程序(用OCaml编写)并为它创建一个Emacs“接口”(比如,例如,Emacs GDB模式)。我更愿意这样做而不需要编写大量的Lisp代码。在MVC术语中,我希望View是Emacs,但模型和控制器仍然(主要)保留OCaml。
有人知道用Lisp以外的语言编写Emacs扩展的方法吗?这可以采用以某种其他语言绑定到Emacs扩展API的形式(例如,使OCaml成为一流的Emacs扩展语言)或Emacs交互模式,例如,扩展具有可以写入的管道Emacs Lisp表达式并读出结果值。
答案 0 :(得分:13)
http://www.emacswiki.org/cgi-bin/emacs-en?CategoryExtensionLanguage是您可以使用的所有非Elisp扩展语言的列表。
它看起来似乎是以动态语言为中心。
该列表中缺少http://common-lisp.net/project/slime/,因为它不是一种扩展语言,而是一个Elisp-Common Lisp桥。它的源代码将显示如何在套接字上来回通信。
Erlang的类似IDE是Distel,位于http://fresh.homeunix.net/~luke/distel/(当前已关闭)和https://github.com/massemanet/distel。
祝你好运!答案 1 :(得分:4)
我不知道这是否适合您的特定问题,但我使用shell-command-to-string函数做了类似的事情:
(shell-command-to-string
"bash -c \"script-to-exec args\"")
因此,例如,我们有用python编写的现有脚本会破坏文件,所以上面让我通过emacs lisp调用脚本。
快速谷歌搜索found this page描述了一个用Python编写扩展的系统,所以做你想做的事似乎是可行的......你只需看看是否有人为OCaml编写了类似的框架。 / p>
答案 2 :(得分:3)
尝试PyMacs,它允许在Python中扩展Emacs。
编辑:更新后的链接。
答案 3 :(得分:3)
答案 4 :(得分:2)
从静态类型语言方面来看,有些东西看起来非常高效且适用于Haskell:
https://github.com/knupfer/haskell-emacs
对于Scala来说,从Ensime项目中重用它可能是有用的(有一个Emacs和Vim的桥梁):
https://github.com/ensime/ensime-server
此外,快速的谷歌搜索揭示了另一个潜在的候选人,用经典的FP语言OCaml扩展Emacs;该项目有很多.ml
个源文件,所以必须在某个地方建立一个Emacs-OCaml网桥:
答案 5 :(得分:0)
没有“扩展API”。 Emacs Lisp就在那里,而且它没有移动。
您可以从其他进程运行Emacs命令。看看Gnuserv。
有很多应用程序,其中Emacs是单独进程中的模型/控制器视图。 Emacs GDB界面就是一个很好的例子。我不确定一个更简单的例子,也许是sql-postgresql?