
Writing Emacs extensions in languages other than Lisp我想使用一个现有的应用程序(用OCaml编写)并为其创建一个Emacs"接口"(例如,Emacs GDB模式)。 我宁愿不编写大量Lisp代码来执行此操作。 用MVC术语来说,我希望View成为Emacs,但希望Model和Controller保留(主要是)OCaml。 有人知道用Lisp以外的语言编写Emacs扩展的方法吗? 这可以采取与某种其他语言(例如,使OCaml成为一流的Emacs扩展语言)绑定到Emacs扩展API的形式,也可以采用Emacs交互模式,例如,扩展具有可写入其中的管道 Emacs Lisp表达式并读出结果值。 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。 祝好运! 我不知道这是否可以解决您的特定问题,但是我一直在使用shell-command-to-string函数执行类似的操作:
因此,举例来说,我们已有用python编写的脚本,它将破坏文件,因此上述内容使我可以通过emacs lisp调用脚本。 快速的Google搜索发现此页面描述了一个用Python编写扩展的系统,因此似乎可以按照自己的意愿进行操作...您只需要查看是否有人为OCaml编写了类似的框架即可。 现在,传入的emacs 25.1和动态模块可以使用一些Extension Api
库 请查看自述文件中的完整文档。 尝试使用PyMacs,它可以在Python中扩展Emacs。 编辑:更新的链接。 从静态类型语言的角度来看,Haskell的某些功能看起来相当不错,并且功能强大: https://github.com/knupfer/haskell-emacs 对于Scala来说,可以从Ensime项目中重用它(对Emacs和Vim都有桥梁): https://github.com/ensime/ensime-server
此外,谷歌的快速搜索显示了另一种潜在的候选者,可以使用经典的FP语言OCaml来扩展Emacs。该项目有很多 https://github.com/the-lambda-church/merlin 没有"扩展API"。 Emacs Lisp就在那儿,它没有动。 您可以从其他进程运行Emacs命令。看看Gnuserv。 在许多应用程序中,Emacs是单独过程中的模型/控制器视图。 Emacs GDB界面就是一个很好的例子。我不确定一个简单的示例,也许是sql-postgresql? |