diff options
| author | Ken Manheimer | 2011-06-26 12:47:39 -0400 |
|---|---|---|
| committer | Ken Manheimer | 2011-06-26 12:47:39 -0400 |
| commit | 6b5ccddf1c9e78417aacaf375a7e96e64a60f6d3 (patch) | |
| tree | 5ce80717e70ed6cfe748e6a8e1c65a37873371a9 | |
| parent | 355f2e07082d7fc4d30cd0c1fab444799db6d6a7 (diff) | |
| download | emacs-6b5ccddf1c9e78417aacaf375a7e96e64a60f6d3.tar.gz emacs-6b5ccddf1c9e78417aacaf375a7e96e64a60f6d3.zip | |
* allout-widgets.el (allout-widgets-post-command-business): Stop decorating
intermediate isearch matches. They're not being undecorated when an
isearch is continued past, and isearch automatically collapses them. This
leads to "widget leaks", where decorated items accumulate in collapsed
areas. Lines with lots of hidden widgets can slow down cursor travel,
substantially. Too much complicated machinery would be needed to ensure
undecoration, so we're doing without this nicety.
(allout-widgets-tally-string): Don't try to do a hash-table-count of
allout-widgets-tally when it's nil. This eliminates spurious "Error during
redisplay: (wrong-type-argument hash-table-p nil)" warnings in *Messages*
when allout-widgets-maintain-tally is t.
| -rw-r--r-- | lisp/ChangeLog | 23 | ||||
| -rw-r--r-- | lisp/allout-widgets.el | 35 |
2 files changed, 40 insertions, 18 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c726864ebcc..38675a6efb1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,10 +1,26 @@ | |||
| 1 | 2011-06-26 Ken Manheimer <ken.manheimer@gmail.com> | ||
| 2 | |||
| 3 | * allout-widgets.el (allout-widgets-post-command-business): Stop | ||
| 4 | decorating intermediate isearch matches. They're not being | ||
| 5 | undecorated when an isearch is continued past, and isearch | ||
| 6 | automatically collapses them. This leads to "widget leaks", where | ||
| 7 | decorated items accumulate in collapsed areas. Lines with lots of | ||
| 8 | hidden widgets can slow down cursor travel, substantially. Too | ||
| 9 | much complicated machinery would be needed to ensure undecoration, | ||
| 10 | so we're doing without this nicety. | ||
| 11 | |||
| 12 | (allout-widgets-tally-string): Don't try to do a hash-table-count | ||
| 13 | of allout-widgets-tally when it's nil. This eliminates spurious "Error | ||
| 14 | during redisplay: (wrong-type-argument hash-table-p nil)" warnings in | ||
| 15 | *Messages* when allout-widgets-maintain-tally is t. | ||
| 16 | |||
| 1 | 2011-06-26 Martin Rudalics <rudalics@gmx.at> | 17 | 2011-06-26 Martin Rudalics <rudalics@gmx.at> |
| 2 | 18 | ||
| 3 | * window.el (display-buffer-normalize-argument): Rename to | 19 | * window.el (display-buffer-normalize-argument): Rename to |
| 4 | display-buffer-normalize-arguments. Handle special meaning of | 20 | display-buffer-normalize-arguments. Handle special meaning of |
| 5 | LABEL argument. Respect special-display-function when popping | 21 | LABEL argument. Respect special-display-function when popping up |
| 6 | up a new frame. Fix code searching for a window showing the | 22 | a new frame. Fix code searching for a window showing the buffer |
| 7 | buffer on another frame. | 23 | on another frame. |
| 8 | (display-buffer-normalize-specifiers): Call | 24 | (display-buffer-normalize-specifiers): Call |
| 9 | display-buffer-normalize-arguments. | 25 | display-buffer-normalize-arguments. |
| 10 | (display-buffer-in-window): Don't undedicate the window if its | 26 | (display-buffer-in-window): Don't undedicate the window if its |
| @@ -981,6 +997,7 @@ | |||
| 981 | * iswitchb.el (iswitchb-window-buffer-p): Use `member' instead of | 997 | * iswitchb.el (iswitchb-window-buffer-p): Use `member' instead of |
| 982 | `memq' (Bug#8799). | 998 | `memq' (Bug#8799). |
| 983 | 999 | ||
| 1000 | >>>>>>> MERGE-SOURCE | ||
| 984 | 2011-06-02 Stefan Monnier <monnier@iro.umontreal.ca> | 1001 | 2011-06-02 Stefan Monnier <monnier@iro.umontreal.ca> |
| 985 | 1002 | ||
| 986 | * subr.el (make-progress-reporter): Add "..." by default (bug#8785). | 1003 | * subr.el (make-progress-reporter): Add "..." by default (bug#8785). |
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el index 647b609288d..0f1fe850123 100644 --- a/lisp/allout-widgets.el +++ b/lisp/allout-widgets.el | |||
| @@ -258,7 +258,9 @@ widgets are locally inhibited. | |||
| 258 | 258 | ||
| 259 | The number varies according to the evanescence of objects on a | 259 | The number varies according to the evanescence of objects on a |
| 260 | hash table with weak keys, so tracking of widget erasures is often delayed." | 260 | hash table with weak keys, so tracking of widget erasures is often delayed." |
| 261 | (when (and allout-widgets-maintain-tally (not allout-widgets-mode-inhibit)) | 261 | (when (and allout-widgets-maintain-tally |
| 262 | (not allout-widgets-mode-inhibit) | ||
| 263 | allout-widgets-tally) | ||
| 262 | (format ":%s" (hash-table-count allout-widgets-tally)))) | 264 | (format ":%s" (hash-table-count allout-widgets-tally)))) |
| 263 | ;;;_ = allout-widgets-track-decoration nil | 265 | ;;;_ = allout-widgets-track-decoration nil |
| 264 | (defcustom allout-widgets-track-decoration nil | 266 | (defcustom allout-widgets-track-decoration nil |
| @@ -748,20 +750,23 @@ Optional RECURSING is for internal use, to limit recursion." | |||
| 748 | (message replaced-message) | 750 | (message replaced-message) |
| 749 | (message ""))))) | 751 | (message ""))))) |
| 750 | 752 | ||
| 751 | ;; Detect undecorated items, eg during isearch into previously | 753 | ;; alas, decorated intermediate matches are not easily undecorated |
| 752 | ;; unexposed topics, and decorate "economically". Some | 754 | ;; when they're automatically rehidden by isearch, so we're |
| 753 | ;; undecorated stuff is often exposed, to reduce lag, but the | 755 | ;; dropping this nicety. |
| 754 | ;; item containing the cursor is decorated. We constrain | 756 | ;; ;; Detect undecorated items, eg during isearch into previously |
| 755 | ;; recursion to avoid being trapped by unexpectedly undecoratable | 757 | ;; ;; unexposed topics, and decorate "economically". Some |
| 756 | ;; items. | 758 | ;; ;; undecorated stuff is often exposed, to reduce lag, but the |
| 757 | (when (and (not recursing) | 759 | ;; ;; item containing the cursor is decorated. We constrain |
| 758 | (not (allout-current-decorated-p)) | 760 | ;; ;; recursion to avoid being trapped by unexpectedly undecoratable |
| 759 | (or (not (equal (allout-depth) 0)) | 761 | ;; ;; items. |
| 760 | (not allout-container-item-widget))) | 762 | ;; (when (and (not recursing) |
| 761 | (let ((buffer-undo-list t)) | 763 | ;; (not (allout-current-decorated-p)) |
| 762 | (allout-widgets-exposure-change-recorder | 764 | ;; (or (not (equal (allout-depth) 0)) |
| 763 | allout-recent-prefix-beginning allout-recent-prefix-end nil) | 765 | ;; (not allout-container-item-widget))) |
| 764 | (allout-widgets-post-command-business 'recursing))) | 766 | ;; (let ((buffer-undo-list t)) |
| 767 | ;; (allout-widgets-exposure-change-recorder | ||
| 768 | ;; allout-recent-prefix-beginning allout-recent-prefix-end nil) | ||
| 769 | ;; (allout-widgets-post-command-business 'recursing))) | ||
| 765 | 770 | ||
| 766 | ;; Detect and rectify fouled outline structure - decorated item | 771 | ;; Detect and rectify fouled outline structure - decorated item |
| 767 | ;; not at beginning of line. | 772 | ;; not at beginning of line. |