emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The future of Follow Mode - a proposal.


From: Eli Zaretskii
Subject: Re: The future of Follow Mode - a proposal.
Date: Fri, 19 Feb 2016 18:08:35 +0200

> Date: Fri, 19 Feb 2016 14:25:23 +0000
> Cc: address@hidden
> From: Alan Mackenzie <address@hidden>
> 
> Hello, Eli.
> 
> On Thu, Feb 18, 2016 at 10:24:10PM +0200, Eli Zaretskii wrote:
> > > Date: Thu, 18 Feb 2016 19:56:30 +0000
> > > From: Alan Mackenzie <address@hidden>
> > > 
> > > I propose moving much of Follow Mode's mechanism into our C code, in
> > > particular, into window.c and xdisp.c.
> 
> > IMO, moving the code to C will solve only the marginal aspects of
> > this.
> 
> It would certainly help with the speed, and likely help get a uniform
> mode line.

Speed is one of the marginal aspects of this, from my POV.  Follow
mode is not terribly slow as it is.

> > The main problem -- the fact that the current display engine doesn't
> > support windows of unequal width -- cannot be solved without deep
> > changes.  We need to at least design these changes first, so that we
> > have a clear idea how to solve these issues.  FWIW, I thought about
> > this for a while, and didn't see any easy way of doing it.
> 
> The display engine currently works on each window as an independent
> entity.  It needs to understand "window groups".  Several things it now
> does on windows (scrolling, moving point, ...) will need to be extended
> to work on window groups.
> 
> Where and why do you see the need for deep changes?

I already explained this above: "the fact that the current display
engine doesn't support windows of unequal width".  If you want to lift
this limitation, the move_it_* family of functions, which simulate
redisplay, and are the workhorse of every decision Emacs makes that
concerns layout, cannot switch windows in their inner loops.  Their
model is: initialize the iterator object with the metrics of the
window, then use that for the entire iteration.  There's only one copy
of window metrics in the iterator object.  They also assume that text
above the window start and below its end would have been laid out
using the same window width, something that is required when the
display engine considers whether to scroll the window.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]