# HG changeset patch # User Stefan Monnier # Date 1109547734 0 # Node ID f3c5c717aa0252f36e18c703827685394bc43d90 # Parent 8da4bb4a512f582e9b59fa7cc5c5d96babee57a6 (reveal-post-command): Don't try to reveal overlays which have a non-nil `invisible' property but are actually visible. diff -r 8da4bb4a512f -r f3c5c717aa02 lisp/ChangeLog --- a/lisp/ChangeLog Sun Feb 27 23:13:19 2005 +0000 +++ b/lisp/ChangeLog Sun Feb 27 23:42:14 2005 +0000 @@ -1,5 +1,8 @@ 2005-02-27 Stefan Monnier + * reveal.el (reveal-post-command): Don't try to reveal overlays which + have a non-nil `invisible' property but are actually visible. + * progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries for perldoc sections. (perl-outline-regexp, perl-outline-level): New var and function. diff -r 8da4bb4a512f -r f3c5c717aa02 lisp/reveal.el --- a/lisp/reveal.el Sun Feb 27 23:13:19 2005 +0000 +++ b/lisp/reveal.el Sun Feb 27 23:42:14 2005 +0000 @@ -1,6 +1,6 @@ ;;; reveal.el --- Automatically reveal hidden text at point -;; Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2004, 2005 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: outlines @@ -93,16 +93,22 @@ (overlays-at (point)))) (push (cons (selected-window) ol) reveal-open-spots) (setq old-ols (delq ol old-ols)) - (let ((open (overlay-get ol 'reveal-toggle-invisible)) inv) - (when (or open - (and (setq inv (overlay-get ol 'invisible)) - (symbolp inv) - (or (setq open (or (get inv 'reveal-toggle-invisible) - (overlay-get ol 'isearch-open-invisible-temporary))) - (overlay-get ol 'isearch-open-invisible) - (and (consp buffer-invisibility-spec) - (assq inv buffer-invisibility-spec))) - (overlay-put ol 'reveal-invisible inv))) + (let ((inv (overlay-get ol 'invisible)) open) + (when (and inv + ;; There's an `invisible' property. Make sure it's + ;; actually invisible. + (or (not (listp buffer-invisibility-spec)) + (memq inv buffer-invisibility-spec) + (assq inv buffer-invisibility-spec)) + (or (setq open + (or (overlay-get ol 'reveal-toggle-invisible) + (and (symbolp inv) + (get inv 'reveal-toggle-invisible)) + (overlay-get ol 'isearch-open-invisible-temporary))) + (overlay-get ol 'isearch-open-invisible) + (and (consp buffer-invisibility-spec) + (cdr (assq inv buffer-invisibility-spec)))) + (overlay-put ol 'reveal-invisible inv)) (if (null open) (overlay-put ol 'invisible nil) ;; Use the provided opening function and repeat (since the @@ -110,7 +116,8 @@ (setq repeat t) (condition-case err (funcall open ol nil) - (error (message "!!Reveal-show: %s !!" err) + (error (message "!!Reveal-show (funcall %s %s nil): %s !!" + open ol err) ;; Let's default to a meaningful behavior to avoid ;; getting stuck in an infinite loop. (setq repeat nil) @@ -147,7 +154,8 @@ (overlay-get ol 'isearch-open-invisible-temporary))))) (condition-case err (funcall open ol t) - (error (message "!!Reveal-hide: %s !!" err))) + (error (message "!!Reveal-hide (funcall %s %s t): %s !!" + open ol err))) (overlay-put ol 'invisible inv)))))))) (error (message "Reveal: %s" err)))))