[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: follow-mode: extremely slow in combination with org-mode
From: |
Eli Zaretskii |
Subject: |
Re: follow-mode: extremely slow in combination with org-mode |
Date: |
Sun, 17 Jun 2018 16:02:26 +0300 |
> Date: Sun, 17 Jun 2018 11:13:33 +0000
> Cc: Gerald Wildgruber <address@hidden>, address@hidden
> From: Alan Mackenzie <address@hidden>
>
> On Sun, Jun 17, 2018 at 11:12:39 +0300, Eli Zaretskii wrote:
> > > From: Gerald Wildgruber <address@hidden>
> > > CC: <address@hidden>
> > > Date: Sun, 17 Jun 2018 08:57:22 +0200
>
> > > - follow-windows-start-end 17606 57%
> > > - if 17606 57%
> > > - let 17603 57%
> > > - let 17603 57%
> > > - while 17603 57%
> > > - setq 17599 57%
> > > - cons 17599 57%
> > > - cons 17599 57%
> > > - cons 17599 57%
> > > - follow-calc-win-end 17591 57%
> > > - let* 17591 57%
> > > - if 9229 30%
> > > + let 1115 3%
> > > + pos-visible-in-window-p 26 0%
> > > posn-point 8350 27%
> > > + window-inside-pixel-edges 12 0%
>
> > Alan, why doesn't follow-calc-win-end doesn't just use window-end with
> > last argument non-nil? AFAU, that should allow you to compute the
> > result using 1/4 of the processing time you now invest. Why do you
> > need all the rest in that function? What am I missing?
>
> I honestly don't know for sure. But on 2014-04-27 I made a note in my
> personal log:
>
> "In follow-calc-win-end, we check for EOB being visible in the
> window, rather than being the window-end. There needs to be a
> comment here about what the last element means."
>
> . I wish I could decipher what I meant, then. I think I might have
> encountered a corner case, where EOB is _inside_ a window, possibly not
> even the last window, and using window-end failed for some reason.
>
> But I think follow-calc-win-end was in the original follow.el written by
> Anders Lindgren. Maybe, back in the mists of time, window-end didn't
> work for some reason - maybe it hadn't yet acquired it's UPDATE
> argument, or something like that.
OK, thanks for the explanations.
Gerald, could you try the following patch to follow-calc-win-end?
Please first see if this makes it significantly faster in your use
cases, and if so, please run with it for a while and see if there are
some adverse effects. (If this is not faster, it isn't worth testing
it more.)
diff --git a/lisp/follow.el b/lisp/follow.el
index fd397c0..c99fc93 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -925,14 +925,17 @@ follow-calc-win-end
the last fully-visible line in WIN. END-OF-BUFFER is t when EOB
is fully-visible in WIN. If WIN is nil, the selected window is
used."
- (let* ((win (or win (selected-window)))
- (edges (window-inside-pixel-edges win))
- (ht (- (nth 3 edges) (nth 1 edges)))
- (last-line-pos (posn-point (posn-at-x-y 0 (1- ht) win))))
- (if (pos-visible-in-window-p last-line-pos win)
- (let ((end (window-end win t)))
- (list end (pos-visible-in-window-p (point-max) win)))
- (list last-line-pos nil))))
+ (or win (setq win (selected-window)))
+ (with-selected-window win
+ (let* ((wend (window-end win t))
+ (endp (= wend (point-max))))
+ (and (> wend (point-min))
+ (setq wend (1- wend)))
+ (setq wend
+ (save-excursion
+ (goto-char wend)
+ (line-beginning-position)))
+ (list wend endp))))
(defun follow-calc-win-start (windows pos win)
"Determine the start of window WIN in a Follow mode window chain.
- follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/16
- Re: follow-mode: extremely slow in combination with org-mode, Eli Zaretskii, 2018/06/16
- Re: follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/16
- Re: follow-mode: extremely slow in combination with org-mode, Eli Zaretskii, 2018/06/16
- Re: follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/16
- Re: follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/17
- Re: follow-mode: extremely slow in combination with org-mode, Eli Zaretskii, 2018/06/17
- Re: follow-mode: extremely slow in combination with org-mode, Alan Mackenzie, 2018/06/17
- Re: follow-mode: extremely slow in combination with org-mode,
Eli Zaretskii <=
- Re: follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/17
- Re: follow-mode: extremely slow in combination with org-mode, Eli Zaretskii, 2018/06/17
- Re: follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/19
- Re: follow-mode: extremely slow in combination with org-mode, Eli Zaretskii, 2018/06/19
- Re: follow-mode: extremely slow in combination with org-mode, Gerald Wildgruber, 2018/06/19
- Re: follow-mode: extremely slow in combination with org-mode, Eli Zaretskii, 2018/06/17
Re: follow-mode: extremely slow in combination with org-mode, Anders Lindgren, 2018/06/21