У меня есть вопрос, который очень похож на То, чтобы заставлять абзац заливки 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
Относительно Вашего вопроса, "Используется ли 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>
*/
Надеюсь, он все равно будет работать для вас лучше. Дайте мне знать, если разберетесь с отступом.