]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 14 Jun 2010 01:43:11 +0000 (21:43 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 14 Jun 2010 01:43:11 +0000 (21:43 -0400)
Fixes: debbugs:6412
lisp/ChangeLog
lisp/nxml/nxml-mode.el

index c33ed04e0c2ad55a5cf0758e5b3a6fa93fbd00ad..cae648562630e297a131d92dffac4cf96a9aeaa1 100644 (file)
@@ -1,3 +1,7 @@
+2010-06-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior.
+
 2010-06-12  Chong Yidong  <cyd@stupidchicken.com>
 
        * term/common-win.el (x-colors): Add all the color names defined
index 101b2585186bc1c5e7dc61789a41e8f6115609d0..b428d8bf2242b4f99f11af415fd0eb602119e29d 100644 (file)
@@ -1370,17 +1370,21 @@ of the inserted start-tag or nil if none was inserted."
 
 (defun nxml-indent-line ()
   "Indent current line as XML."
-  (let ((indent (nxml-compute-indent))
-       (from-end (- (point-max) (point))))
-    (when (and indent
-              (/= indent (current-indentation)))
-      (beginning-of-line)
-      (let ((bol (point)))
-       (skip-chars-forward " \t")
-       (delete-region bol (point)))
-      (indent-to indent)
-      (when (> (- (point-max) from-end) (point))
-       (goto-char (- (point-max) from-end))))))
+  (let* ((savep (point))
+         (indent (condition-case nil
+                     (save-excursion
+                       (forward-line 0)
+                       (skip-chars-forward " \t")
+                       (if (>= (point) savep) (setq savep nil))
+                       (or (nxml-compute-indent) 0))
+                   (error 0))))
+    (if (not (numberp indent))
+        ;; If something funny is used (e.g. `noindent'), return it.
+        indent
+      (if (< indent 0) (setq indent 0)) ;Just in case.
+      (if savep
+          (save-excursion (indent-line-to indent))
+        (indent-line-to indent)))))
 
 (defun nxml-compute-indent ()
   "Return the indent for the line containing point."