Acabo de instalar el cmake-modepaquete en Emacs 24 usando:
M-x package-install cmake-mode
Puedo ver el paquete en:, ~/.emacs.d/elpa/cmake-mode-20110824y puedo cargarlo usando las instrucciones en la Commentary:sección de ~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el:
;; Add this code to your .emacs file to use the mode:
;;
;; (setq load-path (cons (expand-file-name "/dir/with/cmake-mode") load-path))
;; (require 'cmake-mode)
;; (setq auto-mode-alist
;; (append '(("CMakeLists\\.txt\\'" . cmake-mode)
;; ("\\.cmake\\'" . cmake-mode))
;; auto-mode-alist))
Sin embargo, esto contradice las instrucciones de uso en la página EmacsWiki de ELPA:
... los paquetes se inicializan DESPUÉS de cargar init.el. Esto significa que NO debe poner la inicialización específica del paquete en su init.el ...
Tiendo a estar de acuerdo con esta instrucción porque agrego a mi ~/.gnu-emacsarchivo una línea como:
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
es feo y se romperá si actualizo el paquete y cuándo lo haré. Sin embargo, sin esta línea no puedo usar cmake-mode.
¿Me estoy perdiendo de algo?
Notas:
- No hice nada extraño
package-enable-at-startupy su 'valor est. - Estoy usando preludio .
user-emacs-directoryvalor es"~/.emacs.d/"(Gracias @lawlist por la sugerencia)package-user-direl valor es"~/.emacs.d/elpa"
emacs
package-management
elpa
cmake
Chen Levy
fuente
fuente

default-directoryo eluser-emacs-directory, de modo que elelpadirectorio no se esté cargando?package-installcrea unelpadirectorio y el archivo de autocarga que se crea durante la instalación se basa en esa ubicación.elpadirectorio,~/.emacs.d/cmake-mode-20110824/es decir, no está donde el archivo de carga automática espera que esté.~/.emacs.d/elpa/cmake-mode-20110824/. El problema persiste.Respuestas:
Instalé cmake-mode con marmalade-repo y eché un vistazo a cmake-mode-autoloads.el. Parece que el autor tomó una decisión consciente de
notincluir todo lo necesario para la configuración dentro del archivo de autocarga. Sin embargo, las instrucciones en las líneas 25 a 30 de cmake-mode.el son correctas, que citó en su pregunta. Si usa las líneas 25 a 30 y establece la ruta correctamente, NO necesita una línea de código adicional como(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/").Obviamente, no querrá usar
/dir/with/cmake-mode, quiere usar~/.emacs.d/elpa/cmake-mode-20110824sin una barra diagonal al final.Es posible que deba eliminar el directorio c-make-mode ... e intente reinstalar si el código anterior no funciona (utilizando su propia ruta).
fuente
(package-initialize)está cargando otra. ¿Me equivoco? Quiero decir, no he usado mucho ELPA y aún no he actualizado ningún paquete con él, así que podría estar equivocado. Y, claro, no es una preocupación importante en ningún caso, pero ¿por qué no evitarlo por completo?Dada la naturaleza de la wiki como medio repositorio de código, medio recordatorio de ayuda para los hackers de Emacs, comprensiblemente pasó por alto este punto:
Esto es lo que hago; uno de los primeros archivos cargados por mi script de inicio personalizado (cuya creación, por lo que puedo deducir, es el pons asinorum del uso serio de Emacs 1 )
y a partir de ahí, simplemente,
(require)qué paquetes ELPA necesito. Esto también tiene la ventaja de permitir un control más preciso sobre el comportamiento de los paquetes instalados por ELPA; si, por ejemplo, quiero deshabilitar un paquete dado por el momento pero no desinstalarlo por completo, es una simple cuestión de comentar la(require)llamada relevante , donde el comportamiento predeterminado requeriría mover el paquete fuera de mi directorio ELPA por completo.(1. A pesar de la tentación casi abrumadora, me negué virilmente a nombrar mi script de inicio personalizado
lightsaber.el).fuente
Simplemente puede hacer toda su inicialización después de cargar los paquetes usando
after-init-hook. De EmacsWiki :fuente
Tuve un problema similar cuando comencé a usar ELPA. En mi caso, he tenido varios paquetes locales, ya que no estaban presentes en ELPA.
Y así había alterado la ruta de carga. Por alguna razón, package.el no actualiza correctamente la ruta de carga. Para resolver el problema tuve que poner
(setq load-path (cons "~/.emacs.d" load-path))después de la llamada apackage-initializefuente