我有一个标准的 .emacs 文件,想要在多台计算机上使用。但有些计算机上我无法加载所有的elisp库。
例如,在没有安装的计算机上,我现在会得到以下错误信息:
Cannot open load file: wc-mode-0.2.el
我可以通过以下方式之一使 .emacs 文件在此处不出错吗?
- 在尝试加载库之前检查其是否存在。
- 捕获错误条件。
请注意,上述内容中的 HTML 标签已被保留。
我有一个标准的 .emacs 文件,想要在多台计算机上使用。但有些计算机上我无法加载所有的elisp库。
例如,在没有安装的计算机上,我现在会得到以下错误信息:
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)
;; 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
参数。例如:(require 'feature nil 'noerror)
。 - jpkotta