2010-05-12 8 views
16

Estoy trabajando en un archivo .emacs personalizado que podré usar en varias computadoras diferentes. Me gustaría poder cargar un modo si existe en el sistema. Si no existe, me gustaría que Emacs deje de mostrar el error: File error: Cannot open load file, X.En Lisp, evite "No se puede abrir el archivo de carga" al usar require

Por ejemplo:

(require 'darkroom-mode) 

Resultados en:

File error: Cannot open load file, darkroom-mode 

que estoy usando file-exists-p para probar si existen algunos otros archivos, pero para esta prueba que asumirían necesito buscar mi load-path . Soy nuevo en Lisp, así que esto me está abrumando.

+3

O, simplemente '(ignorar errores (requiere 'lo que sea))'. – jrockway

Respuesta

25

Si lo que desea es mantener require de la emisión de un error, que puede hacer:

; third arg non-nil means to not signal an error if file not found 
; a symbol provides documentation at the invocation (and is non-nil) 
(require 'darkroom-mode nil 'noerror) 

De la documentación (Ch f requerir RET):

require is a built-in function in `C source code'. 

(require feature &optional filename noerror) 

If feature feature is not loaded, load it from filename. 
If feature is not a member of the list `features', then the feature 
is not loaded; so load the file filename. 
If filename is omitted, the printname of feature is used as the file name, 
and `load' will try to load this name appended with the suffix `.elc' or 
`.el', in that order. The name without appended suffix will not be used. 
If the optional third argument noerror is non-nil, 
then return nil if the file is not found instead of signaling an error. 
Cuestiones relacionadas