Function: indent-to

indent-to is an interactive function defined in indent.c.

Signature

(indent-to COLUMN &optional MINIMUM)

Documentation

Indent from point with tabs and spaces until COLUMN is reached.

Optional second argument MINIMUM says always do at least MINIMUM spaces even if that goes past COLUMN; by default, MINIMUM is zero.

Whether this uses tabs or spaces depends on indent-tabs-mode(var)/indent-tabs-mode(fun).

The return value is the column where the insertion ends.

View in manual

Key Bindings

Aliases

org-indent-to-column (obsolete since 9.0) indent-to-column

Source Code

// Defined in /usr/src/emacs/src/indent.c
{
  EMACS_INT mincol;
  register ptrdiff_t fromcol;
  int tab_width = SANE_TAB_WIDTH (current_buffer);

  CHECK_FIXNUM (column);
  if (NILP (minimum))
    XSETFASTINT (minimum, 0);
  CHECK_FIXNUM (minimum);

  fromcol = current_column ();
  mincol = fromcol + XFIXNUM (minimum);
  if (mincol < XFIXNUM (column)) mincol = XFIXNUM (column);

  if (fromcol == mincol)
    return make_fixnum (mincol);

  if (indent_tabs_mode)
    {
      Lisp_Object n;
      XSETFASTINT (n, mincol / tab_width - fromcol / tab_width);
      if (XFIXNAT (n) != 0)
	{
	  Finsert_char (make_fixnum ('\t'), n, Qt);

	  fromcol = (mincol / tab_width) * tab_width;
	}
    }

  XSETFASTINT (column, mincol - fromcol);
  Finsert_char (make_fixnum (' '), column, Qt);

  last_known_column = mincol;
  last_known_column_point = PT;
  last_known_column_modified = MODIFF;

  XSETINT (column, mincol);
  return column;
}