[VS Code] [vscode-cpptools plugin] Intellisense - Dim Inactive Regions: Where does vscode-cpptools get the values for variables used in "#IF" e.g. "GTK_CHECK_VERSION"?

Christian Ohrfandl christian.ohrfandl at gmail.com
Mon Dec 13 18:46:16 UTC 2021

Hello together,

thank you for pointing out your ideas!

I am currently working on ibreoffice/vcl/unx/gtk3/gtkframe.cxx.

As for the 'vscode/c_cpp_properties.json' file: If I delete the gtk-3.0 
line entirely and restart VS Code, nothing changes; so I guess that - as 
Christian pointed out - the include paths of c_cpp_properties.json are 
indeed a fallback that do not get used because there is the 
corresponding entry in compile_commands.json.

So, so turned to compile_commands.json:

FYI I use the workspace file that is provided when compiling LO.

So I rebuilt compile_commands.json and searched for the file that I am 
currently editing and having problems with 
(libreoffice/vcl/unx/gtk3/gtkframe.cxx); you can find the entry here: 

The interesting thing I can see from this entry are the following ones 
(ordered in order shown in the entry):

  * -isystem /usr/include/gtk-3.0
  * -isystem /usr/include/gtk-3.0
  * -isystem /usr/local/include/gtk-4.0

So yes, the gtk-3.0 entry is doubled AND - what is probably more 
interesting - is that there is the gtk-4.0 entry in there aswell AND the 
gtk-4.0 entry comes after the gtk-3.0 entries. May it be the problem 
that the gtk-4.0 entry comes after the gtk-3.0 entries in the json entry?

As for the vcl plugin: I seem to be building both gtk-3.0 and gtk-4.0 
versions; both 'instdir/program/libvclplug_gtk3lo.so' and 
'instdir/program/libvclplug_gtk4lo.so' are present.

So after adding '--disable-gtk3' to 'autogen.input' - as M. Weghorn 
pointed out - and recompiling compile_comands.json, the entry in 
compile_commands.json for libreoffice/vcl/unx/gtk3/gtkframe.cxx changes 
to https://pastebin.com/8YXL1h8E; so no gtk-3.0 entries in there 
anymore. I was also able to build LO again successfully. And - finally - 
this also solved the problem of VS Code dimming the mentioned sections. 
So this time, the GTK check seems to be true for > 4.0.0 and therefore, 
VS Code IntelliSense works as expected!!! Thank you for helping me out 
on that one!

Kind regards,


On 13.12.21 11:31, Christian Lohmaier wrote:
> Hi *,
> On Sat, Dec 11, 2021 at 3:41 PM Christian Ohrfandl
> <christian.ohrfandl at gmail.com>  wrote:
>> Hi
>> tl;dr see the discussion I created here
>> https://github.com/microsoft/vscode-cpptools/discussions/8523.
> disclaimer: didn't read that yet :-)
>> […]
>> So where does the vscode-cpptools know the GTK version from and
>> therefore is able to judge `GTK_CHECK_VERSION(4,0,0)`?
> All "magic" comes from the compile_commands.json file that is
> generated by the "make vim-ide-integration" command.
> That file contains the invocation from which intellisense gets the
> defines and header include paths.
> So when not using that file intellisense will fall flat and struggle
> to find headers, etc.
> Now why it picks up a wrong version: no idea, would have to look at
> the specific file and what the commandline is for the file.
>> I also looked into my project's `.vscode` folder into the
>> `c_cpp_properties.json` file and added the GTK4 library install dir
>> `"/usr/local/include/gtk-4.0"` as follows:
>> ```
>> {
>>       "configurations": [
>>           {
>>               "name": "Linux",
>>               "includePath": [
>>                   "${default}",
>>                   "/usr/local/include/gtk-4.0",
>>                   "/usr/include/gtk-3.0",
>>                   "/usr/include/glib-2.0",
>>                   "/usr/lib/x86_64-linux-gnu/glib-2.0/include",
>>                   "/usr/include/pango-1.0"
>>               ],
>>               "defines": [],
>>               "cStandard": "c17",
>>               "intelliSenseMode": "linux-clang-x64"
>>           }
>>       ],
>>       "version": 4
>> }
> So it seems you're not using the sample workspace file with the
> compile-commands.json it seems. Or if you do: the include paths are
> only the fallback in case there is no entry in the
> compile_commands.json file, i.e. for externals that are built as part
> of a LO compile.
>> […]
>> "So why not turn off the feature "Dim inactive regions"?", I thought.
>> Well, this makes the code undimmed (yay) BUT IntelliSense STILL does not
>> work (nay), which is a major problem for me.
> Cannot really help with that.
>> Can you help me out or is it a bug that IntelliSense does not work EVEN
>> if the "dim inactive regions" option is disabled?
> Define "does not work" - does code completion hints for the objects
> not work? then it is a bug in the vscode cpp plugin/nothing LO's
> integration can help with...
> ciao
> Christian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20211213/87c54889/attachment.htm>

More information about the LibreOffice mailing list