The column functions convert between a character position (counting characters from the beginning of the buffer) and a column position (counting screen characters from the beginning of a line).
These functions count each character according to the number of
columns it occupies on the screen. This means control characters count
as occupying 2 or 4 columns, depending upon the value of
ctl-arrow
, and tabs count as occupying a number of columns that
depends on the value of tab-width
and on the column where the tab
begins. See section Usual Display Conventions.
Column number computations ignore the width of the window and the amount of horizontal scrolling. Consequently, a column value can be arbitrarily high. The first (or leftmost) column is numbered 0.
For an example of using current-column
, see the description of
count-lines
in section Motion by Text Lines.
If column column is beyond the end of the line, point moves to the end of the line. If column is negative, point moves to the beginning of the line.
If it is impossible to move to column column because that is in
the middle of a multicolumn character such as a tab, point moves to the
end of that character. However, if force is non-nil
, and
column is in the middle of a tab, then move-to-column
converts the tab into spaces so that it can move precisely to column
column. Other multicolumn characters can cause anomalies despite
force, since there is no way to split them.
The argument force also has an effect if the line isn't long enough to reach column column; in that case, it says to add whitespace at the end of the line to reach that column.
If column is not an integer, an error is signaled.
The return value is the column number actually moved to.
Go to the first, previous, next, last section, table of contents.