Как загрузить яснипец при условии

Я занимаюсь программированием на Drupal и создал yasnippets для общих функций: db_select, db_delete и т. Д.

Я хочу загружать их только тогда, когда я работаю над файлом Drupal, а не для общего файла php. Задача заключается в следующем:

дан список файлов yasnippet и путь к текущему открываемому файлу

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

Как это сделать?

1 ответ

Решение

У вас есть два варианта:

  1. Создайте новый режим под названием drupal-mode, который наследует все от php-mode, а затем определите фрагменты для этого режима, ознакомьтесь с производными режимами в Руководстве по EMacs, чтобы узнать, как это сделать.
  2. Добавьте функцию в ловушку find-file, которая проверяет, находится ли текущий буфер в определенном каталоге, и затем загружайте нужные фрагменты.

В любом случае вы будете делать вещи, основываясь на текущем каталоге или имени файла.

Пример подключения к файлу поиска

Я не тестировал этот код, но концепция есть. Вам, вероятно, придется проверить 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)
Другие вопросы по тегам