Фрагмент Yasnippet для C/C++ пока работает некорректно
Я только что установил пакет yasnippet для emacs и пытаюсь настроить сниппеты. Все отлично работает, кроме одного конкретного фрагмента.
Файл: ~/.emacs.d/elpa/yasnippet-20150212.240/snippets/cc-mode/while
# -*- mode: snippet -*-
# name: while
# key: while
# --
while (${1:condition})
{
$0
}
Проблема в том, что когда я использую сниппет, результат будет таким:
while(condition)
{
}
Я проверил, есть ли у меня правильный файл, изменив исходный файл while:
# -*- mode: snippet -*-
# name: while
# key: while
# --
while (${1:condition})
{
$0;
}
(точка с запятой добавлена), и результат был:
while(condition)
{
;
}
Почему у моих скоб есть вкладка?
Примечание: все остальное работает нормально. Для циклов работают нормально, switch работает нормально, классы работают нормально... Проблема возникает только в цикле while. Есть идеи?
1 ответ
Нашел ответ. Это было сложно для кого-то, кто только начал использовать emacs, как я.
Посмотрев здесь, кажется, что c-стиль по умолчанию выглядит примерно так
if(foo)
{
bar++;
}
поэтому, когда я нажал tab для использования фрагмента, я также автоматически отформатировал код в стиле c по умолчанию. Это стиль "гну". Чтобы изменить его на стиль "linux" просто добавьте
(setq c-default-style "linux"
c-basic-offset 4)
в ваш файл.emacs или init.el.
Вывод после изменений:
if(foo)
{
bar++;
}
В конце концов, это не имеет ничего общего с ясниппет.