我需要使用一些本机代码,我想尝试使用 elisp 作为脚本语言。 是否可以调用动态库(Windows 中的 dll)中实现的本机函数?或者唯一的可能是实现本机代码,用 DEFUN (...) 宏包装它并重新编译 emacs?
您无法使用 Emacs Lisp 代码动态加载库。为了解决这个问题,人们通常调用外部程序(进程)并通过向其发送命令并读取其输出来控制它。
您可以查看 slime、tramp、gnuserv、movemail 和其他一些类似的 hack 作为示例。
GNU Emacs 23 有 D-BUS 支持。虽然主要是 Unix 的东西,但 D-BUS 在 Windows 上也受支持,并为用户级应用程序提供 IPC 系统。
你也许可以用它构建你想要的东西。
此功能仅存在于 SXEmacs 中,不支持 Windows,但在 Unix 中工作正常
这可以在终端中使用
emacs
完成,并在 Linux 上使用 IELM REPL
进行窗口化:
启动 repl:
M-x ielm
在 repl 中运行
(load "<path_to_lisp_source>")
现在您应该能够运行任何函数或从此加载的源访问数据。