[Geany-Devel] [FT-plugins] Proposed "Features"

Matthew Brush mbrush at xxxxx
Thu Sep 1 01:24:39 UTC 2016

On 2016-08-31 08:15 AM, Jiří Techet wrote:
> On Wed, Aug 31, 2016 at 1:22 PM, Thomas Martitz <kugel at rockbox.org> wrote:
> [...]
>> Wait, a AST comprising a million nodes doesn't result in a million
>> autocompletion candidates. Anyway, how does the number relate to our
>> discussion?
> It appears to me you don't really read what I'm writing - I'm talking about
> updating TM workspace tags which has to happen every time file is reparsed.
> As I said, autocompletion list population performance doesn't matter much
> because it will contain a lot less tags.
> And by the way, projects with 1 000 000 tags will have more like 100 000
> 000 nodes in AST.

To give a sensational example, a minimal "hello world" C++ program:

     #include <iostream>
     int main()
         std::cout << "Hello World" << std::endl;
         return 0;


     $ ctags -o - hello-world.cc | wc -l

Clang AST:

     $ clang++ -Xclang -ast-dump -fno-diagnostics-color \
         -fsyntax-only hello-world.cc | wc -l

Obviously since C++ compilers operate on translation units, the latter 
includes all of what's brought in through includes. If I manually strip 
it down to just what humans see in the source file, it's around 15 
lines, but the 37806 is what a libclang ft-plugin would be working with 
in the AST.

I couldn't speculate what a larger project like LLVM itself would parse 
to, but I suspect it would take a not-insignificant amount of time for 
an ft-plugin to even traverse the AST once (eg. to find all the nodes 
originating in a particular source file).

Matthew Brush

More information about the Devel mailing list