Emacs:仅加载必要的 yasnippets

标签 emacs yasnippet

假设,我有 2 个 yasnippets 子目录:

~/.emacs.d/yasnippets/perl-mode
~/.emacs.d/yasnippets/php-mode

目前我在我的 .emacs 中使用以下代码:

(defvar *my-emacs-lib-dir* "~/.emacs.d/")
(load (concat *my-emacs-lib-dir* "plugins/yasnippet/yasnippet"))
(setq yas/snippet-dirs nil)
(yas/initialize)

;; Develop and keep personal snippets under ~/emacs.d/yasnippets
(setq yas/root-directory (concat *my-emacs-lib-dir* "yasnippets"))
(yas/load-directory yas/root-directory)

因此,它会加载 ~/.emacs.d/yasnippets 的所有子目录中的所有 yasnippets。

是否可以让它按需加载 yasnippets?如果我打开一个 php 文件,但没有加载 php-mode 的片段,请加载它们。但不要在启动时加载所有内容。

最佳答案

如果我没记错的话,在新版本中,片段的加载将按需执行,如果您使用推荐的加载顺序:

(add-to-list 'load-path "~/path-to-yasnippet")
(require 'yasnippet)
(yas-global-mode 1)

您还可以对 yas-load-directory 函数使用可选的 use-jit 标志,这将强制从该目录按需加载片段。请参阅此函数的说明(C-h f yas-load-directory)

关于Emacs:仅加载必要的 yasnippets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249885/

相关文章:

r - 如何在 Emacs + ESS 中对 Rmarkdown 文档运行拼写检查?

emacs - 有什么方法可以在 Redmine(或其他问题跟踪器)和纯文本待办事项列表之间进行同步?

javascript - 在web模式下使用其他模式的yasnippets

emacs - 将 hl-line 放在 Emacs 背景堆栈的最后

emacs - 有没有一种快速的方法来连接 clojure swank 和 slime 以便在 emacs 中快速复制?

emacs - Speedbar如何添加对自定义源文件的支持?

emacs - 停用 Emacs 中的特定 yasnippets

emacs - yasnippet 如何调试?

emacs - 当 Yasnippet 宏可以触发时,如何触发事件?

java - 如何编写根据缓冲区目录扩展为 Java 包声明的 YASnippet?