Как загрузить яснипец при условии
Я занимаюсь программированием на Drupal и создал yasnippets для общих функций: db_select, db_delete и т. Д.
Я хочу загружать их только тогда, когда я работаю над файлом Drupal, а не для общего файла php. Задача заключается в следующем:
дан список файлов yasnippet и путь к текущему открываемому файлу
if(path contains '/sites/all/modules')
{
load all the snippets from the list
}
Как это сделать?
1 ответ
Решение
У вас есть два варианта:
- Создайте новый режим под названием drupal-mode, который наследует все от php-mode, а затем определите фрагменты для этого режима, ознакомьтесь с производными режимами в Руководстве по EMacs, чтобы узнать, как это сделать.
- Добавьте функцию в ловушку 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)