Commit Graph

234 Commits

Author SHA1 Message Date
David Schulz
1d7e05e6a9 LanguageClient: remove unneeded document actions blocker
Change-Id: Id1f07dbf83fcf7d75aaba6d860fb1556761bbd4b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-04-27 08:38:16 +00:00
Christian Kandeler
91b6c58518 LanguageClient: Add signal to inform about WorkDoneProgressEnd
... and make use of it in the clangd client to be able tell when
background indexing has finished.

Change-Id: I0f3c6f9646fd66ababd08c12b2f347da5f1a3729
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-04-27 07:37:25 +00:00
Christian Kandeler
90a07eca28 LanguageClient: Add the possibility to override progress messages
... and make use of it in the clangd client.
We want the progress bar for background indexing to have a better title
than the plain (and non-translated) "indexing" that the clangd server
sends.

Change-Id: Ib75eac370e7c22f0c5bd477f4a4c423283b27e1f
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-04-26 08:13:21 +00:00
Christian Kandeler
ecafdb7543 ClangCodeModel: Add experimental clangd support
If the user has enabled clangd (default is off), we start up one instance
per project when it is opened/changed (including build config switches),
and trigger background indexing.
So far, the index is used to provide results for locators and "Find
Usages".
Per-document functionality such as semantic highlighting and completion
is still provided by libclang.

Change-Id: I12532fca1b9c6278baab560e7238cba6189cde9f
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-04-22 07:32:58 +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
David Schulz
d66b410adb LanguageClient: do not auto-assign documents to all clients
Only assign documents to a client if the client was started by a
setting. Programatically started clients should handle assigned
documents manually.

Change-Id: I192c4c011a48e0406f267d3cab3c860f740ddad7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-04-20 11:44:12 +00:00
Eike Ziller
2800f3b51f Merge remote-tracking branch 'origin/4.15'
Change-Id: I0afcf51d354ffd73a8f2956a7f78b1e4f032677b
2021-04-09 12:42:03 +02:00
David Schulz
86679c130b LanguageClient: update dynamic capabilities just once
Change-Id: I7149f581e55a25672dce44abc751912e02271135
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-04-09 07:48:57 +00:00
David Schulz
ae85170b66 LanguageClient: untrack request on cancel
Now we search for the key twice in the hash, but the hash shouldn't get
to big and the lookup doesn't happen very often.

Change-Id: I4751a8203321bb4c1ea5092b89593971d736e034
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-04-07 06:17:05 +00:00
David Schulz
f13d402b31 LanguageClient: prevent multiple TextEditorWidget connections
Change-Id: I97c7cb00bad898cc5f698bd3dcee23e44acfa9e2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-04-07 06:16:38 +00:00
David Schulz
1e8879ee72 LanguageClient: track document highlight request based on widgets
We can have multiple widgets per document, so we can have multiple
different cursors for the same document. Tracking document highlights
per widget prevents cancelling a potentially valid request for another
text cursor of another widget.

Change-Id: I800d9be5b44b327351252ab90305b8882efa87bb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-04-07 06:16:33 +00:00
Eike Ziller
5c713d624c Merge remote-tracking branch 'origin/4.15'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri

Change-Id: I309fe2a4ea7afac85481fc6466a9a6e58e340019
2021-03-18 09:41:37 +01:00
David Schulz
c218f77f7e LanguageClient: compress documentHighlight requests
Change-Id: I98707a61a228c66966c72f6b4da2470b6f53820e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-03-16 11:07:09 +00:00
David Schulz
a7fc1631a7 LanguageServerProtocol: add progress support
Change-Id: I8d3ccf0626ccde39516bbd024ed6e2da0380e4de
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-03-16 04:54:44 +00:00
David Schulz
3cb6d17d5a LSP: remove optional from required properties
Change-Id: Id13dee6d09ee32f0aa6718efdc42ce56bf04e2c5
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-03-02 12:51:51 +00:00
David Schulz
d17277b546 LSP: reduce error handling complexity
Instead of checking recursively every possible object just check the
required keys for an object and validate it on construction or
assignment from json.

This will reduce the implementation effort for protocol extensions and
also reduce the false positives we might get if the protocol gets
updated.

