[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: define multi-line comments
From: |
David Hansen |
Subject: |
Re: define multi-line comments |
Date: |
Sun, 22 Jun 2008 12:15:53 +0200 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (gnu/linux) |
On Sun, 22 Jun 2008 09:51:02 +0200 henry atting wrote:
> David Hansen wrote:
>
>> On Sat, 21 Jun 2008 10:32:39 +0200 henry atting wrote:
>>
>>> David Hansen wrote:
>>>
>>>> On Fri, 20 Jun 2008 16:46:37 +0200 henry atting wrote:
>>>>
>>>>> I have my own text mode (derived from text-mode), which defines some
>>>>> syntax highlighting. Defining keywords is no problem but as far as I see
>>>>> keywords don't work on serveral lines, e.g. this
>>>>>
>>>>> (list "\".*\"" 0 'font-lock-variable-name-face t)
>>>>>
I should have noted that before... If that's the only case, you can
simply modify the syntax of a `"' (lookup `syntax tables' in the manual)
to highlight the region as a string. I don't think it's possible to
change the face here.
>>> In the meantime I found a way to do it. I looked into lua-mode.el where
>>> mulit-line comments work and changed it according to my needs:
>>>
>>> (list
>>> "\\(?:^\\|[^-]\\)\\(\"\\(=*\\)\\(?:.\\|\n\\)*?\"\\)"
>>> '(1 'font-lock-string-face t))
>>
>> Setting `font-lock-multiline' to `t' and using regexps that spawn more
>> than one line works "a bit". If it's not to important to highlight
>> always correctly and if the regexp "usually" matches only one line this
>> is an option as well.
>>
>>>
>>>> But in many circumstances you can use `font-lock-syntactic-keywords' to
>>>> make some region a "string" or "comment" and then use
>>>> `font-lock-syntactic-face-function' to give it another face.
>>>
>>> Now I will take a look at this. Thanks :)
>>
>> Someone should tell the lua-mode developers about it... This works
>> perfectly well if you have one region and one face for the whole region.
>> But it's not an option for regions with multiple faces (like e.g. long
>> function declarations in C).
>
> Because its only purpose is to highlight direct speech (in my
> text-mode) it actually works very well.
Are you talking about setting `font-lock-multiline' to `t' and just
using regexps that may spawn several lines? If it works for you just
use it, it will save a lot of trouble. But be warned, it's not 100%
accurate.
> Mmh, with `font-lock-syntactic-keywords' I couldn't get very far. I
> found this in the manual:
If you describe your problems in a bit more detail someone might be able
to help.
> ,----
> | — Variable: font-lock-syntactic-face-function
> | [...]
> | This can be used to highlighting different kinds of strings or comments
> | differently. It is also sometimes abused together with
> | font-lock-syntactic-keywords to highlight constructs that span multiple
> | lines, but this is too esoteric to document here.
> `----
>
> which is not too encouraging.
Ignore the "esoteric" comment. Just pretend your constructs are
"strings of a programming language". It will work. If you run into
problems that `parse-partial-sexp' behaves weird, play around with
`parse-sexp-lookup-properties'. But i recommend to not care about this
right now.
If you grep the emacs sources for `syntactic-keywords' you'll find some
examples (every language that has comments or strings that can't be
described via syntax tables, e.g. html).
David