Emacs:.emacs 中延迟加载模式的最佳实践?

标签 emacs clojure dot-emacs

遇到相关文件扩展名时,是否有关于延迟加载模式的最佳实践?

此时我已经安装了大约 25 种不同的 Emacs 模式,并且启动变得缓慢。例如,尽管准备好 clojure-mode 很好,但我很少使用它,而且我想完全避免加载它,除非我打开一个扩展名为 .clj 的文件。这种“懒惰的要求”功能似乎是一般模式配置的正确方法。

我在网上找不到任何东西,所以我自己破解了它。

代替:

(require 'clojure-mode)
(require 'tpl-mode) 

我有这个:
(defun lazy-require (ext mode)
  (add-hook
   'find-file-hook
   `(lambda ()
      (when (and (stringp buffer-file-name)
                 (string-match (concat "\\." ,ext "\\'") buffer-file-name))
        (require (quote ,mode))
        (,mode)))))

(lazy-require "soy" 'soy-mode)
(lazy-require "tpl" 'tpl-mode)

这似乎有效(我是 elisp 新手,因此欢迎发表评论!),但我对在网上找不到有关此主题的任何内容感到不安。这是一个合理的方法吗?

最佳答案

您想要的设施叫autoloading . clojure-mode源文件,clojure-mode.el , 包括关于如何安排的评论:

;;将这些行添加到您的 .emacs 中:
;; (autoload 'clojure-mode "clojure-mode""Clojure 的主要模式"t)
;; (添加到列表 'auto-mode-alist '("\\.clj$".clojure-mode))

关于Emacs:.emacs 中延迟加载模式的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935908/

相关文章:

emacs - 如何在后台执行 shell 命令?

emacs - 一个简单的 lisp 程序

clojure - 如何在 clojure 中实现带有嵌套返回的循环?

clojure - 为什么 compojure 路由定义为宏?

emacs - 有没有办法编写一个始终保持向上兼容的 .emacs?

emacs - Emacs 中的 CoffeeScript 缩进问题

emacs-dired 和 globalff

web-services - 如何在 Ring 处理程序中获取 HttpServletRequest?

regex - 为什么我的 Emacs 正则表达式不与 ^ 匹配行的开头?

emacs - 在 Emacs 中,keyboard-escape-quit 不破坏其他窗口的最佳方法是什么?