org-plus-contrib et org avec `require` ou` use-package`


9

Comment puis-je m'assurer que je télécharge et utilise à org-plus-contribpartir du référentiel en mode organisation en utilisant requireou use-package? Package.eltélécharge le package, compile tout et dit ensuite qu'il ne peut pas se charger org-plus-contrib. Ce fil sur la liste de diffusion traite d'un problème similaire, mais inversé. Cependant, si je place (use-package org ..., use-packageretourne t, mais le fait, qu'il org-plus-contribsoit installé ou non.


Pourquoi pas simplement (use-package org-plus-contrib :ensure t)? Certes, j'utilise cask avec palette pour la gestion des paquets, mais il place /home/kmicu/.emacs.d/.cask/24.4.1/elpa/org-plus-contrib-20150202 sur mon chemin et le charge.
kmicu

N'oubliez pas que org-plus-contrib contient des fichiers org et tous les fichiers contrib . Vous devez installer org xor org-plus-contrib , mais pas les deux.
kmicu

Vous pouvez peut-être essayer avecpackage-pinned-packages
csantosb

Réponses:


4

Je ne suis pas sûr à 100% que vous pouvez vraiment vérifier de manière fiable avec seulement requireou use-package... Mais si vous utilisez package.el pour la fonctionnalité de mode organisationnel, votre configuration en mode organisationnel devra peut-être être différée jusqu'à ce que vos packages aient été initialisés. Vous pouvez le faire avec un hook les courses après qu'Emacs a initialisé appelé " after-init-hook".

Donc...

Cela signifie que dans votre .emacs, vous aurez besoin d'un crochet comme:

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

Et ailleurs:

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

Après cela, vous avez accès à la fonctionnalité de vérification et de téléchargement de package.el ...

ainsi, puisque vous voulez également vérifier l'existence du paquet, vous pouvez utiliser " (package-installed-p 'org-plus-contrib)" et l'installer avec " (package-install package)" s'il n'est pas là.

Au total, le code ressemblerait probablement à quelque chose comme:

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

Le reste de votre configuration étant après le (unless ...)corps.

De cette façon, vous obtenez votre configuration, vous obtenez la vérification de l'installation de votre package et vous la téléchargez automatiquement afin que vous puissiez supposer en toute sécurité que tout ce qui dépasse cette ligne dans la fonction peut utiliser les contributions chargées. (En supposant que vous disposez d'une connexion réseau si elle n'existe pas.)


17

La façon correcte de le faire avec use-package est la suivante:

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

Le premier argument garantit qu'il s'agit du fichier org.el en cours de sourcing. L'argument: sure garantit que vous obtenez la version avec tous les extras. Bien sûr, vous devez également avoir ("org" . "http://orgmode.org/elpa/")dans votre liste des archives de paquets.


Je n'avais aucune idée de ne pas avoir à être un booléen. Bon à savoir!
wdkrnls

J'utilise ceci dans ma configuration, mais chaque fois qu'un package tiers (par exemple, elfeed-org) est installé avec use-package, l'organisation par défaut est téléchargée et installée. Cela ne peut pas être vrai, des idées sur la façon d'empêcher que cela se produise?
andreas-h

@AlfredM. qui n'est plus mentionné dans orgmode.org/elpa.html
Günter Zöchbauer

0

Je fais manuellement un package-install org-plus-contrib, mais ensuite j'utilise-package org. Enfin, une version ultérieure de Mx org indique que l'organisation fournie par org-plus-contrib est effectivement utilisée et que tout va bien.


Intéressant, utilisez-vous des fonctionnalités de contrib contrib?
wdkrnls

Oui, quelques articles, mais je ne me souviens pas lesquels en ce moment.
Joe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.