我有一個標準的.emacs文件,我想在多臺機器上使用它。其中一些機器我無法加載我所有的elisp庫。僅當emacs elisp庫存在時才加載
現在,我得到這個機器錯誤的,例如,wc-mode-0.2.el
不存在:
Cannot open load file: wc-mode-0.2.el
有沒有一種方法,我可以做的.emacs在這一點上的文件不會報錯了?或者通過:
- 在我嘗試加載它之前檢查庫是否存在。
- 捕獲錯誤條件。
我有一個標準的.emacs文件,我想在多臺機器上使用它。其中一些機器我無法加載我所有的elisp庫。僅當emacs elisp庫存在時才加載
現在,我得到這個機器錯誤的,例如,wc-mode-0.2.el
不存在:
Cannot open load file: wc-mode-0.2.el
有沒有一種方法,我可以做的.emacs在這一點上的文件不會報錯了?或者通過:
如果找不到文件,load
和require
都有一種不發信號錯誤的方法。
(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))
雖然@ yorodm的答案可能更正確,我已經使用了多年的一個形式是:
;; load & configure myfeature if it's available
(cond ((locate-library "myfeature")
(require 'myfeature)
(setq myfeature-variable "stuff")
(do-my-thing))
您在示例中缺少'NOERROR'參數。例如。 '(要求'功能無'無錯')'。 – jpkotta
@jpkotta謝謝,修正了示例代碼。 – yorodm
真的很不錯。謝謝! – vy32