]> code.delx.au - gnu-emacs/blobdiff - lisp/indent.el
* lisp/electric.el (electric-pair-pairs): New var.
[gnu-emacs] / lisp / indent.el
index 3f8353bd90ca58dfde7ad51cb5e6f4f2a7ab5d73..e57d6068ef568721353f305f02b2ec150055abce 100644 (file)
@@ -4,6 +4,7 @@
 ;;   2008, 2009, 2010  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
+;; Package: emacs
 
 ;; This file is part of GNU Emacs.
 
@@ -67,6 +68,7 @@ The buffer-local variable `indent-line-function' determines how to do this,
 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
@@ -85,8 +87,10 @@ special; we don't actually use them here."
 (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
@@ -415,7 +419,7 @@ column to indent to; if it is nil, use one of the three methods above."
            (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))
@@ -429,7 +433,11 @@ column to indent to; if it is nil, use one of the three methods above."
        (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.