Il (require)
genera un errore se non riesce. Questo dovrebbe essere tutto ciò di cui hai bisogno.
Se si desidera configurare il comportamento di ECB solo quando è disponibile, cercare principalmente di aggiungere elementi a ecb-hook
- questo è il modo normale di configurare un pacchetto Emacs in modo condizionale.
Se nessun gancio è disponibile, o se si vuole a rotolare a mano per qualche motivo, provare qualcosa di simile
(eval-after-load 'ecb '(setq ecb-be-more-like-better-yes-p t))
Se davvero si vuole veramente a rotolare tutto a mano, è possibile intercettare l'errore da un fallito require
come questo:
(condition-case nil
(progn
(require 'ecb)
(setq ecb-be-more-like-better-yes-p t))
(file-error (message "ECB not available; not configuring")))
si noti che il condition-case
cattura qualsiasi file-error
dall'interno del progn
modo si vuole fare in modo di non fare altre operazioni sui file al suo interno. In definitiva si può decidere di mettere solo il require
all'interno di un condition-case
e l'uso che come condizione per la forma originale if
, ma questo è già sfuggendo di mano ... risposta
(if (condition-case nil (require 'ecb) (error nil))
(setq ecb-be-more-like-better-yes-p t)
(message "ECB not available; not configuring"))
Per quello che vale, il controllo è solo per vedere se "noerror" è definito, quindi qualsiasi valore non nullo funzionerà. Sto usando 't' me stesso. – clintm
: noerror è lo stile common-lisp. Che è più bello :-). – user239558
Questo non funziona con 'AUCTeX' perché' AUCTeX' non può essere richiesto. È necessario usare 'package-installed-p' per' AUCTeX' –