changeset 50374:73660951a233

(reveal-post-command): Better error handling and debugging.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 31 Mar 2003 20:56:14 +0000
parents 6defa3317421
children 8be64cfd36fe
files lisp/reveal.el
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/reveal.el	Mon Mar 31 20:41:41 2003 +0000
+++ b/lisp/reveal.el	Mon Mar 31 20:56:14 2003 +0000
@@ -61,6 +61,8 @@
 
 ;; Actual code
 
+(defvar reveal-backtrace nil)
+
 (defun reveal-post-command ()
   ;; Refresh the spots that might have changed.
   ;; `Refreshing' here means to try and re-hide the corresponding text.
@@ -107,7 +109,11 @@
 	       (setq repeat t)
 	       (condition-case err
 		   (funcall open ol nil)
-		 (error (message "!!Reveal-show: %s !!" err))))))))
+		 (error (setq reveal-backtrace (backtrace))
+			(message "!!Reveal-show: %s !!" err)
+			;; Let's default to a meaningful behavior to avoid
+			;; getting stuck in an infinite loop.
+			(overlay-put ol 'invisible nil))))))))
      ;; Close old overlays.
      (dolist (ol old-ols)
        (when (and (eq (current-buffer) (overlay-buffer ol))
@@ -128,9 +134,11 @@
 					 (get ol 'isearch-open-invisible-temporary)))))
 		 (condition-case err
 		     (funcall open ol t)
-		   (error (message "!!Reveal-hide: %s !!" err)))
+		   (error (setq reveal-backtrace (backtrace))
+			  (message "!!Reveal-hide: %s !!" err)))
 	       (overlay-put ol 'invisible inv)))))))
-   (error (message "Reveal: %s" err)))))
+   (error (setq reveal-backtrace (backtrace))
+	  (message "Reveal: %s" err)))))
 
 ;;;###autoload
 (define-minor-mode reveal-mode