org-plus-contrib e org com `require` ou` use-package`

8

Como posso garantir que estou baixando e usando org-plus-contribdo repositório do modo organizacional usando requireor use-package? Package.elbaixa o pacote, compila tudo e depois diz que não pode carregar org-plus-contrib. Este tópico na lista de discussão discute um problema semelhante, mas invertido. No entanto, se eu colocar (use-package org ..., use-packageretorna t, mas o faz se org-plus-contribestá instalado ou não.

wdkrnls
fonte
Por que não simplesmente (use-package org-plus-contrib :ensure t)? Concedido que estou usando o barril com palete para o gerenciamento de pacotes, mas ele coloca /home/kmicu/.emacs.d/.cask/24.4.1/elpa/org-plus-contrib-20150202 no meu caminho e o carrega.
Kmicu
Lembre-se de que org-plus-contrib contém arquivos org e todos os arquivos contribs. Você deve instalar o org xor org-plus-contrib , mas não os dois.
Kmicu
Talvez você possa tentar compackage-pinned-packages
csantosb

Respostas:

4

Não tenho 100% de certeza de que você pode realmente verificar apenas com segurança requireou use-package... Mas se você estiver usando o package.el para a funcionalidade do modo organizacional, sua configuração do modo organizacional poderá precisar ser adiada até que os pacotes tenham sido inicializados. Você pode fazer isso com um gancho, depois de inicializado o Emacs, chamado " after-init-hook".

Assim...

Isso significa .emacsque você precisará de um gancho como:

(add-hook 'after-init-hook 'package-config)

E em outro lugar:

(defun package-config ()
;;Your org-mode config goes here.
)

Depois disso, você terá acesso à funcionalidade de verificação e download do package.el ...

portanto, como você também deseja verificar a existência do pacote, pode usar " (package-installed-p 'org-plus-contrib)" e instalá-lo com " (package-install package)" se não estiver lá.

Ao todo, o código provavelmente seria algo como:

(defun package-config ()
  (unless (package-installed-p 'org-plus-contrib)
    (package-refresh-contents)
    (package-install 'org-plus-contrib)))

(add-hook 'after-init-hook 'package-config)

Com o resto da sua configuração sendo posterior ao (unless ...)corpo.

Dessa forma, você obtém sua configuração, a verificação da instalação do pacote e a baixa automaticamente, para poder assumir com segurança que qualquer coisa além dessa linha na função pode usar os comandos carregados. (Supondo que você tenha uma conexão de rede, caso ela não exista.)

Archenoth
fonte
17

A maneira correta de fazer isso com o pacote de uso é a seguinte:

(use-package org
  :ensure org-plus-contrib
 ...

O primeiro argumento garante que seja o arquivo org.el que está sendo originado. O argumento: garantir garante que você esteja recebendo a versão com todos os extras. Claro que você também precisa ter uma lista ("org" . "http://orgmode.org/elpa/")de seus arquivos de pacotes.

Spencer Boucher
fonte
Eu não tinha idéia de garantir que não tivesse que ser um booleano. Bom saber!
Wdkrnls # 23/15
Referência: orgmode.org/elpa.html
Alfred M.
Estou usando isso na minha configuração, mas sempre que um pacote de terceiros (por exemplo, elfeed-org) é instalado com o use-package, a organização padrão é baixada e instalada. Isso não pode estar certo, alguma idéia de como posso impedir que isso aconteça?
andreas-h
0

Eu faço uma instalação do pacote org-plus-contrib manualmente, mas depois uso a pacote org. Finalmente, uma versão organizacional Mx subsequente indica que a organização fornecida pelo org-plus-contrib é realmente usada e está tudo bem.

Joe
fonte
Interessante, você usa algum contrib fornece funcionalidade?
wdkrnls
Sim, alguns itens, embora não me lembre de quais neste momento.
Joe