2017-06-06 47 views
1

我有一個標準的.emacs文件,我想在多臺機器上使用它。其中一些機器我無法加載我所有的elisp庫。僅當emacs elisp庫存在時才加載

現在,我得到這個機器錯誤的,例如,wc-mode-0.2.el不存在:

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

有沒有一種方法,我可以做的.emacs在這一點上的文件不會報錯了?或者通過:

  1. 在我嘗試加載它之前檢查庫是否存在。
  2. 捕獲錯誤條件。

回答

3

如果找不到文件,loadrequire都有一種不發信號錯誤的方法。

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

所以,你可以這樣做:(!upvoted)

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

您在示例中缺少'NOERROR'參數。例如。 '(要求'功能無'無錯')'。 – jpkotta

+0

@jpkotta謝謝,修正了示例代碼。 – yorodm

+0

真的很不錯。謝謝! – vy32

0

雖然@ yorodm的答案可能更正確,我已經使用了多年的一個形式是:

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