Descarregar um pacote inteiro ou uma árvore de biblioteca

9

Às vezes eu quero ligar unload-featurepara descarregar uma biblioteca ... e uma biblioteca depende disso ... e outra biblioteca depende dessa biblioteca ...

Como posso descarregar uma biblioteca e todas as bibliotecas que dependem dela, sem percorrer a árvore de dependências manualmente?

Um caso de uso comum é descarregar todas as bibliotecas de um pacote (por exemplo, ao atualizar ou desinstalar); portanto, se houver uma maneira de fazer isso, seria bom o suficiente.

Gilles 'SO- parar de ser mau'
fonte

Respostas:

2

Não há uma maneira integrada de fazer isso - consulte Descarregar no manual Elisp.

unload-featureaceita um forceargumento que permite o descarregamento forçado, Pmesmo que outros pacotes dependam P; isso é suficiente para as suas necessidades?

Caso contrário, você pode tentar criar uma versão recursiva de unload-featurecontendo:

(let* ((file (feature-file feature))
       (dependents (delete file (copy-sequence (file-dependents file))))) 
  (when dependents
    (mapc #'unload-feature-recursive (mapcan #'file-provides dependents))))
Tianxiang Xiong
fonte
Obrigado, corrigi o erro na pergunta. Escrever uma versão recursiva de unload-featureera o ponto da questão.
Gilles 'SO- stop be evil'