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

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

Re: Multi-line font-lock parser


From: Thierry Volpiatto
Subject: Re: Multi-line font-lock parser
Date: Tue, 11 Aug 2009 07:48:15 +0200
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)

Teemu Likonen <tlikonen@iki.fi> writes:

> On 2009-08-10 23:32 (+0200), Thierry Volpiatto wrote:
>> Hi,
>> Teemu Likonen <tlikonen@iki.fi> writes:
>>
>>> I'd like to write font-lock code which highlights the first line that
>>> (1) is non-empty and (2) does not start with a "#" comment character.
>>> This requires some multi-line parsing so plain regular expressions won't
>>> suffice.
>>>
>>> I'm too stupid to understand how to implement this kind of parsing. I
>>> can write a code which finds such a line but I don't know how to
>>> integrate it to font-lock. I don't understand the (info "(elisp) Font
>>> Lock Multiline") manual either. So I'd _really_ appreciate if someone
>>> posted an example code here.
>>>
>> Did you try to use add-text-properties?
>> Something like:
>>
>> ,----
>> | (defun test-prop ()
>> |   (interactive)
>> |   (when (re-search-forward "^[a-z]+")
>> |     (beginning-of-line)
>> |     (add-text-properties (1- (point-at-bol)) (point-at-eol) 
>> '(font-lock-face font-lock-comment-face))))
>> `----
>>
>> should work.
>
> Thanks but I don't know where to start. Care to elaborate how to
> integrate that with font-lock? I mean, who is going to run this
> test-prop function?
>
Why do you want to integrate something to fontlock?
If i understand well what you want to do e.g Adding properties to the
first line that don't start with "#" and is not an empty line, the
simple code above suffice.

,----
| X ==> point
| 
| # One line starting with #.
| 
| the line we want to add text properties to.
`----

If you start to X (point) just running M-x test-prop will highlight the
line you want.

Is it what you want to do?


-- 
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France





reply via email to

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