Change-Id: I3df24e62430d2c7575d26c1581e6a9606e7da4c1
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-03-02 12:51:47 +00:00
David Schulz
d46d53de1f LanguageClient: reset project pointer when project is closed
Change-Id: I9a2787404bd47bf338125df1066d88e9061b5768
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-23 12:46:22 +00:00
David Schulz
9cc234fbdf LanguageClient: Add the project display name to the client name
If the client was opened for a specific project.

Change-Id: Iafc9f5d46d06e2e656702260f297d6b2b998a431
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-23 08:52:46 +00:00
David Schulz
3f773cb1e5 LanguageClient: avoid sending message to server shutting down
Send the workspace change method before the server gets shut down.
Prevents an assert in Client::sendContent.

Change-Id: Iaedc9829379d987aa6f91a87e26d35b64a9f0f55
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-23 08:45:52 +00:00
David Schulz
2fe3ce93ae LanguageClient: Do not handle messages while shutting down
Fixes crash of todays demo...

Change-Id: I0af3edd098b5c05d7d74ff336739f1180a1ec348
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-19 11:43:27 +00:00
David Schulz
fa5fdef6e1 LanguageClient: clean up client interface declaration
Change-Id: I18b5b8a5b39a6be7c538054385c7dca188676eef
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-18 16:15:24 +00:00
David Schulz
f9502a3ba6 LanguageClient: move capabilities widget to inspector
The capabilities are not changeable for the user, but only there to
check whether a server is capable of a specific task. This will also
allow us to have more specialized settings widgets for specific servers
like for the java language server without the need to add the
capabilities to each of those special widgets.

Also add the dynamic capabilities to the widget so users have a complete
overview of the capabilities.

Change-Id: I9f2ed6ed11b458f0d4c67be3df632fd810023286
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-18 09:38:56 +00:00
David Schulz
ab7560bec4 LanguageClient: remove dead code
All files that match the language filter are opened in the server
currently, no matter whether they belong to the project or not. We want
to track changes to files outside the project, because the project might
depend on those files.

Change-Id: If78142489ad22899f8bd899ae3a7ce3f58618fa3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-16 14:27:43 +00:00
David Schulz
166fce5036 LanguageClient: improve Server startup
Starting a client does not need to be done via
LanguageClientManager::startClient anymore but can be done via
Client::start()

Change-Id: I571e96b6ad7d64786a345edf5dbb38208b9a1d12
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-16 14:13:20 +00:00
Christian Stenger
0cb6f07829 LanguageClient: Fix crash when language server dies
Do not remove items of a container while iterating over it
instead revert to old behavior of allocating a temporary.
Broke with cf010911f7.

Change-Id: Ie76974f1e74469f80ee28fb2011d66690dd9e917
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-02-16 11:55:39 +00:00
David Schulz
7521334261 LSP: support WorkDoneProgressOptions in server capabilities
These options indicate whether a server provides extra messages to track
the status of specific requests.

Change-Id: I3fb78f7fa7144a5a9418b32cb5b33d55b668c484
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-15 13:19:56 +00:00
David Schulz
29f1aca1c8 LanguageClient: remove unused formatting functions
The formatting functionality was moved into languageclientformatter.cpp

Change-Id: Ieeafd49c297a854e478a11d4fcb81062b9cfcf19
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-12 14:15:13 +00:00
David Schulz
e6d0ed3160 LanguageClient: support versioned diagnostics
Change-Id: Id182431f371201c7266fe0683e78fe56a8a9735b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-12 12:40:07 +00:00
David Schulz
9e36689092 LanguageClient: anounce dynamic registration capabilities for formatting
Change-Id: I285c3b8d448a44e7e6e9b6ffcc6b6577d4b4b53f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-04 11:22:35 +00:00
David Schulz
71da9d340d LanguageClient: use less magic when changing settings
Change-Id: I8c5f5a85bff7cf0cf0545199358c306f7f9b539e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-29 10:59:32 +00:00
Eike Ziller
df6967a897 Merge remote-tracking branch 'origin/4.14'
Change-Id: I6e67f23464fc14dda5a659004f0aa360d6f5d25f
2021-01-27 12:28:47 +01:00
David Schulz
eab9dc8ff2 LanguageClient: send client signature help capabilities
Change-Id: I5b45c6842cd53e1be43f3630a9a2ca12b69f70fd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-26 05:41:54 +00:00
David Schulz
71c2443bb0 LanguageClient: Fix dynamic registered signature help
Change-Id: Ie7427f4a0aede5c933995610d03791e837ad39e4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-26 05:41:40 +00:00
David Schulz
7910dadbca LanguageClient: Do not filter executed commands
The commands provided with the capabilities are not the only allowed
commands, but the ones that can always be executed.

