From 21f49db9e9d118fafe45a36516fa6f64ccbe4658 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 28 Nov 2009 21:32:06 +0000 Subject: [PATCH] Try and remove assumptions about point-min==1. * nxml/rng-valid.el (rng-validate-mode): Don't hardcode point-min==1. (rng-compute-mode-line-string): Show the validation percentage in terms of the narrowed text, not the widened text. (rng-do-some-validation): Don't catch internal errors when debugging. (rng-first-error): Simplify. (rng-after-change-function): Remove work around. AFAIK the bug has been fixed a while ago. --- lisp/ChangeLog | 9 +++++++++ lisp/nxml/rng-valid.el | 31 ++++++++++++++----------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 39a55c525cc..2a1dd616ddf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,14 @@ 2009-11-28 Stefan Monnier + Try and remove assumptions about point-min==1. + * nxml/rng-valid.el (rng-validate-mode): Don't hardcode point-min==1. + (rng-compute-mode-line-string): Show the validation percentage in + terms of the narrowed text, not the widened text. + (rng-do-some-validation): Don't catch internal errors when debugging. + (rng-first-error): Simplify. + (rng-after-change-function): Remove work around. AFAIK the bug has + been fixed a while ago. + * image-mode.el (image-minor-mode): Exit more gracefully when the image cannot be displayed (e.g. when doing C-x C-f some-new-file.svg RET). diff --git a/lisp/nxml/rng-valid.el b/lisp/nxml/rng-valid.el index 4b1b7feaf52..cc5f48de6c4 100644 --- a/lisp/nxml/rng-valid.el +++ b/lisp/nxml/rng-valid.el @@ -247,8 +247,8 @@ to use for finding the schema." (nxml-with-unmodifying-text-property-changes (rng-clear-cached-state (point-min) (point-max))) ;; 1+ to clear empty overlays at (point-max) - (rng-clear-overlays (point-min) (1+ (point-max)))) - (setq rng-validate-up-to-date-end 1) + (rng-clear-overlays (point-min) (1+ (point-max))) + (setq rng-validate-up-to-date-end (point-min))) (rng-clear-conditional-region) (setq rng-error-count 0) ;; do this here to avoid infinite loop if we set the schema @@ -304,10 +304,6 @@ The schema is set like `rng-auto-set-schema'." (or rng-validate-mode (rng-validate-mode))) (defun rng-after-change-function (start end pre-change-len) - ;; Work around bug in insert-file-contents. - (when (> end (1+ (buffer-size))) - (setq start 1) - (setq end (1+ (buffer-size)))) (setq rng-message-overlay-inhibit-point nil) (nxml-with-unmodifying-text-property-changes (rng-clear-cached-state start end)) @@ -335,11 +331,13 @@ The schema is set like `rng-auto-set-schema'." (setq rng-validate-up-to-date-end start)) ;; Must make rng-validate-up-to-date-end < point-max ;; (unless the buffer is empty). - ;; otherwise validate-prepare will say there's nothing to do. - ;; Don't use (point-max) because we may be narrowed. - (if (> rng-validate-up-to-date-end (buffer-size)) - (setq rng-validate-up-to-date-end - (max 1 (1- rng-validate-up-to-date-end)))) + ;; otherwise rng-validate-prepare will say there's nothing to do. + (when (>= rng-validate-up-to-date-end (point-max)) + (setq rng-validate-up-to-date-end + (if (< (point-min) (point-max)) + (1- (point-max)) + ;; Only widen if really necessary. + (save-restriction (widen) (max (point-min) (1- (point-max))))))) ;; Arrange to revalidate (rng-activate-timers) ;; Need to do this after activating the timer @@ -354,8 +352,9 @@ The schema is set like `rng-auto-set-schema'." ;; the end. (floor (if (eq (buffer-size) 0) 0.0 - (/ (* (- rng-validate-up-to-date-end 1) 100.0) - (buffer-size))))) + (/ (* (- rng-validate-up-to-date-end (point-min)) + 100.0) + (- (point-max) (point-min)))))) "%%")) ((> rng-error-count 0) (concat " " @@ -476,7 +475,7 @@ The schema is set like `rng-auto-set-schema'." (save-restriction (widen) (nxml-with-invisible-motion - (condition-case err + (condition-case-no-debug err (and (rng-validate-prepare) (let ((rng-dt-namespace-context-getter '(nxml-ns-get-context))) (nxml-with-unmodifying-text-property-changes @@ -809,9 +808,7 @@ Return t if there is work to do, nil otherwise." Turn on `rng-validate-mode' if it is not already on." (interactive) (or rng-validate-mode (rng-validate-mode)) - (when (and (eq rng-validate-up-to-date-end 1) - (< rng-validate-up-to-date-end (point-max))) - (rng-do-some-validation)) + (rng-do-some-validation) (let ((err (rng-find-next-error-overlay (1- (point-min))))) (if err (rng-goto-error-overlay err) -- 2.11.4.GIT