<p>I added <code>ctags/parsers/autoit.c</code></p>
<div class="highlight highlight-source-c"><pre><span class="pl-c"><span class="pl-c">/*</span></span>
<span class="pl-c">*   Copyright (c) 2000-2006, Darren Hiebert, Elias Pschernig</span>
<span class="pl-c">*</span>
<span class="pl-c">*   This source code is released for free distribution under the terms of the</span>
<span class="pl-c">*   GNU General Public License version 2 or (at your option) any later version.</span>
<span class="pl-c">*</span>
<span class="pl-c">*   This module contains functions for generating tags for AutoIt functions.</span>
<span class="pl-c"><span class="pl-c">*/</span></span>

<span class="pl-c"><span class="pl-c">/*</span></span>
<span class="pl-c">*   INCLUDE FILES</span>
<span class="pl-c"><span class="pl-c">*/</span></span>
#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>general.h<span class="pl-pds">"</span></span>  <span class="pl-c"><span class="pl-c">/*</span> must always come first <span class="pl-c">*/</span></span>

#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds"><</span>string.h<span class="pl-pds">></span></span>

#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>parse.h<span class="pl-pds">"</span></span>
#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>read.h<span class="pl-pds">"</span></span>
#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>routines.h<span class="pl-pds">"</span></span>
#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">"</span>vstring.h<span class="pl-pds">"</span></span>

<span class="pl-c"><span class="pl-c">/*</span></span>
<span class="pl-c">*   DATA DEFINITIONS</span>
<span class="pl-c"><span class="pl-c">*/</span></span>
<span class="pl-k">typedef</span> <span class="pl-k">enum</span> {
        K_FUNCTION
} AutoItKind;

