2011-08-02 9 views
7

Cada vez que veo algunas instrucciones de instalación para un paquete de emacs, siempre sugiere utilizar add-to-list 'load-path, nunca funciona para mí. Por alguna razón, y tengo que usar load-file. Por ejemplo, esto no funcionará:add-to-list 'load-path no parece funcionar

(add-to-list 'load-path "~/.emacs.d/jade-mode") 
(require 'sws-mode) 
(require 'jade-mode)  
(add-to-list 'auto-mode-alist '("\\.styl$" . sws-mode)) 
(add-to-list 'auto-mode-alist '("\\.jade$" . sws-mode)) 

pero esto va a funcionar:

(load-file "~/.emacs.d/jade-mode/sws-mode.el") 
(load-file "~/.emacs.d/jade-mode/jade-mode.el") 
(require 'sws-mode) 
(require 'jade-mode)  

alguien me puede decir por qué? EDIT: usar Emacs carbono en MAC OS X 10.5

+0

Cuando dices "no funciona", ¿cómo falla? ¿Es que fallan las llamadas 'require'? – seh

+0

¿Evaluó cada expresión con eval-buffer o eval-expression? O ponlo en tu. Archivo Emacs luego guardar y reiniciar? – justinhj

Respuesta

8

Tal vez el problema es que la tilde líder ('~') no se expande cuando require búsquedas las entradas en la lista load-path. Considere el uso de the expand-file-name function para preparar su entrada para su uso posterior por require:

(add-to-list 'load-path (expand-file-name "jademode" "~/.emacs.d")) 

o

(add-to-list 'load-path (expand-file-name "~/.emacs.d/jademode")) 

Sería de gran ayuda para saber qué Emacs que está utilizando el sistema operativo.

+0

sí, necesita usar expand-file-name cuando agrega a load-path. – jtahlborn

1

No estoy 100% seguro, pero yo supongo que la lista no se instancia y por lo tanto no se puede añadir nada a la lista load-path, acabo de crear una instancia de la lista con

(setq load-path (cons (expand-file-name "~/.emacs.d/lisp") 
       load-path)) 
0

El La primera respuesta no funcionó para mí. Agregar la ruta del directorio, no los archivos .el individuales, funcionó para mí, es decir: (agregar-a-lista 'load-path (expand-file-name "~/.emacs.d))

+1

Estás en lo correcto; pero ** nadie ** sugirió agregar archivos .el individuales a la ruta de carga. Su respuesta no es diferente a la respuesta aceptada. Además, [no coloque ~/.emacs.d en su ruta de carga] (http://stackoverflow.com/a/24791753/324105). – phils

+0

No entendí bien. Pensé que jademode significa jademode.el, pero supongo que es un nombre de directorio. Y gracias por la referencia al otro artículo. –

+0

Ah, eso lo explica. No, 'load-path' solo es un directorio. El origen de la confusión podría ser que cuando "carga" una biblioteca específica, puede (y normalmente debería) omitir la extensión, y dejar que Emacs elija cuál usar. – phils

Cuestiones relacionadas