org-plus-contrib e org con `require` o` use-package`


9

Come posso assicurarmi di scaricare e utilizzare org-plus-contribdal repository in modalità org usando requireo use-package? Package.elscarica il pacchetto, compila tutto e poi dice che non può essere caricato org-plus-contrib. Questo thread sulla mailing list discute un problema simile, ma invertito. Tuttavia, se lo posiziono (use-package org ..., use-packageritorna t, ma lo fa indipendentemente dal fatto che org-plus-contribsia installato o meno.


Perché non semplicemente (use-package org-plus-contrib :ensure t)? Concesso che sto usando botte con pallet per la gestione dei pacchetti, ma inserisce /home/kmicu/.emacs.d/.cask/24.4.1/elpa/org-plus-contrib-20150202 nel mio percorso e lo carica.
kmicu,

Ricorda che org-plus-contrib contiene file org oltre a tutti i file contribs. Dovresti installare org xor org-plus-contrib , ma non entrambi.
kmicu,

Forse puoi provarci conpackage-pinned-packages
csantosb il

Risposte:


4

Non sono sicuro al 100% che puoi davvero controllare in modo affidabile solo con requireo use-package... Ma se stai usando package.el per la funzionalità in modalità org, potrebbe essere necessario rinviare la tua configurazione in modalità org fino a dopo l'inizializzazione dei pacchetti. Puoi farlo con un hook le esecuzioni dopo che Emacs ha inizializzato chiamato " after-init-hook".

Così...

Ciò significa che nel tuo .emacs, avrai bisogno di un gancio come:

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

E da qualche altra parte:

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

Successivamente, hai accesso alla funzionalità di verifica e download di package.el ...

pertanto, poiché si desidera verificare anche l'esistenza del pacchetto, è possibile utilizzare " (package-installed-p 'org-plus-contrib)" e installarlo con " (package-install package)" se non è presente.

Nel complesso, probabilmente il codice sarebbe simile a:

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

Con il resto della tua configurazione dopo il (unless ...)corpo.

In questo modo, ottieni la tua configurazione, ottieni il controllo dell'installazione del pacchetto e lo scarichi automaticamente in modo da poter presumere in sicurezza che qualsiasi cosa oltre quella linea nella funzione possa utilizzare i contributi caricati. (Supponendo che tu abbia una connessione di rete se non esiste.)


17

Il modo corretto per farlo con use-package è il seguente:

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

Il primo argomento si assicura che sia il file org.el di provenienza. L'argomento: assicura che tu stia ottenendo la versione con tutti gli extra. Ovviamente devi anche avere ("org" . "http://orgmode.org/elpa/")nella lista degli archivi dei pacchetti.


Non avevo idea di non essere un booleano. Buono a sapersi!
wdkrnls,

Lo sto usando nella mia configurazione, ma ogni volta che un pacchetto di terze parti (ad es. Elfeed-org) viene installato con use-package, l'organizzazione predefinita viene scaricata e installata. Questo non può essere giusto, qualche idea su come posso impedire che ciò accada?
andreas-h

@AlfredM. che non è più menzionato in orgmode.org/elpa.html
Günter Zöchbauer

0

Faccio manualmente un pacchetto install-org-plus-contrib, ma successivamente uso use-package org. Infine, una successiva versione dell'organizzazione Mx indica che l'organizzazione fornita da org-plus-contrib è effettivamente utilizzata e tutto va bene.


Interessante, usi qualche contributo per fornire funzionalità?
wdkrnls,

Sì, alcuni elementi, anche se non ricordo quali in questo momento.
Joe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.