2017-06-06 3 views
1

J'ai un fichier .emacs standard que je veux utiliser sur plusieurs machines. Une des machines que je ne suis pas capable de charger toutes mes bibliothèques elisp.Chargement de la bibliothèque emacs elisp uniquement si elle est présente

En ce moment, je reçois cette erreur sur les machines où, par exemple, wc-mode-0.2.el n'est pas présent:

Cannot open load file: wc-mode-0.2.el 

Est-il possible que je peux faire le .emacs déposer des erreurs pas à ce point? Soit par:

  1. Vérification de l'existence de la bibliothèque avant d'essayer de la charger.
  2. Attraper la condition d'erreur.

Répondre

3

Les deux load et require ont un moyen de ne signaler aucune erreur si un fichier est introuvable.

(load FILE &optional NOERROR NOMESSAGE NOSUFFIX MUST-SUFFIX) 
(require FEATURE &optional FILENAME NOERROR) 

Vous pouvez le faire: (! Upvoted)

;; using load 
(when (load "myfile.el" t) 
     (do-my-thing)) 
;;using require 
(when (require "myfeature" nil t) 
     (do-my-thing)) 
+2

il vous manque les arguments 'NOERROR' dans votre exemple. Par exemple. '(require 'feature nil' noerror)'. – jpkotta

+0

@jpkotta Merci, corrigé l'exemple de code. – yorodm

+0

vraiment sympa. Merci! – vy32

0

Bien que @ la réponse de yorodm est probablement plus correcte, une forme que je l'ai utilisé pendant des années est:

;; load & configure myfeature if it's available 
(cond ((locate-library "myfeature") 
     (require 'myfeature) 
     (setq myfeature-variable "stuff") 
     (do-my-thing))