我应该为emacs使用什么包管理器?

时间:2014-07-21 14:16:27

标签: emacs elisp package-managers

我多年来一直是vim用户,最近开始试用 emacs 。这个编辑器有很多可用的组件,比如邮件客户端,IRC客户端等。所有这些组件都需要一个包管理器来更新它们,并且通常可以更容易地处理它们。

vim 上有大量的插件管理器(如Vundle或病原体),不同的人使用不同的东西。

另一方面, emacs 包含最新版本的package.el(开头很棒),但还有el-getpackage.el包裹清单很短。

我应该坚持package.el(并且可能使用marmalade扩展包列表)?或者我需要el-get来进行理智的包管理吗?

1 个答案:

答案 0 :(得分:6)

如果您使用的是最近的Emacs版本,请使用package.el。并且将MELPA 添加到存储库列表。

此外,所有"打包" (或库)需要一个包管理器来更新它们并使它们的处理更容易。有一个有用的Emacs Lisp代码世界没有"打包"并上传到package.el存储库。

更重要的是,无论您是使用package.el来检索还是"安装"包,你应该学习加载,字节编译和使用Emacs Lisp代码的基础知识。不要盲目地使用package.el,而不了解Lisp代码。

"安装"的基础知识Lisp代码手动包括以下内容:

  1. 通常,您需要对所使用的库进行字节编译,以获得更好的性能。如果你这样做,请记住这个警告:

    1a上。加载任何文件(*.el),这些文件定义了您使用的任何其他Lisp库所需的Lisp

    1b中。然后是字节编译(宏定义库和)使用宏定义库的库。 这很重要。 最新版本的宏使用库可能需要最新版本的宏,如果您编译没有第一次加载最新的宏定义,那么你就会遇到麻烦。

  2. 将您使用的所有库放在load-path中的目录中。换句话说:在init文件(load-path)中将变量~/.emacs设置为包含所有包含您使用的Lisp代码的目录的值。

  3. 通常,您希望在自己的代码中使用(require 'foo)(例如在您的初始文件中),以加载库foo

  4. 但是,#3仅在库foo(文件foo.el)实际提供功能foo(provide 'foo)时才有效。如果没有,则可以改为使用(load-library "foo")

    (请注意使用'foo"foo"之间的区别:第一个引用功能foo;第二个引用文件foo.elfoo.elc

  5. 最后,在尝试使用库之前,请帮个忙,看一下文件头的Commentary部分。它通常会告诉您有关使用库的重要信息。即使它没有说出非常重要的东西,也可能会说一些有用的东西(例如一两个小提示)。

  6. 我提到1-5因为我看到太多(不,不多,但太多)新用户只是"安装"使用包管理器的东西,从不看看他们正在安装的代码是什么:它是什么,如何使用它等等。如果Commentary中有某些内容,那么请阅读它;图书馆作者将其放在帮助您

    除此之外,玩得开心!