首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Emacs:只加载必要的yasnippet

Emacs:只加载必要的yasnippet
EN

Stack Overflow用户
提问于 2013-04-27 16:17:41
回答 2查看 1K关注 0票数 3

假设我有两个yasnippet的子目录:

代码语言:javascript
代码运行次数:0
运行
复制
~/.emacs.d/yasnippets/perl-mode
~/.emacs.d/yasnippets/php-mode

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

代码语言:javascript
代码运行次数:0
运行
复制
(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/yasnippet的所有子目录中的所有yasnippet。

有没有可能让它按需加载yasnippet?如果我打开一个php文件,但是php-mode的代码片段没有加载,那就加载它们。但不是在启动时加载所有内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-27 18:24:13

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

代码语言:javascript
代码运行次数:0
运行
复制
(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)

票数 3
EN

Stack Overflow用户

发布于 2013-04-27 16:51:48

也许像这样的东西能行得通。

代码语言:javascript
代码运行次数:0
运行
复制
(defvar yas/loaded-php-snippets nil)

(defun yas/load-php-snippets()
   (if (not yas/loaded-php-snippets)
    (progn
      (yas/load-directory  (concat yas/root-directory) "/php-mode")
      (setq yas/loaded-php-snippets t))))

(add-hook 'php-mode-hook 'yas/loaded-php-snippets)

这只是一个例子,但可以想象的是,可以在mode-hooks和yas加载目录之间有映射,如果还没有加载特定的目录,则只加载它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16249885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档