use-package-always-pinはどのように設定するのですか?

ここでEmacsのnoobを使うと、可能な限り私のパッケージに melpa-stable を使用したいと思います。

use-package has an option for this, use-package-always-pin.

By default package.el prefers melpa over melpa-stable due to the versioning (> evil-20141208.623 evil-1.0.9), so even if you are tracking only a single package from melpa, you will need to tag all the non-melpa packages with the appropriate archive. If this really annoys you, then you can set use-package-always-pin to set a default.

どうやってこれを設定するのですか?

変数のドキュメントは次のとおりです。

use-package-always-pin is a variable defined in `use-package.el'.
Its value is nil

Documentation:
Treat every package as though it had specified `:pin SYM.

You can customize this variable.

このように:ピンするので

(use-package smooth-scrolling
  :pin melpa-stable)

私はそれがこれらの1つになるだろうと仮定します

(setq use-package-always-pin melpa-stable)
(setq use-package-always-pin 'melpa-stable)

どちらか1つ(別々に試してみて)私にエラーが表示されます:

Symbol's value as variable is void: melpa-stable

emacsを起動してから(setq use-package-always-pin 'melpa-stable)を実行すると、期待通りに動作しているようです。ロード・オーダーの問題ではないかと推測していましたが、どういう仕組みか分かりません。

私は試した:

(with-eval-after-load 'use-package
  (setq use-package-always-pin 'melpa-stable))

運がない。

5
現在、 use-package:pin にはいくつかの問題があるようです:#343 には、この回答を参照する説明があります。 「 package-refresh-contents 」を呼び出す前に package-pinned-packages前に設定する必要があります。
追加された 著者 Greg,
(setq use-package-always-pin "melpa-stable")を試してみませんか?
追加された 著者 K-H-W,

1 答え

use-package-always-pin 変数は文字列に設定する必要があります。あなたの(use-package)の前にそれを設定するのはあなたの使い方です。 :pin を何度も設定する必要がないように、デフォルト値を提供することを意図しています。例えば:

;; Automatically :ensure each use-package.
(setq use-package-always-ensure t)
;; Default value for :pin in each use-package.
(setq use-package-always-pin "melpa-stable")

(use-package editorconfig
  :config (editorconfig-mode 1))

(use-package js2-mode
  :pin "melpa" ;; Use unstable version.
  :mode ("\\.js\\'" . js2-jsx-mode)
  :interpreter ("node" . js2-jsx-mode))

これはうまくいくはずですが、少なくとも:pinuse-package 24)、結果が混在する可能性があります。

1
追加された