尝试 bbatsov/prelude 的配置。 看他的意思是把 sample 里面的 prelude-pinned-packages.el 和 prelude-modules.el 这俩文件放到 ~/.emacs.d 里,启动 emacs 为什么 pinned 里面的 package 不安装。
不了解 prelude。
pinned 的意思就是这些包不再更新。如果删除 ~/.emacs.d/elpa 或者一份全新的配置,是不是 pinned 的包也没有安装?你没有描述清楚。
他的prelude-pinned-packages里有很多package,packeges-archive里面有很多package在elpa目录里都没有 刚才把elpa目录删了,重启以后还是有很多没有安装。
我个人猜想,这份配置应该不需要自己yasnippet等常用的的package下载下来,用户完成配置。
(add-to-list 'package-archives
;;'("melpa-stable" . "https://stable.melpa.org/packages/")
'("melpa-stable" . "http://elpa.emacs-china.org/melpa-stable/")
t)
(setq package-pinned-packages
'(
(ace-window . "melpa-stable")
yasnippet . "melpa-stable"
。。。。很多package。。。))
.emacs.d下面的文件不自动加载,放到personal里边吧 至于这个pinned文件是新加的,看说明,大意是这里边的包只从固定的仓库安装
移动到person里在启动后也没有任何安装package的迹象。但是我发现~/.emacs.d/prelude-pinned-packages.elc文件。
难道要我一个一个的package-install?然后手动配置?
大概是pin package是为了防止更新搞蹦你的配置,加到pin名单里就不更新了,所以你把pin的名单清空看看呢
为什么应该安装?Pin 本身跟安装没有关系。
Pin 是用来告诉包管理器你想从哪个 ELPA 安装某些包。比如 ace-window
有三个版本:
Versions: 0.9.0 (melpa-stable), 20170219.256 (melpa), 0.9.0 (gnu)
包管理器默认会安装版本号最大的版本,也就是从 MELPA 安装,如果你想安装稳定些的版本,则需要 Pin 到 gnu
或 melpa-stable
上。
你可以在配置里调用 package-install
。比如:把类似于下面的放到配置的开头,来实现自动安装你需要的包
(setq package-archives
'(("gnu" . "http://elpa.emacs-china.org/gnu/")
("melpa" . "http://elpa.emacs-china.org/melpa/")
("melpa-stable" . "http://elpa.emacs-china.org/melpa-stable/")))
;; 我需要稳定版的 `ace-window',只从 melpa-stable 安装
(setq package-pinned-packages
'((ace-window . "melpa-stable")))
;; 开始安装我需要的包
(dolist (pkg '(ace-window paredit))
(unless (package-installed-p pkg)
(package-install pkg)))
用 Emacs 25 的话,应该可以直接设置 package-selected-packages
,然后 M-x package-install-selected-packages
安装。我自己没试过,一直用 use-package
的 :ensure
安装包。
我把pin里面的都注释了,sample/prelude-module里的全打开,然后M-x prelude-update 呼呼啦啦全安装上了。
但是依然没有头文件补全 yasnippet也不补全,company backend也不自动切换。
注释掉pin里面的可以全部更新,在启动emacs 报错了
我最开始下载prelude到本地,跟着他prelude-update, 后来说有些功能默认没有启用,需要将sample/prelude-module.el里面的注释打开。
在后来发现yasnippet没有,搜索在pin里,所以一直以为那里有很多东西需要安装。 原来pin是做稳定配置的功能。
我前面对 pin 理解有误,它的意思是下载稳定版
,并且指定稳定版的源
。所以被 pin 的包仍然会更新/下载,只是从一个相对稳定的来源下载。论坛里之前有讨论过 你为什么要使用 Cask来管理 Emacs 的 Packages? - #5,来自 xuchunyang 我竟然忘了
所以,即使你用了 sample/prelude-pinned-packages.el, 那些包也应该能下载,除非你连接不上 Package Listing , 这是一个网络问题。
我已经把rm -rf了,现在正在clone。 下载完了我就用梯子,一直prelude-update
请教,我似乎感觉package-pinned-packages 对 package-install-selected-packages和package-install不起作用,不知您对此是否有明确结论。谢谢
不清楚,我没用过 package-pinned-packages
。