代码之家  ›  专栏  ›  技术社区  ›  Chen Li

何时应该使用“require”一个“autoload”包?

  •  3
  • Chen Li  · 技术社区  · 6 年前

    例如, evil is autoload ,请

    一些博客/线程将使用

    (require 'evil)
    (evil-mode 1)
    

    启用邪恶模式。

    Afaik,Elisp是Lisp2 evil-mode 也是一个函数,所以不需要 setq 是的。

    (defadvice evil-mode (after start-evil activate)
      "Enable Evil in Fundamental mode."
      (if evil-mode
          (progn
            (when (eq (default-value 'major-mode) 'fundamental-mode)
              ;; changed back by `evil-local-mode'
              (setq-default major-mode 'turn-on-evil-mode))
            (ad-enable-regexp "^evil")
            (ad-activate-regexp "^evil")
            (with-no-warnings (evil-esc-mode 1)))
        (when (eq (default-value 'major-mode) 'turn-on-evil-mode)
          (setq-default major-mode 'fundamental-mode))
        (ad-disable-regexp "^evil")
        (ad-update-regexp "^evil")
        (with-no-warnings (evil-esc-mode -1))))
    

    但是由于 autoload 我是说,

    (evil-mode 1)
    

    没有 require ,它也工作得很好(至少对我来说)

    (如果下面任何地方出错,请纠正我,thx)

    我的问题是什么时候该用 要求 如果所需的包已自动加载

    1 回复  |  直到 6 年前
        1
  •  4
  •   phils    6 年前

    你是对的——如果 autoload 声明 evil-mode 已经评估过了,那么没有必要 (require 'evil) 之前 (evil-mode 1)

    个人用户可能需要也可能不需要 (需要邪恶) 不过。这是一个如何安装库的问题。独自一人 ;;;###autoload Cookie什么也不做;但是如果您安装了 evil 使用package.el,它们将被解析并转换为 自动加载 声明,在初始化包时Emacs将加载这些声明。

    如果不使用包管理器安装库,则可能需要 require 或者你自己写 自动加载 可能正在调用的函数的声明。

    推荐文章