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.