Я ищу второстепенный режим, чтобы абзацы всегда были заполнены во время набора текста (аналогично тому, что aggressive-indent-mode
делает для отступа). Он также должен быть достаточно умным, чтобы заполнять только комментарии (и, возможно, строки в зависимости от языка).
Вот некоторые вещи, которые я пробовал:
auto-fill-mode
автоматически заполняется при вводе новых абзацев, но не заполняется при редактировании абзацев.refill-mode
постоянно пополняет абзацы, но пытается обернуть код в абзацы и комментарии.Я попытался добавить
fill-paragraph
кafter-change-functions
крючку, но он облажался и многое другое (это, вероятно, все поправимо, но потребует некоторых усилий).
Есть идеи получше?
hooks
fill-paragraph
comment
dshepherd
источник
источник
org-mode
, но вы можете попробовать rebox2Ответы:
Я придумал минимальный способ реализации этой функциональности: просто связать пробел, чтобы также позвонить
(fill-paragraph)
!Есть несколько предостережений, с которыми я столкнулся:
elisp-mode
(возможно, другие) выполняет некоторую причудливую кодовую заливку, когда вы звонитеfill-paragraph
, это может или не может быть тем, что вы хотите. Вероятно, это можно исправить с помощью тестирования, если точка находится в комментарии или строке документации, но я не уверен, как это сделать.Иногда вы не можете легко ввести несколько пробелов (потому что
fill-paragraph
убивает любые пробелы). Поскольку пробел теперь работает так,just-one-space
что, вероятно, можно заменить эту привязку на(insert " ")
.Я сделал вспомогательный режим, содержащий эту функциональность, он доступен на github или в пакете melpa
aggressive-fill-paragraph
.источник
aggressive-fill-paragraph
он гораздо менее агрессивен, чемrefill-mode
агрессивен, вплоть до того, что он довольно бесполезен (поскольку вы даже не можете цитировать кого-то>
без перестановки в режиме пополнения баланса: даже если вы используете регулярные выражения для замены) .Если вам нравится, как ведет себя режим пополнения (а не: p), но не когда он ведет себя, его будет относительно легко исправить, подавив его, когда вы находитесь в неподходящих условиях.
Например
По сути, она удаляет функцию, которая запускает пополнение,
after-change-functions
и заменяет ее на функцию, которая дополнительно проверяет, что мы находимся в комментарии, прежде чем делать то же самое.источник
refill-mode
:) Проблема в том, чтоrefill-mode
используетfill-region
вместо этогоfill-paragraph
, теряя таким образом способность чтитьfill-paragraph-function
и делая вещи потенциально грязными