Estoy tratando de usar use-packagepara configurar mi org-modeinicialización. Tengo lo siguiente en mi ~/.emacsarchivo:
(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 :configembargo, 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.ely 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-packagees 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-modedefinición delsgml-modepaquete.Respuestas:
Lo siguiente funcionaría. En aras de la claridad, estoy usando lo
:ensure org-plus-contribque se desvía un poco del ejemplo en su pregunta.Aquí hay algunas notas explicativas para lo anterior:
(use-package FEATURE-NAMEFEATURE-NAMEes lo que va en la(provide ..)línea de un paquete. Puesorg-modeesa línea es(provide 'org).:mode ((FILE-REGEXP . MAJOR-MODE))FILE-REGEXPes la expresión regular para la que desea que se habilite un modo mayor en particular. Tenías que correcta:"\\.org$".MAJOR-MODEes el nombre del modo principal que desea habilitar (incluida la-modeparte 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-NAMEyMAJOR-MODEson exactamente la misma. Ejemplo:cperl-mode.:ensure PACKAGE-NAMEPACKAGE-NAMEes 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-contrib1 . 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-modeya 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-packageque funcione el fragmento anterior es guardarlo primero en su configuración de emacs, luego eliminar las versiones anteriores de Package Manager instaladasorgy luego reiniciar emacs.fuente
org-babel-do-load-languagesen este contexto, da el errorError (use-package): org :config: Invalid function: org-babel-header-args-safe-fn. Otros idiomas (por ejemplo,shoperloemacs-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 -Qal comenzar a limpiar, cargar cuidadosamente mi'packageconfiguración, desinstalarorgyorg-plus-contribluego volver a instalarlos. El problema se explica aquí: emacs.stackexchange.com/a/13576/8899org-plus-contribestropeó la instalación de tu organización y terminaste teniendo una mezcla de versiones. por cierto, necesitas instalar soloorg-plus-contrib. No necesita instalar elorgpaquete por separado también.Con la advertencia que no he usado
use-packageantes, creo que quieresorgmá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