Quando estou escrevendo um novo pacote, é ótimo poder testar sua instalação apenas emitindo M-x package-install-from-buffer
. Isso instalará o pacote com package.el
, para que fique abaixo
"~/.emacs.d/elpa"
. No entanto, isso não funciona em pacotes com vários arquivos.
Qual é o procedimento para instalar todos os .el
arquivos no diretório atual como um único pacote com vários arquivos?
fonte
-pkg.el
arquivo opcional é interessante. O que os valores padrão nesse caso?package-install-file
não faz menção a ele trabalhando para diretórios (embora, como você disse, o faça).package-install-from-buffer
diz:Portanto, presume-se que você possa arquivar o diretório (assumindo que ele atenda aos critérios), carregar o arquivo tar no Emacs e usá-lo
package-install-from-buffer
como antes?Edit: Ou, como lunaryorn aponta, não visite o arquivo no Emacs e use
package-install-file
.fonte
M-x package-install-file
,.paradox/paradox-pkg.el
arquivo dentro dotar
, e erros quando isso não acontece. Mesmo para ambosinstall-file
einstall-from-buffer
. Acho que preciso criar esse-pkg
arquivo como uma espécie de receita.-pkg
arquivo, caso contrário, não é um pacote válido, portanto, apenas tarar um diretório aleatório não funcionará. Afinal, o Emacs deve ter algum lugar para procurar os metadados do pacote. Você pode usar MELPAspackage-build
oucask
criar pacotes TAR apropriados a partir de uma árvore de diretórios.C-h i g (elisp) Multi-file Packages
para detalhes.package.el
não possui um bom suporte para este caso de uso. Você precisa executar novamentepackage-install-from-buffer
toda vez que fizer uma atualização no pacote, e também osM-x find-function
amigos não pularão para o código-fonte, mas para a cópiapackage.el
inserida~/.emacs.d/elpa
. Como conseqüência, eu recomendaria não usá-lopackage.el
para este caso de uso (ou de todo, pois ele tem vários outros problemas).Em vez disso, você pode tentar meu gerenciador de pacotes
straight.el
, que foi projetado explicitamente para este caso de uso. Comstraight.el
, não há procedimento de "instalação local". Você acabou de colocar seu repositório~/.emacs.d/straight/repos/<my-package-repo>
e, em seguida, carregar o pacote no seu arquivo init:Sempre que você faz uma alteração no código-fonte, a geração de carregamento automático e a compilação de bytes são refeitas (depois de reiniciar o Emacs). Além disso, você está executando diretamente do repositório Git, para que os
M-x find-function
amigos funcionem conforme o esperado.Finalmente, as versões local e upstream são totalmente intercambiáveis.
straight.el
permite que você faça as alterações locais desejadas, e elas são tratadas tão sagradas quanto as alterações upstream (emborastraight.el
permita reverter automaticamente [e interativamente] seus repositórios para as versões upstream, se desejar). Portanto, não há preocupação em fazer alterações em sua configuração se você deseja fazer o desenvolvimento local: basta fazer o desenvolvimento local. E se você tem um pacote privado que você publica, é trivial: basta empurrá-lo para algum lugar (e provavelmente atualize a receita no seu arquivo init para apontar para o repositório Git, para que vocêstraight.el
possa cloná-lo novamente de uma máquina diferente).Ao contrário de
package.el
, não há diferença no tratamento de pacotes com vários arquivos e arquivos únicos.Para obter uma documentação detalhada sobre
straight.el
, incluindo comparações com outros gerenciadores de pacotes, consulte o README .fonte