Статьи

Сказка об Emacs, Clojure и прикрепленных пакетах

Это все равно что пытаться придавить кенгуру на батуте. — Сид Ваддел

Если вы занимаетесь разработкой [сценария] clojure, скорее всего , вы делаете это через Emacs и CIDER . Опыт, как правило, не что иное, как удивительный , но время от времени вы сталкиваетесь с некоторыми причудами. Это был тот случай, когда вышел последний CIDER, в основном из-за того, что мне нравится хранить свои Emacs.

ТЛ; др

CIDER и clj-refactor имеют несовместимые стабильные выпуски, для которых вам нужно убедиться, что последние происходят от melpa-unstable

Стабильный против нестабильного

Я использую Clojure для оплаты счетов , и поэтому я не могу позволить себе слишком много ходить по кровавому краю. Вот почему я убедился, что все мои пакеты Emacs поступают из немного более надежного потока стабильных выпусков:

01
02
03
04
05
06
07
08
09
10
11
(require 'package)
 
(setq package-archives
      '(("gnu" . "https://elpa.gnu.org/packages/")
        ("melpa" . "https://stable.melpa.org/packages/")
        ("melpa-unstable" . "https://melpa.org/packages/")))
 
(setq package-archive-priorities
      '(("melpa" . 50)
        ("gnu" . 10)
        ("melpa-unstable" . 0)))

Приоритеты, установленные в архивах пакетов, гарантируют, что выпущенные пакеты (из melpa-stable ) будут установлены вместо их нестабильных снимков, если они существуют. В идеале я хотел бы удалить melpa-unstable из моей конфигурации, но есть случаи, в которых нужно хранить это зло. Как причина, почему я пишу это.

CIDER и clj-refactor и пиннинг

Последний и самый лучший CIDER ( v0.17.0 ) ранее в мае 2018 года, в то время как последний clj-refactor довольно древний, начиная с июня 2017 года. Эти два пакета теперь несовместимы, и если вы установили оба в свой Emacs, ваш REPL не сможет начать. Об этом много, много-много раз clj-refactor в clj-refactor с clj-refactor , но совместимость с Java 9 сдерживает любые новые выпуски clj-refactor , а это значит, что мы можем ждать довольно долго, прежде чем сможем получить стабильную среду разработки clojure. в том числе рефакторинги. Нам нужно возиться с собой:

1
2
3
4
5
6
7
8
;; manual package pinning:
(add-to-list 'package-pinned-packages '(clj-refactor . "melpa-unstable") t)
 
;; or if you're using `use-package' to install packages:
(use-package clj-refactor
  :ensure t
  :pin "melpa-unstable"
  ...)

Вот и все. Теперь вы можете безопасно обновлять свои пакеты и снова наслаждаться своей clojure IDE.

Как должным образом отмечено в комментариях dantheobserver , сам use-package некоторое время ожидает стабильного выпуска . Таким образом, у вас есть только один способ правильно закрепить его, аналогично первому варианту выше:

1
(add-to-list 'package-pinned-packages '(use-package . "melpa-unstable") t)

Счастливого взлома!

Смотрите оригинальную статью здесь: рассказ о Emacs, Clojure и закрепленных пакетах

Мнения, высказанные участниками Java Code Geeks, являются их собственными.