【发布时间】:2017-03-20 20:10:22
【问题描述】:
我正在尝试构建一个与 HTTP API 对话的小型 emacs 插件。不幸的是,url-retrieve 函数在 emacs
(任何关于构建跨不同版本的 emacs 的 elisp 包的最佳实践的指针将不胜感激 - 我是一个 elisp 初学者。)
【问题讨论】:
我正在尝试构建一个与 HTTP API 对话的小型 emacs 插件。不幸的是,url-retrieve 函数在 emacs
(任何关于构建跨不同版本的 emacs 的 elisp 包的最佳实践的指针将不胜感激 - 我是一个 elisp 初学者。)
【问题讨论】:
我不确定是否有办法停止加载文件。您可以拥有一个适用于所有版本的小型 lisp 文件,除了根据 Emacs 版本选择性地加载其他文件之外什么都不做。
(if (<= emacs-major-version 22)
(require 'foo-22)
(require 'foo-23+))
还有emacs-minor-version(也是一个int)和emacs-version(一个字符串)。
但是,如果该库在旧版本中不起作用,您可能应该只是出错。不管什么用途,它最终都会坏掉,所以你还不如早点大声失败。
在url-retrieve 周围定义一个包装器可能更好,您可以将其用于任一版本:
(defun foo-url-retrieve (url callback &optional cbargs silent inhibit-cookies)
"Wrapper for `url-retrieve'."
(if (<= emacs-major-version 22)
(url-retrieve url callback cbargs)
(url-retrieve url callback cbargs silent inhibit-cookies)))
您甚至可以幻想并尝试模仿 url-retrieve 在 23 岁以上的工作方式。
但我有点同意不关心 22 年以前的版本。
【讨论】:
(when (>= 22 emacs-major-version)
(error "Emacs version %d is not supported" emacs-major-version))
请注意,v22 已在 8 年前被 v23 淘汰。我怀疑很多人仍在使用它...哎呀...收回... Mac OS X Sierra 带有 22.1。 ;-)
【讨论】: