3

私はいくつかのDrupalプログラミングを行っており、一般的な関数(db_select、db_deleteなど)のyasnippetsを作成しました。

一般的なphpファイルではなく、Drupalファイルで作業しているときにのみロードしたいと思います。タスクはこれです:

yasnippetファイルのリストと現在開いているファイルのパスを指定します

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

どうやってするの?

4

1 に答える 1

2

次の 2 つのオプションがあります。

  1. php-mode からすべてを継承する drupal-mode という新しいモードを作成し、そのモードのスニペットを定義します。その方法については、Emacs マニュアルのDerived Modesを確認してください。
  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 に答える