Ясно, что не все локальные / пользовательские / персональные пакеты должны быть официально выпущены, и было бы глупо делать это только для того, чтобы воспользоваться встроенной поддержкой управления пакетами. Мне интересно, как генерировать и активировать автозагрузки для локальных пакетов? Это похоже на то, как package.el
это делается для установленных пакетов от ELPA. Чтобы избежать повторного изобретения колеса, есть ли способ «притвориться», что какой-то локальный каталог (с подкаталогами, каждый из которых является локальным / пользовательским / личным пакетом) является ELPA? Я также открыт, el-get
если такой сценарий может быть поддержан, например, с помощью пользовательских рецептов.
Я уверен, что задача довольно распространенная, и любой, кто использует Emacs на продвинутом уровне, рано или поздно приходит к этому. Кто-нибудь может поделиться своим опытом в этой области?
источник
update-directory-autoloads
может использоваться независимо от любого менеджера пакетов.update-directory-autoloads
, чтобы, по сути, сделать его рекурсивным. 2. Вы можете использоватьupdate-file-autoloads
любой файл, который вас интересует, независимо от того, в каком каталоге он находится.package.el
также не является рекурсивным (то есть не поддерживает пакеты с источниками в подкаталогах).Ответы:
Правильное решение (IMO) - использовать менеджер пакетов, который явно поддерживает этот вариант использования. Это было бы
straight.el
, что я написал для этой цели.Вы можете прочитать подробную документацию, включая сравнения с другими менеджерами пакетов, в README , поэтому я буду придерживаться того, как вы можете использовать ее
straight.el
для решения вашей конкретной проблемы.~/.emacs.d/straight/repos/<my-repo>
.Загрузите его, используя
Вы сделали Всякий раз, когда вы вносите изменения в исходный код, генерация автозагрузки и байтовая компиляция будут выполняться заново (при следующем запуске Emacs). Вы также получаете такие вещи, как управление зависимостями, дополнительная автоматизация контроля версий и т. Д. Бесплатно.
straight.el
с,use-package
если вы предпочитаете (это просто синтаксический сахар по большей части).источник
Я делаю следующее в Linux:
Я установил локальный репозиторий melpa путем клонирования melpa.
Я изменяю рецепты, которые я хочу указать на мои местные пакеты. Следующее
local-melpa/recipies/ace-window
Затем из типа local-mepla
make all
илиmake recipies/ace-window
для сборки пакета (ов) вlocal-melpa/packages
Затем
make packages/archive-contents
, который заполняет список пакетов.Тогда в использовании, чтобы последовать, чтобы сказать Emacs использовать мой локальный melpa
Я не понял, как запустить
make
на окнах. Но я могу собрать пакеты вlocal-melpa
Linux и скопировать их в Windows, и emacs понимает и устанавливает пакеты правильно.Преимущество этого заключается в том, что я могу выполнить сброс в любое время, если захочу, удалив мой
~/.emacs.d/elpa/*
каталог и установив любые пользовательские обновления в любой пакет.источник
Если вы заменили уже установленный пакет другой версией, и вам не хватает только файла автозагрузки, вы можете использовать package-generate-autoloads для его генерации:
Я обнаружил, что проще, чем использовать update-directory-autotools, когда мне нужно понизить пакет до более ранней версии.
На самом деле я думаю, что я не очень ответил на ваш вопрос. Я пока оставлю этот ответ здесь, но мой ответ более актуален здесь: /programming/26348561/how-to-generate-autoloads-for-elpa-packages/50100170
источник