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.

The return value is the column where the insertion ends.

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;
}