Prelude 怎么安装 pinned-packages 里面的东西

尝试 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 到 gnumelpa-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 报错了 :joy:

我最开始下载prelude到本地,跟着他prelude-update, 后来说有些功能默认没有启用,需要将sample/prelude-module.el里面的注释打开。

在后来发现yasnippet没有,搜索在pin里,所以一直以为那里有很多东西需要安装。 原来pin是做稳定配置的功能。

我前面对 pin 理解有误,它的意思是下载稳定版,并且指定稳定版的。所以被 pin 的包仍然会更新/下载,只是从一个相对稳定的来源下载。论坛里之前有讨论过 你为什么要使用 Cask来管理 Emacs 的 Packages? - #5,来自 xuchunyang 我竟然忘了 :sweat_smile:

所以,即使你用了 sample/prelude-pinned-packages.el, 那些包也应该能下载,除非你连接不上 Package Listing , 这是一个网络问题

我已经把rm -rf了,现在正在clone。 下载完了我就用梯子,一直prelude-update

请教,我似乎感觉package-pinned-packages 对 package-install-selected-packages和package-install不起作用,不知您对此是否有明确结论。谢谢

不清楚,我没用过 package-pinned-packages