elisp: Text Lines
29.2.4 Motion by Text Lines
---------------------------
Text lines are portions of the buffer delimited by newline characters,
which are regarded as part of the previous line. The first text line
begins at the beginning of the buffer, and the last text line ends at
the end of the buffer whether or not the last character is a newline.
The division of the buffer into text lines is not affected by the width
of the window, by line continuation in display, or by how tabs and
control characters are displayed.
-- Command: beginning-of-line &optional count
This function moves point to the beginning of the current line.
With an argument COUNT not ‘nil’ or 1, it moves forward COUNT−1
lines and then to the beginning of the line.
Fields::) unless doing so would move beyond there to a different
line; therefore, if COUNT is ‘nil’ or 1, and point starts at a
field boundary, point does not move. To ignore field boundaries,
either bind ‘inhibit-field-text-motion’ to ‘t’, or use the
‘forward-line’ function instead. For instance, ‘(forward-line 0)’
does the same thing as ‘(beginning-of-line)’, except that it
ignores field boundaries.
If this function reaches the end of the buffer (or of the
accessible portion, if narrowing is in effect), it positions point
there. No error is signaled.
-- Function: line-beginning-position &optional count
Return the position that ‘(beginning-of-line COUNT)’ would move to.
-- Command: end-of-line &optional count
This function moves point to the end of the current line. With an
argument COUNT not ‘nil’ or 1, it moves forward COUNT−1 lines and
then to the end of the line.
Fields::) unless doing so would move beyond there to a different
line; therefore, if COUNT is ‘nil’ or 1, and point starts at a
field boundary, point does not move. To ignore field boundaries,
bind ‘inhibit-field-text-motion’ to ‘t’.
If this function reaches the end of the buffer (or of the
accessible portion, if narrowing is in effect), it positions point
there. No error is signaled.
-- Function: line-end-position &optional count
Return the position that ‘(end-of-line COUNT)’ would move to.
-- Command: forward-line &optional count
This function moves point forward COUNT lines, to the beginning of
the line following that. If COUNT is negative, it moves point
−COUNT lines backward, to the beginning of a line preceding that.
If COUNT is zero, it moves point to the beginning of the current
line. If COUNT is ‘nil’, that means 1.
If ‘forward-line’ encounters the beginning or end of the buffer (or
of the accessible portion) before finding that many lines, it sets
point there. No error is signaled.
‘forward-line’ returns the difference between COUNT and the number
of lines actually moved. If you attempt to move down five lines
from the beginning of a buffer that has only three lines, point
stops at the end of the last line, and the value will be 2. As an
explicit exception, if the last accessible line is non-empty, but
has no newline (e.g., if the buffer ends without a newline), the
function sets point to the end of that line, and the value returned
by the function counts that line as one line successfully moved.
In an interactive call, COUNT is the numeric prefix argument.
-- Function: count-lines start end
This function returns the number of lines between the positions
START and END in the current buffer. If START and END are equal,
then it returns 0. Otherwise it returns at least 1, even if START
and END are on the same line. This is because the text between
them, considered in isolation, must contain at least one line
unless it is empty.
-- Command: count-words start end
This function returns the number of words between the positions
START and END in the current buffer.
This function can also be called interactively. In that case, it
prints a message reporting the number of lines, words, and
characters in the buffer, or in the region if the region is active.
-- Function: line-number-at-pos &optional pos
This function returns the line number in the current buffer
corresponding to the buffer position POS. If POS is ‘nil’ or
omitted, the current buffer position is used.
Also see the functions ‘bolp’ and ‘eolp’ in Near Point.
These functions do not move point, but test whether it is already at the
beginning or end of a line.