【问题标题】:stop processing .el file if emacs <= 22如果 emacs <= 22,则停止处理 .el 文件
【发布时间】:2017-03-20 20:10:22
【问题描述】:

我正在尝试构建一个与 HTTP API 对话的小型 emacs 插件。不幸的是,url-retrieve 函数在 emacs

(任何关于构建跨不同版本的 emacs 的 elisp 包的最佳实践的指针将不胜感激 - 我是一个 elisp 初学者。)

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    我不确定是否有办法停止加载文件。您可以拥有一个适用于所有版本的小型 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 年以前的版本。

    【讨论】:

      【解决方案2】:

      使用Emacs version:

      (when (>= 22 emacs-major-version)
        (error "Emacs version %d is not supported" emacs-major-version))
      

      请注意,v22 已在 8 年前被 v23 淘汰。我怀疑很多人仍在使用它...哎呀...收回... Mac OS X Sierra 带有 22.1。 ;-)

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多