[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Best way to detect font-lock mode is on?
From: |
Ilya Zakharevich |
Subject: |
Re: Best way to detect font-lock mode is on? |
Date: |
Wed, 12 Jan 2011 03:46:30 +0000 (UTC) |
User-agent: |
slrn/0.9.8.1pl1 (Linux) |
On 2011-01-03, Tim X <timx@nospam.dev.null> wrote:
>
> Just wanting to know what people would suggest as the best way to detect
> if font-lock mode is enabled.
>
> 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,
> this is quite a fast operation as I can just test the text property.
> However, if font-lock is not enabled, I need to do some parsing to try
> and determine whether point is on a comment or string. I have defined
> two functions i.e.
>
> (defun pde-in-comment-p ()
> "Returns t if point is within a comment, nil otherwise."
> (if font-lock-defaults
> (eq (get-text-property (point) 'face) 'font-lock-comment-face)
> (nth 4 (parse-partial-sexp (point-min) (point)))))
>
> (defun pde-in-string-p ()
> "Return t if point within a string, nil otherwise."
> (if font-lock-defaults
> (eq (get-text-property (point) 'face) 'font-lock-string-face)
> (nth 3 (parse-partial-sexp (point-min) (point)))))
>
> As you can see, I'm using font-lock-defaults to test whether font-lock
> is enabled.
No matter what is the test, your logic is not enough. In cperl-mode,
I pepper all such functions with
(cperl-update-fontification pos)
(sp?) so that lazy-locking is not playing time-sensitive tricks with
your logic.
Hope this helps,
Ilya
Re: Best way to detect font-lock mode is on?,
Ilya Zakharevich <=