Как заставить Emacs заполнить абзац для работы со встроенным документом XML-кода в моих модулях C #? - PullRequest
1 голос
/ 25 июня 2009

Этот вопрос похож на Как заставить заполнить абзац Emacs хорошо играть с javadoc-подобными комментариями , но для C #.

У меня есть такие комментарии:

/// <summary>
/// Of these Colonies, and ought to fall themselves by sending a 
/// constant state of THE unanimous 
/// Declaration OF Nature and donations are legally 1.E.1.
/// </summary>
///
/// <remarks>
/// <para>
/// If you received written explanation to the phrase "Project Gutenberg" associated 
/// with which you are redistributing 
/// Project GUTENBERG you receive specific permission.
/// </para>
/// </remarks>

И я бы хотел, чтобы fill-абзац заполнял только текстом и оставлял элементы разметки на своих отдельных строках, например,

/// <summary>
/// Of these Colonies, and ought to fall themselves by 
/// sending a constant state of THE unanimous Declaration 
/// OF Nature and donations are legally 1.E.1.
/// </summary>
///
/// <remarks>
/// <para>
/// If you received written explanation to the phrase 
/// "Project Gutenberg" associated with which you are 
/// redistributing Project GUTENBERG you receive specific 
/// permission.
/// </para>
/// </remarks>

Я думаю, что мне нужно установить переменную параграфа. C-h v говорит мне, что его текущее значение:

"[  ]*\\(//+\\|\\**\\)[     ]*\\(@[a-zA-Z]+\\>\\|$\\)\\|^\f"

... который уже выглядит довольно волосатым. (Я ненавижу все экранирующие требования для регулярных выражений emacs.) Думаю, мне нужно оглянуться назад, чтобы сказать, что первая строка после элемента XML-документа (например, ) начинается с абзаца.

Я собираюсь сейчас с этим возиться, но кто-нибудь настроил его для работы со встроенным кодом?


РЕДАКТИРОВАТЬ : Упс! Регулярные выражения Emacs не смотрят в прошлое! Хорошо, есть другие предложения? Как мне установить начало абзаца, чтобы быть строкой ПОСЛЕ

или ?

ps. Поддельный код документа в моем примере приведен в результате операции "Марковская цепь" на копии Гутенберга * 1031 Декларации независимости США ; спасибо этот вопрос за технику.

1 Ответ

2 голосов
/ 25 июня 2009

Попробуйте эту настройку:

(setq paragraph-separate "[     ]*\\(//+\\|\\**\\)\\([  ]*\\| <.*>\\)$\\|^\f")

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

Конечно, вам нужно установить эту переменную в одном из хуков c-mode, например:

(add-hook 'c-mode-common-hook '(lambda () (setq paragraph-separate "...")))
...