[Geany-Devel] Interested making a patch to add QML support

Matthew Brush mbrush at xxxxx
Wed Sep 18 20:52:41 UTC 2013


On 13-09-18 11:47 AM, Tory Gaurnier wrote:
> On 09/17/2013 06:45 PM, Matthew Brush wrote:
>> On 13-09-17 03:59 PM, Tory Gaurnier wrote:
>>> [...]
>>> I didn't realize I'd have to create the lexer myself. Is it possible
>>> to use the C lexer that's already in Geany and then work it into the
>>> QML file type? The only thing I really want to get working is the
>>> symbol list (which would be the ctags thing you refered to if I'm not
>>> mistaken, right?).
>>>
>>
>> You could look at the CTags tutorial about extending[1], it has an
>> example for writing a "regex-based" parser which will probably be
>> quite a bit easier for a language like QML, if maybe less powerful
>> than a character-based parser.
>>
>> Cheers,
>> Matthew Brush
>>
>> [1] http://ctags.sourceforge.net/EXTENDING.html
>>
>> _______________________________________________
>> Devel mailing list
>> Devel at lists.geany.org
>> https://lists.geany.org/cgi-bin/mailman/listinfo/devel
> Ok, so I've been looking at the CTags tutorial you posted, and it really
> looks pretty easy, especially using regex, but there is one thing I
> can't find. Would you happen to know if when using regex it's possible
> to have mulitple regexes? For example, the tutorial has this:
>
> |addTagRegex (language, "^def[ \t]*([a-zA-Z0-9_]+)", "\\1",
> "d,definition", NULL);|
>
> Which is using the regex to create tags labelled 'definition' (unless
> I'm missing something). But since QML supports javascript I at the very
> least want to have it recognize Items/Components, and functions. And I'd
> eventually like to have it label the Items/Components by ID if it's
> present.
>
> Now I know there's also the callback method, but for now, do you know if
> it will work to have addTagRegex appear multiple times?
>

Yeah, I think you can call it multiple times, see COBOL parser, for example:
https://sourceforge.net/p/ctags/code/HEAD/tree/trunk/cobol.c

> Also, I can't seem to find anything on how I'll even test this, do you
> know if ctags can maybe be run from terminal or something???
>

ctags is actually a command-line (only) program, the fork we have in 
Geany was an attempt by the/an Anjuta developer to make it into a 
library for use by IDEs and such. So yeah, your best bet is to check out 
CTags SVN code, add your parser to it, so you can test it standalone, 
and also it has the advantage that it will be fully compatible with 
upstream CTags so you can contribute it to that project first and all of 
its users will be able to use CTags for QML code. Once you have it all 
working, it should be quite trivial to move it into Geany.

Cheers,
Matthew Brush



More information about the Devel mailing list