Obj*_*ive 29 emacs elisp packages
我想在init.el文件中声明我想在emacs中使用的所有包.我想知道当我启动emacs而不通过列表并标记我要安装的那些时,是否有可能用例如MELPA加载缺少的包?
Chr*_*ris 41
虽然我的原始答案仍然有效,但我现在使用Jordon建议的方法.use-package是整洁的Emacs配置的绝佳工具.事实上,当我写完原始答案时,我已经将它用于干净的包装.
那时,我忽略了一直读到README的底部,因此没有意识到它也可以处理包安装:
对于
package.el用户您可以使用
use-packagepackage.el从ELPA加载包.如果您在多台计算机之间共享.emacs,这将特别有用; 一旦放入您的.emacs,相关的软件包将自动下载.:ensure如果软件包尚不存在,密钥将自动安装:Run Code Online (Sandbox Code Playgroud)(use-package tex-site :ensure auctex)
加载package.el并初始化我的包存储库后,我的配置包含
(if (not (package-installed-p 'use-package))
(progn
(package-refresh-contents)
(package-install 'use-package)))
(require 'use-package)
Run Code Online (Sandbox Code Playgroud)
以及随后的许多片段:
;;; Expand-region
(use-package expand-region
:ensure expand-region
:bind ("C-=" . er/expand-region))
Run Code Online (Sandbox Code Playgroud)
如果您发现此信息有用,请给Jordon一个upvote.
来自Cask网站:
Cask for Emacs是Bundler与Ruby的关系.它旨在使Emacs中的ELPA依赖管理变得无痛(尽可能无痛).这包括您的本地Emacs安装和Emacs包开发.
后安装木桶,你需要像这样添加到您的Emacs配置:
(require 'cask)
(cask-initialize)
Run Code Online (Sandbox Code Playgroud)
Cask为elisp依赖项定义了一个特定于doman的语言.要安装软件包,您需要的内容如下所示:
(source melpa)
(depends-on "auto-complete")
(depends-on "dash")
(depends-on "f")
(depends-on "flycheck")
(depends-on "helm")
(depends-on "magit")
(depends-on "popup")
(depends-on "projectile")
(depends-on "s")
(depends-on "smartparens")
(depends-on "yasnippet")
Run Code Online (Sandbox Code Playgroud)
请注意,这不会进入您的Emacs配置文件,而是进入~/.emacs.d/Cask.
托盘使用交互式安装的软件包更新Cask文件,例如通过M-x package-list-packages,因此您不必手动维护上述文件.
Jor*_*ndo 34
所有这些答案都有效,但我强烈推荐使用 use-package
在这里找到:https://github.com/jwiegley/use-package
use-package不仅会自动安装你丢失的软件包,还会大大简化你的init.el.
这是我的init.el的一个例子
;; initial package setup
(push "path/to/use-package" load-path)
(require 'use-package)
(require 'package)
(mapc (lambda(p) (push p package-archives))
'(("marmalade" . "http://marmalade-repo.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")))
(package-refresh-contents)
(package-initialize)
;; this will install undo-tree if it's not there
;; and it will set it up how I want
(use-package undo-tree
:init (global-undo-tree-mode 1)
:bind (("C-c j" . undo-tree-undo)
("C-c k" . undo-tree-redo)
("C-c l" . undo-tree-switch-branch)
("C-c ;" . undo-tree-visualize))
:ensure t)
Run Code Online (Sandbox Code Playgroud)
看看我的init.el:https://github.com/jordonbiondo/.emacs.d/blob/master/init.el
每个use-package块将安装指定的包,如果它不存在,它将封装我所有的附加设置,如keybindings,hooks和其他自定义.
init文件中的一些代码可以很容易地做到这一点:
(setq my-onlinep nil)
(unless
(condition-case nil
(delete-process
(make-network-process
:name "my-check-internet"
:host "elpa.gnu.org"
:service 80))
(error t))
(setq my-onlinep t))
(setq my-packages
'(ack-and-a-half
ac-nrepl
... more packages here ...
web-mode
yaml-mode
yari
yasnippet))
(when my-onlinep
(package-refresh-contents)
(cl-loop for p in my-packages
unless (package-installed-p p)
do (package-install p)))
Run Code Online (Sandbox Code Playgroud)
实际上并不需要在线检查,但有助于避免在没有互联网连接时卡住Emacs.
有关我的完整配置,请参阅此处:http://steckerhalter.co.vu/steckemacs.html#sec-2-5
小智 5
除了上面建议的优秀选项,您可能还需要看看el-get.我将它用于我的emacs设置并且对它非常满意.
它有什么不同?
el-get的两个主要优点是
1)它可以从各种来源获取包,网站列出以下可能的来源
github,emacswiki,GNU ELPA或Marmalade,私人托管页面,git,bzr,CVS等
2)它可用于运行OS命令,如make包安装期间所需.这使得安装具有非elisp部件的包更容易,例如.emacs-jedi,ropemacs等
安装el-get
安装非常简单,您需要将他们网站上提供的以下引导代码添加到您的init文件中.
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
(unless (require 'el-get nil 'noerror)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.github.com/dimitri/el-get/master/el-get-install.el")
(goto-char (point-max))
(eval-print-last-sexp)))
(el-get 'sync)
Run Code Online (Sandbox Code Playgroud)
el-get如果尚未安装,将安装它.
安装包
然后,您可以声明要安装的软件包并el-get安装它们
;; List of packages you want to install
(defvar my-packages '(auto-complete flycheck smart-parens...))
;; This will install any package from my-packages which is not already installed
(el-get 'sync my-packages)
Run Code Online (Sandbox Code Playgroud)
要么
您可以随时手动安装软件包el-get-install <package-name> RET,我怀疑您是否希望以这种方式安装许多不同的软件包,但这是可能的.
更新包
更新包只是el-get-update更新特定包或el-get-update-all更新所有已安装包的问题.
| 归档时间: |
|
| 查看次数: |
10345 次 |
| 最近记录: |