emacs-devel
[Top][All Lists]
Advanced

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

Re: command to fontify whole buffer?


From: Alan Mackenzie
Subject: Re: command to fontify whole buffer?
Date: Thu, 22 Sep 2011 14:33:41 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

Hi, Drew.

On Thu, Sep 22, 2011 at 06:32:49AM -0700, Drew Adams wrote:
> Sometimes I want to fontify a whole buffer (really).  One use case is to be 
> able
> to then use the fontification for other (e.g. code) purposes than visual
> highlighting.  But it really doesn't matter why - I just want to. ;-)

> With the current lazy/jit fontification, I see no command to do that.
> `font-lock-fontify-buffer' doesn't do it.

Are you sure?  I thought it did, and looking again at the fine source, it
does appear to.

> Marking the whole buffer and using `(font-lock-fontify-region BEG END)'
> doesn't do it.

Ditto.

> Digging more than a bit, I finally found non-interactive function
> `jit-lock-fontify-now', which seems to do the trick.  Why not provide a
> command that does it?

jit-lock-fontify-now                 just calls the function
font-lock-fontify-region             (via a hook) which calls
font-lock-default-fontify-region     (via another hook).

> (defun fontify-buffer-completely-no-but-really ()
>   "Yes, really, completely, right now."
>   (interactive)
>   (jit-lock-fontify-now))

> Oddly enough, the `jit-lock-fontify-now' doc is no different from the doc of 
> all
> the other `fontify' functions that do _not_ really, necessarily fontify
> everything they apply to.  They all say only that they fontify.  The others do
> not say that they don't really, necessarily fontify all they apply to.  And 
> this
> function doesn't say that it is any different from the others.  But it seems 
> to
> be.

A lot of these functions set the 'fontified text property to nil (or
'deferred) with the intention that they get properly fontified later.
Most of the time this actually happens.

> Another question is whether there is some condition that can be tested to know
> whether a buffer has really been completely fontified (whether or not that
> fontification is completely up-to-date because of subsequent edits).  Text
> property `fontified' does not indicate this - is there something that does?

Surely 'fontified DOES do it.  If it has the value t throughout the
buffer, that buffer is fully fontified, otherwise not.  Or have I
misunderstood something?

By the way, I drew a diagram of how jit-lock works about 5 years ago,
tracing the functions which call each other, and the hooks out of which
things get hoiked.  Would you be interested in a copy of it?

-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

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