emacs-devel
[Top][All Lists]
Advanced

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

Re: Is there something like `on-display-functions'?


From: Eli Zaretskii
Subject: Re: Is there something like `on-display-functions'?
Date: Thu, 28 Jan 2010 01:49:21 -0500

> From: Stefan Monnier <address@hidden>
> Cc: address@hidden,  address@hidden
> Date: Wed, 27 Jan 2010 16:04:07 -0500
> 
> Unless the two functions cooperate, there's no reason to presume that
> the two functions will fontify the same amount of text, since the amount
> is mostly arbitrarily chosen by the function themselves (and may need
> rounding up because of line-granularity or other
> foo-region-extend-function).
> 
> So if each function is written independently, it will (in general) not
> fontify the same amount of text as the others, and it won't know how
> much the others (if any) have fontified.  So none of the functions will
> actually know on which portion of the text the `fontified' property
> should be applied.

The place where `fontified' property with a nil value is left after
all fontification-functions are run is not very important.  It's just
the place where redisplay will stop next and call those functions
again.  If a function on that list needs to be sure it does not miss
any text due to the position where a nil-valued `fontified' is placed,
it should simply start from some earlier position, not from the one
with which it is invoked.  Then it could search for the first position
where it needs to do its job, and resume there.

Note that the JIT Lock function that gets invoked via
fontification-functions always starts from the beginning of the line
to which the position it was invoked with belongs.  So it is already
doing something similar, albeit for different reasons.

OTOH, it would be a simple change to have the loop in
handle_fontified_prop maintain the lowest buffer position of those
where the `fontified' property was placed by any of the functions it
invokes, and reset the value of that property to nil for that position
after the loop finishes.  Would that resolve the difficulty?




reply via email to

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