cask是什么
cask是emacs的一个包管理器
将emacs的包下载安装和管理从emacs分离出来,
统一通过.cask描述文件进行管理.
然后使用外部的cask命令进行:下载,安装,版本维护,等等
为什么使用cask
原生的emacs
只能手动下载包,安装,升级(给定一份包的列表,用户需要一个一个查找和安装)
不去管理版本和兼容性(只能从 ~/.emacs.d/elpa
文件夹下看到安装的包)
子龙山人的配置
本身就是一个简易的包管理系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ;; 为使用common lisp的语法中的loop函数 (require 'cl) ;; 配置使用melpa源 (when (>= emacs-major-version 24) (require 'package) (package-initialize) (add-to-list 'package-archives '("melpa-stable" . "https://melpa.org/packages/") t) ) ;; 定义需要的包 (defvar choug/packages '( company ) "Default Packages") ;; 定义不需要卸载的包列表为自定义的变量 ;; 在使用package-autoremove时不会自动删除 (setq package-selected-packages choug/packages) ;; 检测是否所有包均被安装 (defun choug/packages-installed-p () (loop for pkg in choug/packages when (not (package-installed-p pkg)) do (return nil) finally (return t))) ;; 如果有包没有安装,则安装之 (unless (choug/packages-installed-p) (message "%s" "Refreshing package database...") (package-refresh-contents) (dolist (pkg choug/packages) (when (not (package-installed-p pkg)) (package-install pkg))))
已经能够根据包的名称列表去安装所有包,不再需要一个个手动查找,安装.
之所以简易是因为
只能管理包名称,不能管理具体版本
需要时刻更改el文件,
emacs针对lisp的语法配置显得用其他编辑器编辑该el文件就是灾难
cask
相比子龙山人的配置,cask可以
定义具体版本,具体到git的某个commit
手动安装某个固定版本的包:克隆到elpa后全换到特定commit
如果有多个emacs版本,可以为每个emacs定制合适的能正常运行的包
语法相对简单,emacs出问题了可以在外部修复
使用场景
推荐人群
用的包异常多还异常容易出错还异常想升级到最新
在emacs报错后失去用emacs -Q修理配置文件的信念,不然子龙山人的配置已经足够了
不需要使用人群
如何使用cask
略
参考
为什么使用cask
使用cask