* lisp/nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior.

Fixes: debbugs:6412
This commit is contained in:
Stefan Monnier 2010-06-13 21:43:11 -04:00
parent 8c3a217f33
commit b263a4c43f
2 changed files with 19 additions and 11 deletions

View 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

View 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."