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.


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.)


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.


Eu não tinha idéia de garantir que não tivesse que ser um booleano. Bom saber!
Wdkrnls # 23/15


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.


Interessante, você usa algum contrib fornece funcionalidade?
wdkrnls

Sim, alguns itens, embora não me lembre de quais neste momento.
Joe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.