When Adaptive Fill Mode is enabled, Emacs determines the fill prefix automatically from the text in each paragraph being filled rather than using a predetermined value. During filling, this fill prefix gets inserted at the start of the second and subsequent lines of the paragraph as described in Filling, and in Auto Filling.
Adaptive Fill mode is enabled when this variable is non-nil
.
It is t
by default.
This function implements the heart of Adaptive Fill mode; it chooses a fill prefix based on the text between from and to, typically the start and end of a paragraph. It does this by looking at the first two lines of the paragraph, based on the variables described below.
Usually, this function returns the fill prefix, a string. However,
before doing this, the function makes a final check (not specially
mentioned in the following) that a line starting with this prefix
wouldn’t look like the start of a paragraph. Should this happen, the
function signals the anomaly by returning nil
instead.
In detail, fill-context-prefix
does this:
adaptive-fill-function
(if any),
then the regular expression adaptive-fill-regexp
(see below).
The first non-nil
result of these, or the empty string if
they’re both nil
, becomes the first line’s candidate.
adaptive-fill-first-line-regexp
below).
nil
.
Adaptive Fill mode matches this regular expression against the text starting after the left margin whitespace (if any) on a line; the characters it matches are that line’s candidate for the fill prefix.
The default value matches whitespace with certain punctuation characters intermingled.
Used only in one-line paragraphs, this regular expression acts as an
additional check of the validity of the one available candidate fill
prefix: the candidate must match this regular expression, or match
comment-start-skip
. If it doesn’t, fill-context-prefix
replaces the candidate with a string of spaces of the same width
as it.
The default value of this variable is "\\`[ \t]*\\'"
, which
matches only a string of whitespace. The effect of this default is to
force the fill prefixes found in one-line paragraphs always to be pure
whitespace.
You can specify more complex ways of choosing a fill prefix
automatically by setting this variable to a function. The function is
called with point after the left margin (if any) of a line, and it
must preserve point. It should return either that line’s fill
prefix or nil
, meaning it has failed to determine a prefix.