Пакеты (в других местах это называется «плагины») Emacs может устанавливать разными способами, но наиболее распространённый — использование архивов пакетов.
Основных архивов 4:
ELPA — от Emacs Lisp Packages Archive.
В актуальных версиях Emacs последние два архива используются по умолчанию, а вот MELPA и MELPA Stable надо подключать вручную.
Долгое время я ставил пакеты из MELPA, ведь это самый большой архив, и пакеты в нём самых последних версий. Однако, это создаёт и определённые трудности. Пакеты в MELPA — это самые свежие версии кода в соответствующих репозиториях, при том часто сломанные.
MELPA Stable эту проблему не решает, так как содержит версии кода, отмеченные тегами. Тег не является гарантией качества или стабильности.
Пакеты в GNU ELPA и NonGNU ELPA всегда казались мне старыми. Однако, когда я начал писать книгу про Emacs, то понял, что я не могу и не должен давать своим читателям примеры плохих практик. Если редактор будет постоянно ломаться, то зачем он нужен?
Поэтому я и решил поставить эксперимент над собой, и убрал из init.el код, добавляющий архивы MELPA и MELPA Stable в список известных.
Несколько пакетов оттуда мне всё ещё нужны, но эту проблему можно легко решить, достаточно использовать атрибут :vc в use-package:
;; 📦 APHELEIA
;; https://github.com/radian-software/apheleia
;; Автоформат буфера перед сохранением.
(use-package apheleia
:vc
(:url "https://github.com/radian-software/apheleia.git"
:rev "v4.4.3")
:custom
(apheleia-mode-lighter " ɑ" "Вместо длинного Apheleia")
:bind
(:map global-map
("<f12>" . apheleia-format-buffer))
:hook
((emacs-lisp-mode
python-mode
python-ts-mode
ruby-mode
ruby-ts-mode
yaml-ts-mode) . apheleia-mode))
;; 📦 RUSSIAN-TECHWRITER
;; Метод ввода для технических писателей.
;; В отличие от russian-computer, позволяет использовать лигатуры.
;; https://github.com/dunmaksim/emacs-russian-techwriter-input-method
(use-package russian-techwriter
:vc (:url "https://github.com/dunmaksim/emacs-russian-techwriter-input-method.git"
:rev :newest)
:custom
(default-input-method "russian-techwriter" "Метод ввода по умолчанию.")
(default-transient-input-method "russian-techwriter" "Временный метод ввода"))
Всего 2 пакета, из них один — мой собственный.
Примерно год я пользуюсь только GNU ELPA и NonGNU ELPA. Не вижу причин что-то менять и снова пользоваться MELPA и MELPA Stable.