I actually prefer C, and since I've been playing with C++ I like it a lot so far. The app I'm working on is actually a C app with a C++ wrapper connecting it to a QML gui.

And I already added QML by copying the javascript configuration file and adding certain keywords, such as the QML basic types for highlighting.

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?).

I'm already writing my QML in Geany, but it would be awesome to be able to see the symbols.

Matthew Brush <mbrush@codebrainz.ca> wrote:
On 13-09-17 08:02 AM, Tory Gaurnier wrote:
I'm interested in making a patch to add QML support to Geany, but first
I had a few questions. First of all, is anyone else already working on
this? And if not, if I manage to get it working well would my patch be
worked into the main Geany code so others could get it also? I've been
learning programming for a while, but I've never patched or edited
anyone else’s code, so I'm not making promises how fast I'd be able to
get this done, of course from looking at the hacking page it doesn't
look to complicated to add support for another language, I just wanted
to ask these questions before I even attempted this.


To answer your questions first; no, no one is working on it AFAIK, and
if you follow the guidelines and write decent code, yes, I'm sure we
would include it Geany. I'd rather like to use QML in Geany myself as I
find QtCreator to be way too big and slow for something so simple (even
if it's quite nice overall).

You found probably the most important info already (notes in HACKING
file), so that's a good start :)

We use Scintilla[1] for the editing component as you probably know, and
it seems like no one is working on this, though someone talked on the
their mailing list[2] about starting to work on one last year. In order
to get syntax highlighting support for QML, you'll need to code up a
lexer in C++ (actually very C-like C++) and get it included into
Scintilla project. With that, we can pull it downstream and integrate
into Geany.

We use a fork of CTags[3] inside Geany for tag/symbol parsing, so in
order to have that supported for QML you'll need to code up a parser in
C and ideally get it included into CTags, but more likely we could just
pull it into Geany directly first.

With those two things done, which aren't exactly trivial, but for a
language like QML, probably aren't super difficult, then you can do the
stuff in the HACKING file to integrate everything into Geany, which is
the easiest part.

Honestly it'll probably take me longer to figure out how to create and
submit the patch then it will to actually change the code in the source
itself.


Naw, writing the Scintilla lexer and Ctags parser will probably be the
hardest part as writing lexers and parsers isn't the easiest thing in
the world (especially in C and C++). The rest is just learning how to
use the version control system and common knowledge you can find online
about best practices for making commits and using the tools (in our case
Git, and Mercurial for Scintilla - which is quite similar). If you work
in features branches, and make small incremental commits, you can go
back after and re-jigger everything into nice clean patches for Geany
and Scintilla.

All that being said, if you aren't a strong C programmer and have no
interest in becoming one, all of this is probably way too much trouble
for what it's worth :) Unfortunately adding new proper language support
to Geany is quite difficult compared to most editors. Alternatively, you
might be able to get reasonable results by re-using existing filetypes
in Geany, maybe basing it on JavaScript or something more similar to
QML. Check Geany's manual for "custom filetypes"[4] for more info on
this much easier approach, there's a few existing examples of these kind
in Geany's source tree[5].

Cheers,
Matthew Brush

[1] http://www.scintilla.org/
[2]
https://groups.google.com/d/msg/scintilla-interest/jxch35Fue2k/ExZcjlrHdRkJ
[3] http://ctags.sourceforge.net/
[4] http://www.geany.org/manual/current/index.html#custom-filetypes
[5] https://github.com/geany/geany/blob/master/data/filetypes.Cython.conf


Devel mailing list
Devel@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/devel

--
Sent from my Android phone with K-9 Mail. Please excuse my brevity.