Change-Id: Ie005fafe2e64c334f67809c00623dec2901972c6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-25 09:58:09 +00:00
Eike Ziller
aae3bf4ef7 Merge remote-tracking branch 'origin/4.14'
Change-Id: I516e87eed1b716ec085095c9dd4f47f04a99de7c
2021-01-25 09:06:36 +01:00
David Schulz
4f1c5bacb9 LanguageClient: fix multiple crashes in languageClient
The temporary containers are needed in some places because the content of the containers change
while iterating over them.
partially reverts: cf010911f7

Change-Id: I4d6df987b9e5382b6b18fa659b1174ca6919a02e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-25 07:42:26 +00:00
David Schulz
6564234dd9 LanguageClient: fix dynamic registered completion provider
Change-Id: I4c770b5b59b30b22a280a526b881b3b47bc43f45
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-22 08:54:34 +00:00
Eike Ziller
5c7793b07b LanguageClient: Do not pop up general messages pane
General messages pane should only be opened on direct user interaction.

Task-number: QTCREATORBUG-24430
Change-Id: I526659110fc67c627cb60fe56e1f709f064667c2
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-01-04 07:30:07 +00:00
Jarek Kobus
cf010911f7 Don't allocate unneeded temporary containers
Fix clazy warnings: allocating an unneeded temporary container
[clazy-container-anti-pattern]

Change-Id: I4b4c2c634eea650bbdf3c12d982a17f899fc94ec
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2020-12-14 12:35:47 +00:00
David Schulz
f440dfe43a LanguageClient: Restructure request response handling
Instead of working on a Client member IContent now returns an optional
response handler that consists of an id, a name and a callback.

Change-Id: I5ca7dd4eaa7ae37f333f99c9fe60339db03ebf2c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-10 09:31:31 +00:00
David Schulz
7e10d6d7b5 LanguageClient: remove unused function
Change-Id: If931e1e6d2e28eddb599faefda2590324ff0801b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-11-16 05:29:34 +00:00
David Schulz
bf2276ebde LanguageClient: do not generate diagnostics twice
Change-Id: Ib15f67fb362440fa901ae4118cb176b2bf073fdc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-10-28 13:29:51 +00:00
David Schulz
b0d4414dfc LanguageClient: pass id as a const ref when handling client messages
Change-Id: I7ab6a7517d4dd0fe66f601661e7b3f6a7afb338b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-10-19 15:56:31 +00:00
David Schulz
30f21bcf01 LanguageClient: Generate BaseMessage only once per send content
Change-Id: Ife4135dce924db83b8539035b4837ecee1403ad8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-10-19 08:16:13 +00:00
David Schulz
116fb0895d LSP: move diagnostic handling from client in a separate class
Change-Id: Id70a7b82137d3a4591de521380199e546e8685f4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-09-15 10:45:49 +00:00
Eike Ziller
20f51bc642 Merge remote-tracking branch 'origin/4.13' into master
Conflicts:
	src/plugins/languageclient/languageclientcompletionassist.cpp

Change-Id: If12e1c532e5623ef063681309a918e7b51117b1c
2020-09-14 10:12:14 +02:00
David Schulz
3a51cdf2ba LanguageClient: avoid recursive postponed document update
Change-Id: Ibaf8831977e254c7dad10617754e763114993aee
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-09-11 11:57:34 +00:00
David Schulz
44271262d9 LanguageClient: Fix crash after server shutdown
Unconditionally reset the assist provider even to a null pointer

Change-Id: Ie8f87802ab26b4a686704b792adc726a50f98bab
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-09-08 10:41:58 +00:00
David Schulz
dba4bff703 TextEditor: use Utils::FilePath as file member in AssistInterface
Change-Id: I3bf9b013b9350411f918efdb9d1a36a2c22bf972
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-09-04 10:14:21 +00:00
Eike Ziller
f296ed1328 Merge remote-tracking branch 'origin/4.13' into master
Change-Id: I1c426d95eedd82bd4470a64a9bafd734d23081ac
2020-08-13 11:41:32 +02:00