# YASnippet: Remove parts of expanded snippet when exiting the current active area based on condition

I want to write a snippet for LaTeX sum that behaves like this: I write "sum" and trigger snippet expansion. "sum" becomes "\sum_{$1}^{$2} $0", with$1 being the first entry point, $2 the second one and$0 the exit point.

If I write nothing inside $1, I want to have the "_{}" part deleted and proceed to$2. Likewise with $2. Is such a thing possible with YASnippet or any other snippet engine? I tried putting an Elisp function that deletes the needed part if exiting with no input made but it breaks the snippet. ## 1 Answer You can do this with an extra step (see "Nested placeholder fields" in the manual): \sum${1:_{${2:}}}^{$3} $0  With the optional field: TAB, TAB, insert field 1, TAB, insert field 2, TAB to exit. Without the optional field: TAB, C-d, insert field 2, TAB to exit. Another option is to use a function that deletes the empty field in case it finds one: \sum_{$1}^{$2}${0:(yas-delete-if-empty)}

(defun yas-delete-if-empty ()
(save-excursion
(when (re-search-backward "\\\\sum\$$_{}\$$^{.+}" (line-beginning-position) t)
(replace-match "" t t nil 1))))

• The first option seems nice enough, thanks! – Alex Babushkin Dec 21 '19 at 21:59