Acabo de instalar el cmake-mode
paquete en Emacs 24 usando:
M-x package-install cmake-mode
Puedo ver el paquete en:, ~/.emacs.d/elpa/cmake-mode-20110824
y 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-emacs
archivo 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-startup
y su 'valor est
. - Estoy usando preludio .
user-emacs-directory
valor es"~/.emacs.d/"
(Gracias @lawlist por la sugerencia)package-user-dir
el valor es"~/.emacs.d/elpa"
emacs
package-management
elpa
cmake
Chen Levy
fuente
fuente
default-directory
o eluser-emacs-directory
, de modo que elelpa
directorio no se esté cargando?package-install
crea unelpa
directorio y el archivo de autocarga que se crea durante la instalación se basa en esa ubicación.elpa
directorio,~/.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
not
incluir 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-20110824
sin 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-initialize
fuente