ясниппец не расширяется, когда перед ключом нет места - PullRequest
2 голосов
/ 21 октября 2011

При использовании yasnippet в emacs и пробеле перед клавишей, которая должна вызывать фрагмент, пробела нет, фрагмент не раскрывается при нажатии Tab .Можно ли сделать так, чтобы фрагмент расширялся, даже если перед ним нет места?

Вот тестовый пример.Сделайте следующий фрагмент

# -*- mode: snippet -*-
# name: \textsubscript (from fixltx2e)
# key: tsub
# --
\textsubscript{$1}$0

и попробуйте его.Обратите внимание, что он расширяется всякий раз, когда перед tsub есть пробел, и что он не запускается, он не запускается, когда перед tsub стоит буква.Кроме того, обратите внимание, что он расширяется правильно, если перед ним стоит пунктуация или скобки.

Подобное поведение также наблюдается у http://groups.google.com/group/smart-snippet/browse_thread/thread/0d08f2c90e24a94d/0a3d7c00d993a7ce?show_docid=0a3d7c00d993a7ce

1 Ответ

2 голосов
/ 24 октября 2011

Внутренне, yas / snippet использует функцию skip-syntax-backward для поиска ключей шаблона.Следовательно, фрагмент кода должен быть отделен от предыдущего текста символом в другом синтаксическом классе, чтобы его можно было распознать.Синтаксические классы включают «составные слова», «знаки пунктуации», «пробелы» и т. Д. Подробности в руководстве elisp .

Когда я читаю, это означает, что вы неиспользуйте ключ, состоящий из всех букв (т. е. составляющих слова), если вы хотите вставить шаблон сразу после другой буквы.

Не очень хорошая новость для вас, но, возможно, следующее будет приемлемым решением?На практике вы вызываете фрагмент перед словом, к которому вы хотите добавить индекс, вместо после .

# -*- mode: snippet -*-
# name: \textsubscript (from fixltx2e)
# key: tsub
# --
$1\textsubscript{$2}$0

Это может стоитьсообщение об ошибке или запросе функции сопровождающему yasnippet.

...