Commit Graph

20 Commits

Author SHA1 Message Date
David Schulz
426fde79d6 LanguageClient: support semanticTokens/refresh
Fixes: QTCREATORBUG-26499
Change-Id: Icd5879609bb856797fa223394357a1f15554d2cf
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-11-03 07:46:50 +00:00
David Schulz
3b62755061 LanguageClient: additional log output for the semantic highlighter
Change-Id: Idc4d71bd988b9a23a6718932b4102a00fb94488e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-11-01 07:16:25 +00:00
Christian Kandeler
6f26a1545c ClangCodeModel: Check doc revision when highlighting with clangd
Change-Id: I981d375e3656e89bb66516218e3f4e33ee8bbb9e
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-10-25 08:45:07 +00:00
Christian Kandeler
2eb50afd9c LanguageClient: Fix document version update
... for empty semantic tokens delta.
Amends 86061fb44a.

Change-Id: Id6d6cdc1904ea5353d18cea57b55ed3fa16727de
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-10-25 08:43:11 +00:00
David Schulz
86061fb44a LanguageClient: save document version for semantic tokens
Change-Id: Icd17e7f140cd172b2515711a3562c479f0ad488d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-10-22 09:23:27 +00:00
Christian Kandeler
847a03786c LanguageClient: Re-highlight also on empty deltas
This is needed for e.g. ClangdClient, which may need to update even if
the highlighting delta from the server is empty.

Task-number: QTCREATORBUG-26183
Change-Id: I38398c9563fa7a6a1906c5cb57fd1cbcd444cbd9
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-09-07 09:12:13 +00:00
Christian Kandeler
e0e8fda580 ClangCodeModel: Use clangd for completion and function hint
Change-Id: I80160f3a40da18ac178682afe6caba5e5af6e3eb
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-08-23 09:06:31 +00:00
David Schulz
bbb06a72ec LanguageClient: reapply semantic highlight after font changed
Change-Id: I609e26b7f85744fdffb8399e0d651691b7c39900
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-08-10 06:20:20 +00:00
Christian Kandeler
f55d5d8ec1 LanguageClient: Do not re-highlight when receiving the error variant
... of a SemanticTokens message.

Change-Id: I0f6e55d6656c11e7925e3bc4400ea2e575b9f138
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-07-09 07:30:21 +00:00
David Schulz
5d33982513 LSP: reload semantic token if we encounter corrupted data
Change-Id: I73185b0b7be57d348fc1a461b1db0383313d7208
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-07-06 04:58:50 +00:00
Christian Kandeler
68846a7729 ClangCodeModel: Provide highlighting via clangd
Note that we lose the highlighting for virtual function calls. We need
to amend clangd to add the respective information to its semantic tokens
message.
Also, Qt properties are no longer highlighted as class members. We'll
investigate how to best restore this feature.

Change-Id: I403712aada3d7a8e1c7b7c1277f43f7f64f8450b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-07-05 07:39:06 +00:00
David Schulz
62cf127376 LanguageClient: highlight methods as functions
...like our internal or clang code model.

Change-Id: Ibe817611276999815fd28a22a73e07671a696479
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-06-10 11:46:58 +00:00
David Schulz
2d31ae0480 LanguageClient: Fix semantic token highlight
Ignore unknown modifiers when building up and accessing the text char
format hash.

Change-Id: I7e11e3fb6f4240083045368daec54e417416efa9
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-06-10 11:46:52 +00:00
David Schulz
0ab08e8574 LanguageClient: fix semanctic token delta data manipulation
Make sure that multiple edits are in order.

The SemanticTokensEdit start is relative to the start of the data and
not to the position of the previous edit.

Do not try to be smart when calculating the start of the modification,
but assume that start is always a preedit index.

Change-Id: I3e1513f5fe631aac21fecb5e0611d987355e2c21
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-05-12 12:14:54 +00:00
David Schulz
0938452199 LanguageClient: remove unnecessary member function calls
Change-Id: I27e626cdef9c8f645cc1ea2f79ec6cfda09342fb
Reviewed-by: Thorbjørn Lindeijer <bjorn@lindeijer.nl>
2021-05-06 10:48:09 +00:00
David Schulz
f1bb3b6811 LSP: add semantic tokens
Change-Id: Ia6865ec6991ec62ae9f0dc2dfa692f1f27318ed1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-04-21 11:33:56 +00:00
Tom Praschan
5fcd52fe83 ClangCodeModel/TextEditor: Add support for highlighting parameters
This is already built into clang, so we just need to expose it to the
highlighter and the UI.

Fixes: QTCREATORBUG-24880
Change-Id: I6d0595af2589a9b69eb954aafad46457ab2c5752
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-03-15 09:48:24 +00:00
Alexis Murzeau
aa68902b62 LSP: update semantic highlighting to use more colors
The actual highlighting of the C++ code using clangd doesn't use many
colors to differentiate symbols (for example, fields of a class).

This commit makes symbols more visible for these categories:
 - static methods
 - preprocessor macros
 - struct and class fields
 - static fields

Change-Id: I001325cf5e48aa07d7397b2b7ac98a65501e1d5d
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-04-29 19:36:39 +00:00
David Schulz
b9af9881a9 LanguageClient: update semantic highlighting only if server supports it
Task-number: QTCREATORBUG-23599
Change-Id: I76c804b51362ad6ab2aecf0631a16289a33e4810
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-02-18 12:03:29 +00:00
David Schulz
307f1d8e6e LanguageClient: add support for proposed semantic highlight
implements the current proposal for the semantic highlighting
via the language server protocol.
https://github.com/microsoft/vscode-languageserver-node/pull/367

Change-Id: I857d606fcf5c782e0ea8e18e5d098edd26286aed
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-06-21 08:37:11 +00:00