Все наверное знают про возможность установки плагинов в Emacs, "M-x package-list-packages" и вперед - выбираем, устанавливаем, удаляем что не нужно. Это возможно удобно, когда мы экспериментируем с плагинами, играемся с новыми. Но допустим синхронизировать подобным образом плагины на всех своих машинах - уже желания никакого нет. Хочется прописать в конфиг названия всех используемых пакетов, а Emacs, пусть сам при загрузке проверит недостающие и доставит их. К сожалению, встроенной функциональности для этого в Emacs нет, однако добавить такую возможность, как и все остальное, в Emacs не сложно...
(require 'cl) (require 'package) (setq cfg-var:packages '(4clojure dash magit)) (defun cfg:install-packages () (let ((pkgs (remove-if #'package-installed-p cfg-var:packages))) (when pkgs (message "%s" "Emacs is now refreshing its package database...") (package-refresh-contents) (message "%s" " done.") (dolist (p cfg-var:packages) (package-install p))))) (add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/") t) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) (cfg:install-packages)В нем мы в переменную "cfg-var:packages" добавляем названия всех пакетов через пробел, которые должны ставится автоматически. Через "add-to-list" добавляем интересующие нас дополнительные репозитории (в данном случае melpa и marmelade). Дальше функция "cfg:install-packages" устанавливает их, плюс что бы не тормозить загрузку Emacs - не лазить лишний раз в интернет, в функции установки сделана проверка на то, есть ли у нас еще неустановленные пакеты из списка, если нет - то функция инсталяции завершится.
Возможно, для этого подойдёт такой пакет https://github.com/jwiegley/use-package и его использование в org-mode. Например, как описано здесь http://pages.sachachua.com/.emacs.d/Sacha.html
ОтветитьУдалитьДа, спасибо, я смотрел на него когда-то очень давно. Там из проблем то, что на чистый емакс прийдется как минимум встроенными средствами ставить этот пакет, а потом через него все остальные. И что-то там еще было не хорошее, сейчас не вспомню. Нужно будет ещё раз попробовать его, слишком часто мне в последнее время про use-package информация попадается, возможно не оценил в первый раз.
Удалить