mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-16 17:19:41 +00:00
* allout.el (allout-hide-by-annotation, allout-flag-region): Reduce
possibility of overlay leakage by making them volatile. * allout-widgets.el (allout-widgets-tally): Define as nil so the hash is not shared between buffers. Mode initialization is responsible for giving it a useful starting value. (allout-item-span): Reduce possibility of overlay leakage by making them volatile. (allout-widgets-count-buttons-in-region): Add diagnostic function for tracking down overlay leaks.
This commit is contained in:
parent
94eab1c84d
commit
d806ab682a
@ -1,3 +1,16 @@
|
||||
2011-03-29 Ken Manheimer <ken.manheimer@gmail.com>
|
||||
|
||||
* allout.el (allout-hide-by-annotation, allout-flag-region):
|
||||
Reduce possibility of overlay leakage by making them volatile.
|
||||
|
||||
* allout-widgets.el (allout-widgets-tally): Define as nil so the
|
||||
hash is not shared between buffers. Mode initialization is
|
||||
responsible for giving it a useful starting value.
|
||||
(allout-item-span): Reduce possibility of overlay leakage by
|
||||
making them volatile.
|
||||
(allout-widgets-count-buttons-in-region): Add diagnostic function
|
||||
for tracking down button overlay leaks.
|
||||
|
||||
2011-03-29 Leo Liu <sdl.web@gmail.com>
|
||||
|
||||
* ido.el (ido-read-internal): Use the default history var
|
||||
|
@ -238,7 +238,7 @@ buffer, and tracking increases as new widgets are added and
|
||||
decreases as obsolete widgets are garbage collected."
|
||||
:type 'boolean
|
||||
:group 'allout-widgets-developer)
|
||||
(defvar allout-widgets-tally (make-hash-table :test 'eq :weakness 'key)
|
||||
(defvar allout-widgets-tally nil
|
||||
"Hash-table of existing allout widgets, for debugging.
|
||||
|
||||
Table is maintained iff `allout-widgets-maintain-tally' is non-nil.
|
||||
@ -2100,6 +2100,7 @@ previously established or is not moved."
|
||||
(cond ((not overlay) (when start
|
||||
(setq overlay (make-overlay start end nil t nil))
|
||||
(overlay-put overlay 'button item-widget)
|
||||
(overlay-put overlay 'evaporate t)
|
||||
(widget-put item-widget :span-overlay overlay)
|
||||
t))
|
||||
;; report:
|
||||
@ -2343,6 +2344,19 @@ The elements of LIST are not copied, just the list structure itself."
|
||||
(while (consp list) (push (pop list) res))
|
||||
(prog1 (nreverse res) (setcdr res list)))
|
||||
(car list)))
|
||||
;;;_ . allout-widgets-count-buttons-in-region (start end)
|
||||
(defun allout-widgets-count-buttons-in-region (start end)
|
||||
"Debugging/diagnostic tool - count overlays with 'button' property in region."
|
||||
(interactive "r")
|
||||
(setq start (or start (point-min))
|
||||
end (or end (point-max)))
|
||||
(if (> start end) (let ((interim start)) (setq start end end interim)))
|
||||
(let ((button-overlays (delq nil
|
||||
(mapcar (function (lambda (o)
|
||||
(if (overlay-get o 'button)
|
||||
o)))
|
||||
(overlays-in start end)))))
|
||||
(length button-overlays)))
|
||||
|
||||
;;;_ : Run unit tests:
|
||||
(defun allout-widgets-run-unit-tests ()
|
||||
|
@ -4489,8 +4489,9 @@ Topic exposure is marked with text-properties, to be used by
|
||||
;; advance to just after end of this annotation:
|
||||
(setq next (allout-next-single-char-property-change
|
||||
(point) 'allout-was-hidden nil end))
|
||||
(overlay-put (make-overlay prev next nil 'front-advance)
|
||||
'category 'allout-exposure-category)
|
||||
(let ((o (make-overlay prev next nil 'front-advance)))
|
||||
(overlay-put o 'category 'allout-exposure-category)
|
||||
(overlay-put o 'evaporate t))
|
||||
(allout-deannotate-hidden prev next)
|
||||
(setq prev next)
|
||||
(if next (goto-char next)))))
|
||||
|
Loading…
Reference in New Issue
Block a user