help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: Best way to detect font-lock mode is on?


From: Tim X
Subject: Re: Best way to detect font-lock mode is on?
Date: Mon, 03 Jan 2011 17:08:18 +1100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Just wanting to know what people would suggest as the best way to detect
>> if font-lock mode is enabled. 
>
> Wrong question, I suspect.
>
>> I have two functions I use in a mode to determine if the point is
>> currently within a comment or a string. If font-lock mode is enabled,
>
> So IIUC the real question is how to determine if you're within a comment
> or string.  The answer is (nth 4 (syntax-ppss)) and (nth
> 3 (syntax-ppss)) respectively (and (nth 8 (syntax-ppss)) if you want to
> check whether you're within either of the two).

Yes, that is how I plan to do it if font-lock is not enabled. I'm
currently experimenting with syntax-ppss and parse-partial-sexp to see
if the cached version can be used reliably or if the uncaching variant
is required and if this has too high a penalty. I have found that with
syntax-ppss, I do get false positives fairly frequently if I don't first
call syntax-pps-flush-cache, which would seem to defeat its benefits
over parse-partial-sexp. These are quite 'heavy' operations and may not
be fast enough if the source file is large enough. As the buffer is
being edited, potentially changing the syntax at random places, it is
difficult to determine when the cache will need to be flushed (though I
have a couple of ideas that may strike an acceptable balance).

>
>> As you can see, I'm using font-lock-defaults to test whether font-lock
>> is enabled. Is this the best way to go or is there a more
>> reliable/better test to use?
>
> Any reason not to use `font-lock-mode'?
>

Only that some people don't like to use font-lock. I wanted the mode's
functionality to be independent of font-lock and not force people to use
it. The tests to determine whether you are in a comment or a string are
used in the calculation of indentation. Using text properties when under
font-lock mode is merely a simple optimisation that will be faster for
large files than parsing the whole file from the beginning. When not
using font-lock, the calculation will be performed using syntax-ppss.
Yes, this does mean that anyone not using font-lock may encounter slower
performance on large files, but at least will probably not be affected
with small/medium sized ones. 

Tim

-- 
tcross (at) rapttech dot com dot au


reply via email to

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