Репозиторий Dotfiles: переход с подмодулей Git для каждого пакета на ELPA с сохранением переносимости

Я использую подмодули Git в моем репозитории dotfiles для отслеживания каждого пакета Emacs, который я использую. Однако, учитывая, что менеджер пакетов встроен в Emacs 24, я хотел бы перейти на более официальный и простой в использовании метод.

Моя проблема с переключением: с моим текущим методом подмодуля Git любой клон репозитория dotfiles гарантированно будет содержать все упомянутые надстройки. Есть ли в этом диспетчере пакетов встроенная функция, позволяющая синхронизировать пакеты, чтобы любой извлекаемый репозиторий Git содержал необходимые пакеты (или все их можно было установить с помощью одной команды)?

Если нет ничего подобного встроенному, есть ли хук «после установки пакета», который я могу использовать для ведения текстового списка пакетов (позже читаемого с помощью пользовательской команды, которая устанавливает пакеты в список)? По сути, я хотел бы, чтобы мои пакеты/список пакетов находились под контролем версий, чтобы их можно было переносить между компьютерами.


person Jon Gauthier    schedule 04.09.2011    source источник
comment
вы должны проверить el-get github.com/dimitri/el-get   -  person kindahero    schedule 05.09.2011


Ответы (1)


Я попробовал el-get по предложению kindahero, но это не сработало для меня слишком хорошо .. оно не загрузилось правильно — либо из-за какой-то ошибки в коде, либо из-за моего отсутствия навыков в Emacs Lisp (скорее последнее).

Я наткнулся на проект Emacs Prelude и нашел очень простой фрагмент кода при просмотре исходного кода. :

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar prelude-packages
  '(auctex clojure-mode coffee-mode deft gist haml-mode
                 haskell-mode magit markdown-mode paredit projectile
                 sass-mode scss-mode yaml-mode yari yasnippet)
  "A list of packages to ensure are installed at launch.")

(dolist (p prelude-packages)
  (when (not (package-installed-p p))
    (package-install p)))

Я беззастенчиво украл это для своих собственных целей, и это работает отлично. Я удалил почти все свои подмодули, переключившись на диспетчер пакетов (с репозиторием Marmalade).

person Jon Gauthier    schedule 16.10.2011