;; 2008, 2009, 2010 Free Software Foundation, Inc.
;; Maintainer: FSF
+;; Package: emacs
;; This file is part of GNU Emacs.
but the functions `indent-relative' and `indent-relative-maybe' are
special; we don't actually use them here."
(interactive)
+ (syntax-propertize (line-end-position))
(if (memq indent-line-function
'(indent-relative indent-relative-maybe))
;; These functions are used for tabbing, but can't be used for
(defun indent-for-tab-command (&optional arg)
"Indent line or region in proper way for current major mode or insert a tab.
Depending on `tab-always-indent', either insert a tab or indent.
-If initial point was within line's indentation, position after
-the indentation. Else stay at same point in text.
+
+In most major modes, if point was in the current line's indentation,
+it is moved to the first non-whitespace character after indenting;
+otherwise it stays at the same position in the text.
If a prefix argument is given, also rigidly indent the entire
balanced expression which starts at the beginning of the current
(goto-char start)
(while (< (point) end)
(or (and (bolp) (eolp))
- (funcall indent-line-function))
+ (indent-according-to-mode))
(forward-line 1))
(move-marker end nil))))
(setq column (prefix-numeric-value column))
(or (eolp)
(indent-to column 0))
(forward-line 1))
- (move-marker end nil))))
+ (move-marker end nil)))
+ ;; In most cases, reindenting modifies the buffer, but it may also
+ ;; leave it unmodified, in which case we have to deactivate the mark
+ ;; by hand.
+ (deactivate-mark))
(defun indent-relative-maybe ()
"Indent a new line like previous nonblank line.