From: Stefan Monnier Date: Mon, 14 Jun 2010 01:43:11 +0000 (-0400) Subject: * lisp/nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~52^2~20 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b263a4c43f492f50e0201c6656033b1e54224d54;p=emacs.git * lisp/nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior. Fixes: debbugs:6412 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c33ed04e0c2..cae64856263 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2010-06-14 Stefan Monnier + + * nxml/nxml-mode.el (nxml-indent-line): Standardize indent behavior. + 2010-06-12 Chong Yidong * term/common-win.el (x-colors): Add all the color names defined diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 101b2585186..b428d8bf224 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -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."