<span class="pl-k">static</span> kindOption AutoItKinds[] = {
        { <span class="pl-c1">true</span>, <span class="pl-s"><span class="pl-pds">'</span>f<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">"</span>func<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>functions<span class="pl-pds">"</span></span> }
};

<span class="pl-c"><span class="pl-c">/*</span></span>
<span class="pl-c">*   FUNCTION DEFINITIONS</span>
<span class="pl-c"><span class="pl-c">*/</span></span>
<span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">findAutoItTags</span> (<span class="pl-k">void</span>)
{
        vString *name = <span class="pl-c1">vStringNew</span> ();
        <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span> *line;

        <span class="pl-k">while</span> ((line = <span class="pl-c1">readLineFromInputFile</span> ()) != <span class="pl-c1">NULL</span>)
        {
                <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* cp = line;
                <span class="pl-k">if</span> ((line[<span class="pl-c1">0</span>] == <span class="pl-s"><span class="pl-pds">'</span>F<span class="pl-pds">'</span></span> || line[<span class="pl-c1">0</span>] == <span class="pl-s"><span class="pl-pds">'</span>f<span class="pl-pds">'</span></span>) &&
                        (line[<span class="pl-c1">1</span>] == <span class="pl-s"><span class="pl-pds">'</span>U<span class="pl-pds">'</span></span> || line[<span class="pl-c1">1</span>] == <span class="pl-s"><span class="pl-pds">'</span>u<span class="pl-pds">'</span></span>) &&
                        (line[<span class="pl-c1">2</span>] == <span class="pl-s"><span class="pl-pds">'</span>N<span class="pl-pds">'</span></span> || line[<span class="pl-c1">2</span>] == <span class="pl-s"><span class="pl-pds">'</span>n<span class="pl-pds">'</span></span>) &&
                        (line[<span class="pl-c1">3</span>] == <span class="pl-s"><span class="pl-pds">'</span>C<span class="pl-pds">'</span></span> || line[<span class="pl-c1">3</span>] == <span class="pl-s"><span class="pl-pds">'</span>c<span class="pl-pds">'</span></span>) &&
                        <span class="pl-c1">isspace</span> ((<span class="pl-k">int</span>) line[<span class="pl-c1">4</span>]))
                {
                        cp += <span class="pl-c1">4</span>;
                        <span class="pl-k">while</span> (<span class="pl-c1">isspace</span> ((<span class="pl-k">int</span>) *cp))
                                ++cp;
                        <span class="pl-k">while</span> (<span class="pl-c1">isalnum</span> ((<span class="pl-k">int</span>) *cp) || *cp == <span class="pl-s"><span class="pl-pds">'</span>_<span class="pl-pds">'</span></span>)
                        {
                                <span class="pl-c1">vStringPut</span> (name, (<span class="pl-k">int</span>) *cp);
                                ++cp;
                        }
                        <span class="pl-k">while</span> (<span class="pl-c1">isspace</span> ((<span class="pl-k">int</span>) *cp))
                                ++cp;
                        <span class="pl-k">if</span> (*cp == <span class="pl-s"><span class="pl-pds">'</span>(<span class="pl-pds">'</span></span>)
                                <span class="pl-c1">makeSimpleTag</span> (name, AutoItKinds, K_FUNCTION);
                        <span class="pl-c1">vStringClear</span> (name);
                }
        }
        <span class="pl-c1">vStringDelete</span> (name);
}

parserDefinition *<span class="pl-en">AutoItParser</span> (<span class="pl-k">void</span>)
{
        <span class="pl-k">static</span> <span class="pl-k">char</span> <span class="pl-k">const</span> *extensions[] = { <span class="pl-s"><span class="pl-pds">"</span>au3<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>AU3<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>Au3<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>aU3<span class="pl-pds">"</span></span>, <span class="pl-c1">NULL</span> };
        parserDefinition* def = <span class="pl-c1">parserNew</span> (<span class="pl-s"><span class="pl-pds">"</span>AutoIt<span class="pl-pds">"</span></span>);
        def->kinds      = AutoItKinds;
        def->kindCount  = <span class="pl-c1">ARRAY_SIZE</span> (AutoItKinds);
        def->extensions = extensions;
        def->parser     = findAutoItTags;
        <span class="pl-k">return</span> def;
}</pre></div>
<p>and change <code>ctags/Makefile.am</code></p>
<div class="highlight highlight-source-diff"><pre><span class="pl-mdr">@@ -14,6 +14,7 @@</span>
        parsers/actionscript.c \
        parsers/asciidoc.c \
        parsers/asm.c \
<span class="pl-mi1"><span class="pl-mi1">+</span>        parsers/autoit.c \</span>
        parsers/basic.c \
        parsers/c.c \
        parsers/cobol.c \</pre></div>
<p>Sad outcome: autocompletion doesn't work, on Symbols tab I see "No symbols found".<br>
What did I miss?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/issues/967#issuecomment-340590784">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJwQ8v_GAObIHMf8Nr6_tbfvQN-oWks5sxkAQgaJpZM4HwlzM">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ7KO1FSm1xNePmb-48_w_bxdpjl-ks5sxkAQgaJpZM4HwlzM.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/geany/geany/issues/967#issuecomment-340590784"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@Skif-off in #967: I added ```ctags/parsers/autoit.c```\r\n```c\r\n/*\r\n*   Copyright (c) 2000-2006, Darren Hiebert, Elias Pschernig\r\n*\r\n*   This source code is released for free distribution under the terms of the\r\n*   GNU General Public License version 2 or (at your option) any later version.\r\n*\r\n*   This module contains functions for generating tags for AutoIt functions.\r\n*/\r\n\r\n/*\r\n*   INCLUDE FILES\r\n*/\r\n#include \"general.h\"  /* must always come first */\r\n\r\n#include \u003cstring.h\u003e\r\n\r\n#include \"parse.h\"\r\n#include \"read.h\"\r\n#include \"routines.h\"\r\n#include \"vstring.h\"\r\n\r\n/*\r\n*   DATA DEFINITIONS\r\n*/\r\ntypedef enum {\r\n\tK_FUNCTION\r\n} AutoItKind;\r\n\r\nstatic kindOption AutoItKinds[] = {\r\n\t{ true, 'f', \"func\", \"functions\" }\r\n};\r\n\r\n/*\r\n*   FUNCTION DEFINITIONS\r\n*/\r\nstatic void findAutoItTags (void)\r\n{\r\n\tvString *name = vStringNew ();\r\n\tconst unsigned char *line;\r\n\r\n\twhile ((line = readLineFromInputFile ()) != NULL)\r\n\t{\r\n\t\tconst unsigned char* cp = line;\r\n\t\tif ((line[0] == 'F' || line[0] == 'f') \u0026\u0026\r\n\t\t\t(line[1] == 'U' || line[1] == 'u') \u0026\u0026\r\n\t\t\t(line[2] == 'N' || line[2] == 'n') \u0026\u0026\r\n\t\t\t(line[3] == 'C' || line[3] == 'c') \u0026\u0026\r\n\t\t\tisspace ((int) line[4]))\r\n\t\t{\r\n\t\t\tcp += 4;\r\n\t\t\twhile (isspace ((int) *cp))\r\n\t\t\t\t++cp;\r\n\t\t\twhile (isalnum ((int) *cp) || *cp == '_')\r\n\t\t\t{\r\n\t\t\t\tvStringPut (name, (int) *cp);\r\n\t\t\t\t++cp;\r\n\t\t\t}\r\n\t\t\twhile (isspace ((int) *cp))\r\n\t\t\t\t++cp;\r\n\t\t\tif (*cp == '(')\r\n\t\t\t\tmakeSimpleTag (name, AutoItKinds, K_FUNCTION);\r\n\t\t\tvStringClear (name);\r\n\t\t}\r\n\t}\r\n\tvStringDelete (name);\r\n}\r\n\r\nparserDefinition *AutoItParser (void)\r\n{\r\n\tstatic char const *extensions[] = { \"au3\", \"AU3\", \"Au3\", \"aU3\", NULL };\r\n\tparserDefinition* def = parserNew (\"AutoIt\");\r\n\tdef-\u003ekinds      = AutoItKinds;\r\n\tdef-\u003ekindCount  = ARRAY_SIZE (AutoItKinds);\r\n\tdef-\u003eextensions = extensions;\r\n\tdef-\u003eparser     = findAutoItTags;\r\n\treturn def;\r\n}\r\n```\r\nand change ```ctags/Makefile.am```\r\n```diff\r\n@@ -14,6 +14,7 @@\r\n \tparsers/actionscript.c \\\r\n \tparsers/asciidoc.c \\\r\n \tparsers/asm.c \\\r\n+\tparsers/autoit.c \\\r\n \tparsers/basic.c \\\r\n \tparsers/c.c \\\r\n \tparsers/cobol.c \\\r\n```\r\nSad outcome: autocompletion doesn't work, on Symbols tab I see \"No symbols found\".\r\nWhat did I miss?"}],"action":{"name":"View Issue","url":"https://github.com/geany/geany/issues/967#issuecomment-340590784"}}}</script>