3

我正在做一些 Drupal 编程,并为常用功能创建了 yasnippets:db_select、db_delete 等。

我只想在处理 Drupal 文件而不是普通 php 文件时加载它们。任务是这样的:

给定 yasnippet 文件列表和当前打开文件的路径

if(path contains '/sites/all/modules')
{
    load all the snippets from the list
}

怎么做?

4

1 回答 1

2

你有两个选择:

  1. 创建一个名为 drupal-mode 的新模式,它继承 php-mode 的所有内容,然后为该模式定义片段,请查看Emacs 手册中的派生模式以了解如何执行此操作
  2. 向 find-file 挂钩添加一个函数,检查当前缓冲区是否在特定目录中,然后加载所需的片段

无论哪种方式,您都将根据当前目录或文件名做事。

find-file-hook例子

我还没有测试过这段代码,但这个概念就在那里。您可能必须检查该yas/load-directory-1函数是否有其他内容或弄乱参数。

(defun load-drupal-snippets ()
  (when (string-match-p "/sites/all/modules" (file-name-directory (buffer-file-name)))
    (yas--load-directory-1 "/path/to/drupal/snippets/" 'php-mode 'text-mode)))

(add-hook 'find-file-hook 'load-drupal-snippets)
于 2012-09-27T17:30:50.567 回答