Estoy tratando de usar use-package
para configurar mi org-mode
inicialización. Tengo lo siguiente en mi ~/.emacs
archivo:
(use-package org-mode
:mode "\\.org$"
:ensure org
:config
(progn
(setq org-log-done 'time)
(setq org-confirm-babel-evaluate nil)
(setq org-export-babel-evaluate nil)
(setq org-html-validation-link nil)
;; ... more stuff
)
)
Sin :config
embargo, ninguna de esas cosas de inicialización se está ejecutando. ¿Tengo los nombres de paquete incorrectos o algo así? Me confundo un poco en los nombres de los paquetes vs. los nombres ELPA vs.
org-mode
init-file
use-package
Ken Williams
fuente
fuente
org.el
y verá hacia el final:(provide 'org)
. Ese símbolo (org
) es la que se uso para cargar el paquete, como en:(require 'org)
. En última instancia, esouse-package
es lo que está haciendo, solo con algunas cosas útiles a su alrededor. Un paquete dado puede definir muchos modos, por lo que los nombres de paquete y modo no son siempre los mismos. Este es realmente el mismo problema que la otra pregunta sobre lahtml-mode
definición delsgml-mode
paquete.Respuestas:
Lo siguiente funcionaría. En aras de la claridad, estoy usando lo
:ensure org-plus-contrib
que se desvía un poco del ejemplo en su pregunta.Aquí hay algunas notas explicativas para lo anterior:
(use-package FEATURE-NAME
FEATURE-NAME
es lo que va en la(provide ..)
línea de un paquete. Puesorg-mode
esa línea es(provide 'org)
.:mode ((FILE-REGEXP . MAJOR-MODE))
FILE-REGEXP
es la expresión regular para la que desea que se habilite un modo mayor en particular. Tenías que correcta:"\\.org$"
.MAJOR-MODE
es el nombre del modo principal que desea habilitar (incluida la-mode
parte del nombre del modo principal). En este caso, el nombre del modo principal esorg-mode
.:mode (FILE-REGEXP)
que utilizó lo haría si sólo el trabajoFEATURE-NAME
yMAJOR-MODE
son exactamente la misma. Ejemplo:cperl-mode
.:ensure PACKAGE-NAME
PACKAGE-NAME
es lo que veo en la lista de paquetes (M-x package-list-packages
). Para mayor claridad, en mi solución anterior, estamos instalando el paqueteorg-plus-contrib
1 . Esto es para demostrar que el nombre de la función, el modo principal y el nombre real del paquete no tienen que ser exactamente iguales. ¡Y también prefiero instalarlo en lugar de simple,org-mode
ya que también obtienes todos loscontrib/
beneficios del paquete! :)1 Deberá agregar
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
a su configuración de emacs para instalarorg-plus-contrib
. Consulte la página oficial de instalación del modo org para obtener más información.Nota
La mejor manera de hacer
use-package
que funcione el fragmento anterior es guardarlo primero en su configuración de emacs, luego eliminar las versiones anteriores de Package Manager instaladasorg
y luego reiniciar emacs.fuente
org-babel-do-load-languages
en este contexto, da el errorError (use-package): org :config: Invalid function: org-babel-header-args-safe-fn
. Otros idiomas (por ejemplo,sh
operl
oemacs-lisp
) parecen bien el trabajo.C-h f org-babel-header-args-safe-fn
. Además, no tiene ese fragmento de código en su pregunta. Entonces es difícil adivinar lo que está pasando.(R . t)
línea detiene el error. Así que sí, un problema no relacionado, creo. Podría necesitar abrir otra pregunta ...emacs -Q
al comenzar a limpiar, cargar cuidadosamente mi'package
configuración, desinstalarorg
yorg-plus-contrib
luego volver a instalarlos. El problema se explica aquí: emacs.stackexchange.com/a/13576/8899org-plus-contrib
estropeó la instalación de tu organización y terminaste teniendo una mezcla de versiones. por cierto, necesitas instalar soloorg-plus-contrib
. No necesita instalar elorg
paquete por separado también.Con la advertencia que no he usado
use-package
antes, creo que quieresorg
más queorg-mode
. Estoy basando esto en el hecho de que, en mi Emacs,(package-installed-p 'org-mode)
devuelve nulo mientras(package-installed-p 'org)
que no.fuente