On 2016-08-31 07:55 AM, Thomas Martitz wrote:
Am 31.08.2016 um 16:52 schrieb Lex Trotman:
On 1 September 2016 at 00:43, Thomas Martitz <ku...@rockbox.org> wrote:
Am 31.08.2016 um 16:39 schrieb Matthew Brush:

I can't speak to all compiler libraries, but at least
libclang, libpython and libvala "compile" the source (well just
the front-end of the compiler is needed). They literally use
the built-in compiler front ends to understand the code. In the
case of libclang, it additionally provides helpful methods for
performing IDE-related features on the AST, while say with
libvala, the ft-plugin would be required to perform it's own
analysis of the AST to implement those feaures, which is still
a lot less work than in Geany/TM since it has access to the
full AST/context and the ft-plugin need not fear encoding
language specific semantics into its logic.

How do you pass {C,CXX,CPP}FLAGS to libclang? And where do you get them
from?
Libclang needs the full-fat build knowledge that "project" systems on
other IDEs provide.  Another reason to keep it separate from Geany.

So one would have to adjust the build settings and one or more
ft-plugins all the time?


One would have to tell the ft-plugin how to compile the code (where applicable). libclang can read a so-called "compilation-database"[0] which can be generated by CMake[1], Ninja[2], a Make wrapper called Bear[3], or written by hand.

IMO, complex build system integration is out of scope for ft-plugins.

I generally agree, although we could potentially look at improving projects/build commands in the future to some extent, I don't think we should look at it much at this point with ft-plugins.

But I see that not all features can be supported properly without build
system.


I don't think they'll usually require a "build system" per se, but they definitively need to be told how to compile the code where applicable.

For libpython, I don't think it needs any flags. For libvala IIRC and libclang (if not using compile_commands.json) they require the `argv` you'd pass to the compiler itself. It may very well be possible for ft-plugins using libraries with the `argv` approach to just grab the compile command from Geany's build commands and convert it back into an `argv` array or something.

Cheers,
Matthew Brush


[0]: http://clang.llvm.org/docs/JSONCompilationDatabase.html
[1]: https://cmake.org/cmake/help/v3.5/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html
[2]: https://ninja-build.org/manual.html#_extra_tools
[3]: https://github.com/rizsotto/Bear
_______________________________________________
Devel mailing list
Devel@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/devel

Reply via email to