Commit Graph

227 Commits

Author SHA1 Message Date
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
David Schulz
2ca4010f2d LSP: use DocumentUri as workspaceFolder
Fixes: QTCREATORBUG-24452
Change-Id: I596138e658118f7b348c22e67d60d153f547fdfa
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-08-13 06:44:06 +00:00
Eike Ziller
3944162039 Merge remote-tracking branch 'origin/4.13' into master
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
	src/plugins/cmakeprojectmanager/cmakebuildstep.h
	tests/auto/debugger/tst_namedemangler.cpp
	tests/auto/qml/codemodel/check/tst_check.cpp

Change-Id: Iefd5f71c03c0078513b76a92af764a4fb22ee4c2
2020-08-10 15:56:54 +02:00
David Schulz
91e78936fe LSP: prevent nullptr access
Found by coverity scan

Change-Id: Ibc243abbb40cde8c670084c9486fdd2f47b137de
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-07-28 11:35:17 +00:00
David Schulz
11ea89d936 LSP: Explicify API
Change-Id: Id208a420fd3e1e23d3279c4f1f19bdbed994a8d3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-07-15 08:31:30 +00:00
David Schulz
ca0f504c0e LSP: workaround msvc 2017 bug
Change-Id: I6a6fbfc1a582d83df3f3cf489236c7ca4c6626f7
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-07-14 10:48:31 +00:00
David Schulz
d097330b40 LSP: remove qt version check for markdown
Change-Id: I54da2acf5e3542355064b916582f3507b6bc5356
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-07-10 06:13:36 +00:00
hjk
e1c88116b3 Core/Utils: Migrate further to Utils::Id
The coreplugin/id.h header is kept for downstream for now.

Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66
(cherry picked from commit 430a33dcd9)
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-07-06 11:15:18 +00:00