提供外部程序和软件包的正确方法?


12

我维护了许多elisp软件包(例如codesearch,emacs-ycmd,traad),这些软件包将从能够安装它们使用的外部程序中受益,从而节省了一些用户的时间和精力。例如,使用codesearch.el能够为用户下载,编译和安装codesearch工具(用go编写,而不是elisp编写)会很好。这将消除使用包装的至少一个障碍。

是否有“最佳做法”来做到这一点?例如,我应该将外部程序放在哪里?

如果您没有任何直接的建议,能否将我推荐给做类似事情的软件包(最好是做得很好)?


1
考虑到您无法控制用户的Emacs操作系统是使用Linux,Windows还是Mac OS作为引导程序,恐怕这可能在极其困难和不可能之间。
mbork 2014年

2
恐怕最好将外部程序与Emacs软件包分离,以获得最大的灵活性。为Emacs软件包提供外部软件的方法似乎最适合被解释的诸如Ruby / Python / TeX / ...文件之类的东西。为Emacs Lisp代码提供通过系统的软件包管理器安装的软件包的相反方法(如mu和不多做)灵活性较差,因为您无法自动加载。
wasamasa

看来你们两个是对的。我可以找到提供外部依赖关系的emacs软件包的唯一示例,例如jedi,它在elpa软件包中捆绑了一些python脚本。
2014年

这是我们可以在Emacs 25中通过动态加载完成的功能吗?
wdkrnls

Answers:


3

没有“最佳实践”。也没有任何现有的支持。我认为,如果专门为软件包Foo安装了它,那么安装它的位置将在软件包Foo的目录中。

至于如何做,假设您的Elisp软件包是通过ELPA安装的,那么您可能想要尝试在主Elisp文件中添加如下内容:

(eval-when-compile (call-process "make"))

然后提供适当的Makefile。当然,要使其在“大多数”平台上都能正常工作,您可能会需要一些更复杂的东西。


1

您可能需要考虑提供一个el-get食谱来安装软件包。

请参阅信息文件中的第9节“编写食谱” 。

:build/system-type如果您在不同平台上有不同的要求,则该功能可能特别有用。有关详细信息,请参见第9.5节“构建”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.