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

9

¿Cómo puedo asegurarme de que estoy descargando y usando org-plus-contribdesde el repositorio del modo org usando requireo use-package? Package.eldescarga el paquete, compila todo y luego dice que no se puede cargar org-plus-contrib. Este hilo en la lista de correo discute un problema similar pero invertido. Sin embargo, si coloco (use-package org ..., use-packagevuelve t, pero lo hace si org-plus-contribestá instalado o no.

wdkrnls
fuente
¿Por qué no simplemente (use-package org-plus-contrib :ensure t)? Es cierto que estoy usando barril con paleta para la gestión de paquetes, pero coloca /home/kmicu/.emacs.d/.cask/24.4.1/elpa/org-plus-contrib-20150202 en mi camino y lo carga.
kmicu
Recuerde que org-plus-contrib contiene archivos org más todos los archivos contribs. Debe instalar org xor org-plus-contrib , pero no ambos.
kmicu
Quizás puedas probar conpackage-pinned-packages
csantosb

Respuestas:

4

No estoy 100% seguro de que realmente pueda verificar de forma confiable solo con requireo use-package... Pero si está usando package.el para la funcionalidad del modo org, es posible que su configuración del modo org deba aplazarse hasta después de que se hayan inicializado sus paquetes. Puede hacer esto con un enlace que se ejecuta después de que Emacs se haya inicializado llamado " after-init-hook".

Entonces...

Eso significa que en tu .emacsnecesitarás un gancho como:

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

Y en otro lugar:

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

Después de eso, tiene acceso a la funcionalidad de comprobación y descarga de package.el ...

entonces, dado que también desea verificar la existencia del paquete, puede usar " (package-installed-p 'org-plus-contrib)" e instalarlo con " (package-install package)" si no está allí.

En total, el código probablemente se vería así:

(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 el resto de tu configuración detrás del (unless ...)cuerpo.

De esa manera, obtiene su configuración, obtiene la comprobación de la instalación de su paquete y la descarga automáticamente para que pueda asumir con seguridad que cualquier cosa más allá de esa línea en la función puede usar las contribuciones cargadas. (Suponiendo que tiene una conexión de red si no existe).

Archenoth
fuente
17

La forma correcta de hacer esto con use-package es la siguiente:

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

El primer argumento se asegura de que sea el archivo org.el el que se obtiene. El argumento: asegúrese de que está obteniendo la versión con todos los extras. Por supuesto, también debe tener ("org" . "http://orgmode.org/elpa/")en su lista de archivos de paquete.

Spencer Boucher
fuente
No tenía idea de asegurarme de que no tenía que ser booleano. ¡Bueno saber!
wdkrnls
Estoy usando esto en mi configuración, pero cada vez que un paquete de terceros (por ejemplo, elfeed-org) se instala con use-package, la organización predeterminada se descarga e instala. Esto no puede ser correcto, ¿alguna idea de cómo puedo evitar que eso suceda?
andreas-h
@AlfredM. eso ya no se menciona en orgmode.org/elpa.html
Günter Zöchbauer
0

Hago un paquete-instalar org-plus-contrib manualmente, pero luego hago uso de package org. Finalmente, una versión de la organización Mx posterior indica que la organización proporcionada por org-plus-contrib se usa de hecho y todo está bien.

Joe
fuente
Interesante, ¿utiliza alguna funcionalidad para proporcionar contribuciones?
wdkrnls
Sí, algunos artículos, aunque no recuerdo cuáles en este momento.
Joe