Абзац заливки c-режима Emacs с Комментариями Doxygen

У меня есть вопрос, который очень похож на То, чтобы заставлять абзац заливки Emacs играть по правилам с подобным комментариям Javadoc, но я не был уверен, получу ли я много ответов через год старый поток.

Во всяком случае у меня есть код C, который имеет некоторые комментарии Doxygen, которые похожи на следующее:

/**
 * Description
 *
 * @param[in,out] var1 : 
 * @param[in,out] var2 : 
 */

Теперь, когда я использую M-q в emacs, я хочу следующее:

/**
 * Description
 *
 * @param[in,out] var1 : 
 * @param[in,out] var2 : 
 */

Но, текущий я получаю следующее:

/**
 * Description
 *
 * @param[in,out] var1 :   @param[in,out] var2 : 
 */

Проводя некоторое исследование, было похоже, что я должен был установить переменную запуска абзац в emacs для распознавания "@param". Я нашел другой вопрос на переполнении стека (То, чтобы заставлять абзац заливки Emacs играть по правилам с подобным комментариям Javadoc), который имел демонстрационное регулярное выражение. Я изменил его немного для соответствия моим требованиям, и я протестировал его в Поиске-> Regex Вперед, и это выделило каждое @param предложение правильно.

Я использовал следующее регулярное выражение "^\s-*\*\s-*\(@param\).*$"

Так, я пытался установить данное регулярное выражение как свой запуск абзац (с добавленным \, потребовал для elisp синтаксиса) в моем .emacs файле. Когда я открыл новое emacs окно и испытал M-q, та же ошибка происходила. Есть ли что-то, что я пропускаю? M-q используется по-другому в c-режиме? Я должен проверить свой .emacs файл на что-то, что может вызывать ошибку здесь? Любая справка ценилась бы.

Спасибо, Ryan

6
задан Community 23 May 2017 в 12:07
поделиться

1 ответ

Относительно Вашего вопроса, "Используется ли M-q по-другому в режиме c?", describe-key (привязанный к C-h k) - это Ваш друг. Посещая буфер с C-файлом, наберите C-h k M-q и он скажет Вам, к какой именно функции привязана M-q. В данном случае это c-fill-paragraph, который в конечном итоге использует paragraph-start, переменную, которую вы нашли в этом другом вопросе.

Я обнаружил, что это регулярное выражение, используемое как paragraph-start, будет обертывать строки и рассматривать каждый @param как новый абзац:

"^[ ]*\\(//++\\\\**\\)[ ]*\\([ ]*$\\|@_param\\)\\|^\f"

Однако оно не будет отступать от оберточных строк так, как вы хотите. Ваш пример будет выглядеть так:

/**
 * Description
 *
 * @param[in,out] var1 : <Long description that needs
 * to be wrapped.>
 * @param[in,out] var2 : <Description2>
 */

Надеюсь, он все равно будет работать для вас лучше. Дайте мне знать, если разберетесь с отступом.

3
ответ дан 17 December 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: