Добавить вкладку в выражении Python в UltiSnip

Я сделал модификацию примера, приведенного в документации UltiSnip:

snippet "be(gin)?( (\S+))?" "begin{} / end{}" br
\begin{${1:`!p
snip.rv = match.group(3) if match.group(2) is not None else "something"`}}${2:`!p
if match.group(2) is not None and match.group(3) != "proof":
    snip.rv = "\label{"+t[1]+":}"`}
    ${3:${VISUAL}}
\end{$1}$0
endsnippet

который, по сравнению с оригинальным добавить \label{envname:} и если envname является proof тогда мы не добавили это. Это может быть полезно, когда мы пишем thm среда, например

be lem<tab> дам

\begin{lem}\label{lem:} <c-j> \end{lem} Единственный недостаток в том, что я не знаю, как добавить заполнитель в позиции \label{lem:$4}, Любая идея?

1 ответ

Я получаю рабочую версию, но не чистую в коде:

snippet "be(gin)?( (\S+))?" "begin{} / end{}" br \begin{${1:`!p snip.rv = match.group(3) if match.group(2) is not None else "something"`}}${2:`!p if match.group(2) is not None and match.group(3) != "proof": snip.rv = '\label{'+t[1]+':'`$4`!p if match.group(2) is not None and match.group(3) != "proof": snip.rv ='}'`} ${3:${VISUAL}} \end{$1}$0 endsnippet

Другие вопросы по тегам