These ideological decisions don't sound very pragmatic. There's a <i>lot</i> of open-source prior art in this space (OpenGrok, Kythe, SourceGraph) which provide support for most large languages and have annotation output formats that are broadly similar to this JSON file, and you could still support users having indexers for small languages running as part of CI.<p>> There does not exist any widely available standalone C parsing library to provide C programs with access to an AST. There’s LLVM, but I have a deeply held belief that programming language compiler and introspection tooling should be implemented in the language itself. So, I set about to write a C parser from scratch.<p>Even if you prefer to write your C indexer in C, you could use LLVM's C [1] or Python [2] APIs. Plus, you can handle C++ without having to implement your own C++ parser from scratch, which is a much larger undertaking than C99 plus a few GNU extensions.<p>[1]: <a href="https://github.com/llvm-mirror/clang/blob/fb2a26cc2e40e007f19532b4e139d5f0a636d5c9/tools/c-index-test/c-index-test.c#L1956" rel="nofollow">https://github.com/llvm-mirror/clang/blob/fb2a26cc2e40e007f1...</a>
[2]: <a href="https://github.com/llvm-mirror/clang/blob/master/bindings/python/clang/cindex.py" rel="nofollow">https://github.com/llvm-mirror/clang/blob/master/bindings/py...</a>
How does this compare to using LSIF files?<p><a href="https://code.visualstudio.com/blogs/2018/12/04/rich-navigation" rel="nofollow">https://code.visualstudio.com/blogs/2018/12/04/rich-navigati...</a>
Ooo!<p>For Python dig up the old PySonar project (the author took it down for some reason but there are mirrors/archives where you can find versions. Oh hey, it looks like it has been resurrected: <a href="https://github.com/yinwang0/pysonar2" rel="nofollow">https://github.com/yinwang0/pysonar2</a>) It might have been superseded by something else in the meantime, I dunno.<p>It was the basis for Google's internal Python annotations thingy, and it fscking rocks.
So excited to use this once my requirements are implemented <i>(mostly just LFS, and to a lesser extent Merge(|Pull) Requests)</i>. Admittedly I don't <i>need</i> it, I just really appreciate the simplistic UI and straight forward pricing model.
Wow, this is great!<p>Conceivably someone could write an offline annotation viewer/editor as well? I would love for something like that to catch on.<p>Imagine Emacs and Pycharm plugins for viewing and editing these annotations, for example.