Я пытаюсь написать yasnippet для вставки фрагментов кода в файл R Markdown. Я использую многорежимный режим, чтобы иметь несколько основных режимов (уценка, ESS [S]) в одном файле. Это мой фрагмент:
# -*- mode: snippet -*-
# name: chunk
# key: chunk
# --
\`\`\`{r $1}
$0
\`\`\`
Когда я пытаюсь вставить фрагмент в файл .Rmd в режиме уценки, я получаю эту ошибку:
Error in post-command-hook (yas--post-command-handler): (error "Marker points into wrong buffer" #<marker at 7 in test.Rmd>)
Фрагмент появляется, и мой курсор находится в правильном месте (прямо перед второй фигурной скобкой):
```{r }
```
Когда я нажимаю Tab, я получаю следующее:
yas-next-field: Wrong type argument: overlayp, nil
Я предполагаю, что я сталкиваюсь с взаимодействием с полимодом: когда я вставляю фрагмент, я нахожусь в режиме уценки, но затем многомод преобразует содержимое фрагмента кода в режим ESS [S]. Похоже, что в конце концов появится команда для вставки нового чанка в многомод, но в то же время есть ли способ заставить этот фрагмент работать?
M-x tws-insert-r-chunk
. Возможно, вы захотите связать эту команду с сочетанием клавиш - здесь много вопросов по настройке сочетаний клавиш.