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

Tory Gaurnier torygaurnier at xxxxx
Fri Sep 20 00:05:12 UTC 2013

On 09/19/2013 03:21 PM, Colomban Wendling wrote:
> Le 20/09/2013 00:07, Tory Gaurnier a écrit :
>> [...]
>> So, the issue now is I can't really figure out how to build CTags, from
>> what I could figure out it seems I need to run the configure script to
>> add values to the Makefile.in, then run make -f Makefile.in, but that
>> doesn't seem to work, and there are no instructions that I can find on
>> building, I've checked the Readme
> It's in INSTALL, though a little too detailed (I guess this INSTALL file
> is just Autotool's one with slight modifications)
>> , and the FAQ. Have any of you guys
>> built CTags before and can point me in the right direction???
> You need to first generate the configure script using `autoreconf`, then
> run that configure script (`./configure [OPTIONS]`, which will generate
> Makefiles), and then run make:
> 	autoreconf -v && ./configure && make
> Regards,
> Colomban
> _______________________________________________
> Devel mailing list
> Devel at lists.geany.org
> https://lists.geany.org/cgi-bin/mailman/listinfo/devel
Ok, so now when I build it, I'm getting some warning, I'm not sure if 
these are normal or if something needs to be configured, I'm getting 
these warnings on build:
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal
configure.ac:489: warning: underquoted definition of CHECK_PROTO
configure.ac:489:   run info '(automake)Extending aclocal'
configure.ac:489:   or see 
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf
autoreconf: running: /usr/bin/autoheader
autoreconf: configure.ac: not using Automake
autoreconf: Leaving directory `.'
Exuberant Ctags, version 5.8
Linux 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64

Then the rest appears normal.

Then when I run, the program segfaults on freeParserResources () at 
Which is this line of code: eFree (lang->name);
Which is being called from main.c:572

Now my findQMLTags function in my qml.c file is very closely following 
the awk.c function findAwkTags, so I don't see how it could be caused by 
this, but I may be wrong.

Here is what I have so far:

#include "general.h"    /* always include first */

#include <string.h>     /* to declare strxxx() functions */

#include "parse.h"      /* always include */
#include "read.h"       /* to define file fileReadLine() */

typedef enum {
} QMLKind;

static kindOption QMLKinds [] = {
     { TRUE,    'o',    "object",    "objects"    },
     { TRUE, 'f',    "function",    "functions"    }

static void findQMLTags(void) {
     vString *name = vStringNew();
     const unsigned char *line;

     // If line is a function
     while((line = fileReadLine()) != NULL) {
         if(strncmp((const char*)line, "function", (size_t)8) == 0 && 
isspace((int)line[8])) {
             const unsigned char *cp = line + 8;

             while(isspace((int)*cp)) ++cp;
             while(isalnum((int)*cp)  ||  *cp == '_') {
                 vStringPut (name, (int)*cp);


             while(isspace((int)*cp)) ++cp;
             if(*cp == '(') makeSimpleTag(name, QMLKinds, JS_FUNCTION);
             if(*cp != '\0') ++cp;

     vStringDelete (name);

extern parserDefinition *QMLParser(void) {
     parserDefinition* def = parserNew("QML");
     static const char *const extensions [] = { "QML", NULL };

     def->name = "QML";
     def->kinds = QMLKinds;
     def->kindCount = KIND_COUNT(QMLKinds);
     def->extensions = extensions;
     def->parser = findQMLTags;
     //def->parser2; // Not sure I will need this
     def->regex = FALSE;

     return def;

More information about the Devel mailing list