Когда включен Режим адаптивного заполнения, Emacs автоматически определяет префикс заполнения из текста в каждом заполняемом абзаце, а не используя заранее определенное значение. Во время заполнения этот префикс заполнения вставляется в начало второй и последующих строк абзаца, как описано в Заполнение и в Автозаполнение.
Режим адаптивного заполнения включен, когда эта переменная не равна nil. По умолчанию она равна t.
Эта функция реализует основу режима адаптивного заполнения; она выбирает префикс заполнения на основе текста между from и to, обычно это начало и конец абзаца. Она делает это, просматривая первые две строки абзаца, основываясь на переменных, описанных ниже.
Обычно эта функция возвращает префикс заполнения, строку. Однако, прежде чем это сделать, функция выполняет финальную проверку (не упомянутую отдельно ниже), чтобы убедиться, что строка, начинающаяся с этим префиксом, не выглядит как начало абзаца. Если это происходит, функция сигнализирует об аномалии, возвращая вместо этого nil.
Подробно fill-context-prefix делает следующее:
adaptive-fill-function (если таковая имеется), затем регулярное выражение adaptive-fill-regexp (см. ниже). Первый результат, не равный nil, или пустая строка, если оба равны nil, становится кандидатом для первой строки.
adaptive-fill-first-line-regexp ниже).
nil.
Режим адаптивного заполнения сопоставляет это регулярное выражение с текстом, начинающимся после пробелов левого поля (если таковые имеются) в строке; символы, которые оно сопоставляет, являются кандидатом этой строки в префикс заполнения.
Значение по умолчанию сопоставляет пробелы с некоторыми знаками препинания, перемешанными между ними.
Используется только в однострочных абзацах, это регулярное выражение действует как дополнительная проверка действительности одного доступного кандидата префикса заполнения: кандидат должен соответствовать этому регулярному выражению или comment-start-skip. Если это не так, fill-context-prefix заменяет кандидата строкой пробелов той же ширины.
Значение по умолчанию этой переменной — "\\`[ \t]*\\'", которое соответствует только строке пробелов. Эффект этого значения по умолчанию заключается в том, чтобы принудительно сделать префиксы заполнения, найденные в однострочных абзацах, всегда чистыми пробелами.
Вы можете указать более сложные способы автоматического выбора префикса заполнения, установив эту переменную в функцию. Функция вызывается с точкой после левого поля (если таковое имеется) строки, и она должна сохранить точку. Она должна вернуть либо префикс заполнения этой строки, либо nil, что означает, что она не смогла определить префикс.