用Lisp以外的语言编写Emacs扩展
我想使用一个现有的应用程序(用OCaml编写)并为其创建一个Emacs"接口"(例如,Emacs GDB模式)。我宁愿不编写大量Lisp代码来执行此操作。用MVC术语来说,我希望View成为Emacs,但希望Model和Controller保留(主要是)OCaml。
有人知道用Lisp以外的语言编写Emacs扩展的方法吗?这可以采取与某种其他语言(例如,使OCaml成为一流的Emacs扩展语言)绑定到Emacs扩展API的形式,也可以采取Emacs交互模式,例如,该扩展具有可以写入的管道Emacs Lisp表达式并读出结果值。
解决方案
回答
我不知道这是否可以解决特定问题,但是我一直在使用shell-command-to-string函数执行类似的操作:
(shell-command-to-string "bash -c \"script-to-exec args\"")
因此,举例来说,我们已有用python编写的脚本,它将破坏文件,因此上述内容使我可以通过emacs lisp调用脚本。
谷歌快速搜索发现此页面描述了一个用Python编写扩展的系统,因此似乎可以按照自己的意愿进行操作...我们只需查看是否有人为OCaml编写了类似的框架。
回答
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。
祝你好运!
回答
没有"扩展API"。 Emacs Lisp就在那儿,它没有动。
我们可以从其他进程运行Emacs命令。看看Gnuserv。
在许多应用程序中,Emacs是一个单独过程中的模型/控制器视图。 Emacs GDB界面就是一个很好的例子。我不确定一个简单的例子,也许是sql-postgresql?
回答
尝试使用PyMacs,它可以在Python中扩展Emacs。
编辑:更新的链接。