Encontrei um bug que envolvia uma interação entre vários pacotes. Para relatar o bug, preciso fornecer uma receita reproduzível que ilustra o problema. Isso requer o carregamento dos pacotes apropriados, mas nada mais do meu init e nenhum outro pacote. Qual é a melhor maneira de fazer isso?
ATUALIZAR
Para esclarecer, estou familiarizado com o conceito de filtrar meus .emacs em uma pesquisa binária para identificar o código que está causando um problema. Nessa situação, eu sei exatamente quais pacotes já estão causando o problema. O que não sei é como usar o package-
sistema para carregar apenas esses poucos pacotes.
(package-initialize)
carregará os pacotes, mas também tudo o mais no meu .emacs.d/elpa
diretório. package-load-list
permite especificar versões específicas de pacotes a serem carregadas ou pacotes específicos a serem excluídos explicitamente . Eu preciso do inverso - como fornecer ao Emacs uma lista de pacotes para incluir , sem carregar outros pacotes no sistema elpa / package.
fonte
.emacs
arquivo em branco - instale cada pacote um por um e verifique se o problema ainda existe. Você pode se surpreender e achar o pacote responsável que não funciona bem com o outro pacote. Quando você for o mais longe possível, escreva as etapas que você usou para reproduzir o problema e envie o relatório de erros - por exemplo, iniciando no Emacs -Q , instale o pacote A, instale o pacote A e, em seguida, instale o pacote B, depois o pacote C, em seguida, abra o*Scratch*
buffer e digite ...comment-region
para comentar (ouC-u
descomentar) uma região do texto.package-load-list
é uma maneira de incluir explicitamente pacotes, basta remover oall
símbolo.Respostas:
A
package-load-list
variável pode ser usada para especificar com precisão quais pacotes e versões carregar:A única coisa a observar é que o valor padrão inclui
all
, se vocêsetq
o fizer, ficará bem porque isso substitui completamente o valor original.fonte
Uma opção que funcionaria bem em contextos em que os desenvolvedores que estão trabalhando para reproduzir o bug ainda não possuam (ou desejam) essas dependências instaladas é usar o
try
pacote ( https://melpa.org/#/try ). Outros podem carregar pacotes a partir do gerenciamento de pacotes sem modificar sua instalação local.fonte
Este caso de uso é uma terrível deficiência de
package.el
, portanto, não usepackage.el
. Em vez disso, use um gerenciador de pacotes comostraight.el
(eu sou o autor), que foi projetado especificamente para suportar esse caso de uso.Para documentação detalhada sobre
straight.el
, incluindo comparações com outros gerenciadores de pacotes, consulte o README . Abaixo, citei a seção relevante para sua pergunta.Usando
straight.el
para reproduzir bugsUma das principais razões pelas quais eu queria escrever
straight.el
era que os gerenciadores de pacotes existentes não eram bons para reproduzir bugs. Por exemplo, alguns deles carregariam todos os pacotes instalados quando o gerenciador de pacotes foi inicializado! Obviamente, isso não é aceitável para um "caso de teste mínimo".Pelo contrário, o bootstrapping
straight.el
não carrega nada além destraight.el
si mesmo (os repositórios de receita padrão são registrados, mas não são clonados até que sejam necessários). Você normalmente deve carregarstraight.el
por meio do snippet de autoinicialização , mas quando estiver dentroemacs -Q
, eis como você pode inicializarstraight.el
:Você também pode fazer isso na linha de comando, talvez criando um alias para ele:
Digamos que você esteja fazendo um relatório de erro para o Projectile. Para carregar apenas o Projectile e todas as suas dependências, execute:
Observe que isso usará as revisões atualmente check-out do Projectile e todas as suas dependências; portanto, você deve anotá-las para fazer seu relatório de erro.
fonte
Quando você precisa dele para uma única vez (por exemplo, para tentar testar uma receita para reproduzir um bug), muitas vezes você pode se safar:
Eu disse "frequentemente" porque não prestará atenção às dependências; portanto, em alguns casos, você precisará adicionar mais desses
-l ...
argumentos para carregar os outros pacotes necessários.fonte