Как я могу заставить Emacs отступывать мои//комментарии с моим кодом?

Я мало что знаю о Emacs, но после некоторого поиска в Google я редактировал файл .emacs следующим образом:

(setq c-default-style "bsd" c-basic-offset 4)

Моя цель состояла в том, чтобы получить отступы в стиле Allman с 4-интервальными вкладками. Он работает так, как ожидалось, но теперь мои комментарии // не отступаются от моего кода. Прежде чем я изменил это, когда я наберу //, он будет автоматически отступать в соответствии с остальной частью кода в функции. Как я могу получить комментарии Emacs к автоиндексу //?

Я попытался добавить c-indent-comments-syntactically-p 1 в указанный выше файл .emacs, но это не изменило его...

Например:

int main()
{
    // I'd like this line to be auto-indented to match the block
    for (int i = 0; i < 10; ++i)
    {
        // And this line to be auto-indented to match the block
        doStuff();
    }
}

В настоящее время TAB не делает отступ моим комментарием //, и он также не является автоматически отступом.

Ответ 1

Вы можете проверить и изменить значение текущего отступа, поместив точку в соответствующую строку и нажав C-c C-o. Отрегулируйте соответствующие символы по своему вкусу.

Это не будет постоянным. Используйте прямой вызов функции c-set-offset в .emacs, чтобы внести изменения во всем мире.

Простой пример:

int main() {
  // 
}

Это мой отступ по умолчанию. После перемещения курсора в строку 2 я вижу, что соответствующий символ comment-intro.

Использование:

(c-set-offset 'comment-intro 6)

Я получаю:

int main() {
        //
}

Смещение накапливается по символам:

int main() {
        //
  {
          //
  }
}

Ответ 2

Включение TAB все еще отступает от вашей строки комментариев, верно? Тогда вам не хватает автоматического распознавания двойного слэш, запускающего автоиндентификацию. Это реализуется (c-electric-slash). Сначала убедитесь, что слэш все еще привязан к этой команде: C-h k / (помощь по нажатию на клавиши). Затем, при условии, что появится документация для c-electric-slash, прочитайте ее, чтобы выяснить, при каких условиях она блокируется.

Ответ 3

Если вы хотите поместить свой комментарий в то же самое выравнивание области вашего кода, просто добавьте следующую строку в файл ~/.emacs:

(c-set-offset 'comment-intro 0)