Clang plugin: Handle CUDA files better
This fixes two issues in how KDevelop's clang plugin handles CUDA files (.cu source files and .cuh headers):
- Those file types were not treated as source files, therefore if such a file was modified, it was not passed among the list of modified source files to clang for re-parsing. The re-parsing thus incorrectly used the unmodified file on disk instead. This is addressed by the change to documentfinderhelpers.cpp and kdevclang.xml.
- The patch passes the general code parser settings also to CUDA files (change in parsesession.cpp). This is for example important to get flags such as -std=c++11 that are required for correct parsing. However, it is not correct: the build system may use separate options for CUDA files (e.g., CMake's CUDA_NVCC_FLAGS). But it might still be better than the previous behavior of not passing any options except -xcuda, since it might be somewhat likely that it is a reasonable guess.
a) I am not sure whether the change in clanghelpers.cpp is required, but it seems coherent.
b) I changed the CUDA mime types in kdevclang.xml to inherit from text/x-c++src/hdr instead of text/x-csrc/hdr since the CUDA files can contain C++ code.
c) This patch is not sufficient to enable proper CUDA support. I'll post to the kdevelop-devel mailing list for that.
Test Plan: Tested manually.
Reviewers: KDevelop, kfunk
Reviewed By: KDevelop, kfunk
Subscribers: kfunk, apol, kdevelop-devel
Differential Revision: https://phabricator.kde.org/D17909