2009-11-28 Stefan Monnier <monnier@iro.umontreal.ca>
+ 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).
(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
(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))
(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
;; 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 " "
(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
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)