Commit Graph

57 Commits

Author SHA1 Message Date
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
7cba257299 LanguageClient: Print json before error message
This saves a roundtrip when reporting bugreports where an unexpected
error shows up.

Change-Id: Id2e7cbd86a456ea794f0791199077f931cab03c5
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-02-12 11:25:10 +00:00
David Schulz
e3c7b72003 LanguageClient: introduce new type for gorgeous formatted errors
Change-Id: Ia76bd768bcb6d33ce66319dddf8cc355a41ffa31
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-02-12 11:25:01 +00:00
Eike Ziller
5c121d5791 Merge remote-tracking branch 'origin/4.11'
Conflicts:
	src/plugins/genericprojectmanager/genericproject.cpp

Change-Id: Ib54f1645ec70a9e6460a888a13190ede130bccca
2020-02-05 11:59:35 +01:00
David Schulz
5f1fd0caee LanguageClient: keep the project on client reset
It won't be set again when restarting the server.

Task-number: QTCREATORBUG-23497
Change-Id: I28b4c4f9169a2de94d7ea7f6712c3900fd7099ee
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-01-22 11:55:18 +00:00
David Schulz
55a10b0e7a LanguageClient: add lsp based auto formatter
Change-Id: I2a7347961b4633868aa3b033c351a1e709c3597e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-01-22 08:42:32 +00:00
Eike Ziller
267946d100 Merge remote-tracking branch 'origin/4.11'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/boot2qt/qdbrunconfiguration.cpp
	src/plugins/boot2qt/qdbrunconfiguration.h
	src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
	src/plugins/qnx/qnxrunconfiguration.cpp
	src/plugins/remotelinux/remotelinuxrunconfiguration.h

Change-Id: I17c8e1bf300bb75d7317ccf7749dd3cc07709c21
2019-12-16 16:19:44 +01:00
David Schulz
017ed74400 LanguageClient: Fix crash on closing qc while restarting a server
Reset the assist providers when restarting a server, so the client can
be safely shutdown while closing Qt Creator.

Change-Id: I4d5f18582a8c67cbe02974d72fcef9703ed64dc4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-12-10 11:34:30 +00:00
Eike Ziller
9f21f59e68 LanguageClient: Support markdown tool tips with Qt 5.14
Use Qt::MarkdownText if language server returns markdown and it was
built against Qt 5.14.

Change-Id: I75787cfcb32480cb37bc0dadc4be12d005005099
Reviewed-by: David Schulz <david.schulz@qt.io>
2019-11-19 12:26:04 +00:00
David Schulz
30587e6dce LanguageClient: Do not add hover handler twice to editor
Check whether an editor already contains the hover handler before adding
to the list of handlers. Also remove the handler when a document is
deactivated for a specific client.

Change-Id: Iec1d3a0fd1dc3f02c8dd50b8968ff063efe2508a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-11-06 12:40:23 +00:00
David Schulz
bfc65cee98 LanguageClient: create TextMarks only for active clients
Fixes that marks from all running clients are shown after splitting the
editor.

Change-Id: Ia76a084e5b133d5f7205ac79f9584b211d73b501
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-17 08:04:47 +00:00
David Schulz
9afc5305d6 TextEditor: more FileName -> FilePath renaming
Change-Id: Ia61868806db47561e7bf7ae9b3cfb1e62a085a7a
Reviewed-by: hjk <hjk@qt.io>
2019-10-01 07:54:11 +00:00
David Schulz
e24ef9ca08 LanguageClient: always reset code assistant providers
Change-Id: Ic31eb11822b0ca1d82d0274f9b01749cebeecb2b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-20 06:59:19 +00:00
David Schulz
59c4d92186 LanguageClient: Fix typo
Change-Id: If565199b92b45c2c2fe7069180613e61d25e7738
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-19 08:53:55 +00:00
David Schulz
468f604900 LanguageClient: have one active client per open document
open a document in all clients supporting the document, but have just
one client that provide functionality like highlights, completions, and
find usages.

Change-Id: I6bd72eb022005ed643fefd1da139d482f4dd5279
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-19 08:53:47 +00:00
David Schulz
f0ad5813b9 LanguageClient: more FileName to FilePath renaming
Change-Id: I803211d462b442b6881a02e870d2cd816675e0d9
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-17 08:15:40 +00:00
David Schulz
567a20843f LanguageClient: remember opened documents by TextEditor::TextDocument
... instead of Utils::FilePath

Change-Id: I4ca38ca127fbb1a503a0cb9b5228cab325519550
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-16 07:31:49 +00:00
David Schulz
d3c94edd93 LanguageClient: only send contents of TextDocuments to the server
Change-Id: Ifdcd6ba161336814744c51f15e35a756960cb199
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-12 10:53:57 +00:00
David Schulz
45cd20c4a0 LanguageClient: remove unused function
Change-Id: I2177d6d4a11bdaf9666a1e529b3231c291aa4123
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-12 08:13:15 +00:00
David Schulz
704de8d676 LanguageClient: set assist provider trigger characters just once
Instead of setting the completion characters every time after a document
was opened only set it when the server capabilities are set.

Change-Id: Ia37dc426a98aca1a4884752ac5da2659bfda53ec
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-12 07:26:51 +00:00
David Schulz
bf6fd00163 LanguageClient: remove unsigned cast for HighlightingResult
Change-Id: Iefcc316a4a471e39f52cd8c7709a9feb967263aa
Reviewed-by: hjk <hjk@qt.io>
2019-09-11 12:01:22 +00:00
David Schulz
f0a3779513 LanguageClient: reset all assist providers
Instead of just unsetting the function assist provider and quick fix
assist provider reset it to the previous provider.

Change-Id: I46c5c2f14234e3da08480dd103e4634859447d57
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-11 07:37:17 +00:00
David Schulz
332031d677 LanguageClient: open a document in just one client
Also show a menu when triggering the language client toolbar button that
allows you to manage and switch between different language clients. The
default language server used to open a specific file type is determined
by the order of the servers inside the settings.

Change-Id: Ib1b21dd2c04d4559f538705e6ba229af043e02ae
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-09-09 13:29:33 +00:00
hjk
251287f0d3 Avoid warning on empty expressions
For some reason, Q_UNUSED includes already a semicolon, adding one
on the user side creates an additional empty statement.

Change-Id: I9c5e8fac381345a60792cb75e2938fd53958d3b0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-07-23 11:55:59 +00:00
Eike Ziller
4ce34fd90f Merge remote-tracking branch 'origin/4.10'
Change-Id: I88a6704fb8d723a3cbdfb1a2d9c84741f30d4da6
2019-07-22 09:34:47 +02:00
David Schulz
18e6962fca LanguageClient: reverse error list for initialize errors
like it's done in Client::handleMethod.

Change-Id: I78c8c43f93ebde20b662fa3d1b6032d83ccac0fd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-07-19 07:33:22 +00:00
David Schulz
c65e480cbd LanguageClient: include the range length in document updates
The did change notification parameter has an arguable redundant range
length field, but it seems that there are language server out there
which rely on the presence of this field.

Change-Id: Id29132fb6586a2886b8ba6d9a13df52a64f31161
Fixes: QTCREATORBUG-22694
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-07-19 06:00:58 +00:00
David Schulz
3fbb5ddba8 LanguageClient: Show outline after server start
If the server was started by opening a document the outline factory and
client was not properly initialized in the time the outline was
requested. Update the outline after the client is fully initialized.

Fixes: QTCREATORBUG-22695
Change-Id: I84dc56eead9774d80ed6baf7792daff930a7cb8e
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-07-18 08:34:18 +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
hjk
473a741c9f Utils: Rename FileName to FilePath
More in line with QFileInfo terminonlogy which appears to be
best-of-breed within Qt.

Change-Id: I1d051ff1c8363ebd4ee56376451df45216c4c9ab
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-05-28 12:23:26 +00:00
David Schulz
b0039f1ec8 LanguageClient: add signature help provider
Change-Id: Ia89c28b574c92802bbfda280115a50f5955f0854
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-21 05:46:37 +00:00
David Schulz
c874f07d53 LanguageClient: add hover handler
Change-Id: Iddf30828ef26a157ab935d0abe708087ab123dd6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-17 09:18:41 +00:00
David Schulz
e04339b1e8 LanguageClient: only replace the default completion provider
Change-Id: I36977132ac8094fd31d7bc255a1666ba807810bb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-17 09:18:32 +00:00
David Schulz
10611f2af9 LanguageClient: always set client capabilities
Not just if a project is currently set.

Change-Id: I07b19695464025a9d039364ff1611aa39e8e1a9b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-17 09:01:29 +00:00
David Schulz
763f114c83 LanguageClient: send partial document in update notification
Reduce the amount of transferred data between client and server by
sending events which just contain the changed part of the document
instead of the full content if the server supports those events.

Change-Id: I596930c405bd7a71e4219e328b449fca67664750
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-13 10:14:24 +00:00
David Schulz
d28a452053 LanguageClient: enable commit characters for completion items
While a completion is currently active a commit character can
automatically apply the current item and close the current completion
widget.

Change-Id: Ia962eed69684f8f13f54b88934c63700532103e7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-07 07:57:41 +00:00
David Schulz
5b46b17b08 LanguageClient: explicitly disable snippets in completion items
Change-Id: I706f26a2efe090265c36b367e9cd3858dbef9d06
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-06 09:01:27 +00:00
David Schulz
69e880c050 LanguageClient: add current document locator filter
Change-Id: I20442a254e4e016088b2da845d87af6e9f836731
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-30 05:19:31 +00:00
David Schulz
0ea840c2bd LanguageClient: add option to start client per project
Some server like rust or haskell require a project at server startup.
Add option that postpones the server start until we can assign a project
to an open file.

Change-Id: Iaa475289e833b27a730a90ea228f5d85ecc30338
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-29 09:52:02 +00:00
David Schulz
b79eabd4d2 LanguageClient: add cache for document symbols
Change-Id: Ia4c4061258c74d839edbd472c2087be74ac30113
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-25 10:54:23 +00:00
David Schulz
4832a22b6b LSP: set completion trigger characters to assist provider
Change-Id: I39bd9aca77d824b6533ea8e4c3aa704b9112be45
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-04-24 10:48:17 +00:00
David Schulz
dac8262aeb LanguageClient: show icon with assigned server names in toolbar
Change-Id: I44ceeb184812a4c48f042a19197c7f0ffd4299f8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-03 07:09:59 +00:00
David Schulz
73fbaea036 LanguageClient: support dynamic registration for more functions
Change-Id: Iaa49c96195b04ebf72f54698bc070fa0bcaa6311
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-02 08:49:52 +00:00
David Schulz
ffcf226a78 LSP: generate capabilities in a central place
Also remove the creator default capabilities from the default
constructor of the general client capabilities in Utils.

Change-Id: Ifdaaf1bfb5047197e37ba84773552648132df3e8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-02 07:57:23 +00:00
David Schulz
35baa3e89d LanguageClient: send project folder on server request
The server can request the list of opened projects via the
"workspace/workspaceFolders" request. Add a creator response for
this request.

Change-Id: Ieadf604aeb920da28f085b8441e6f9af1f540fd3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-04-02 07:57:16 +00:00
David Schulz
6d0d227974 LSP: Require an id for a response
The id is the essential part of a response.
Make the protocol implementation more stable by requiring this
id in the Response constructor.

Change-Id: I18908c8441be1ddd890058f3dd09fc8cda3b868c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-03-26 08:13:19 +00:00
David Schulz
a6f0e564d4 LanguageClient: Add option to start server when needed
Until now all servers where startet on creator startup. Change this
default to start server when first file that matches the configured
filter is opened. Additionally add an option that restores the old
behavior of always on servers.

Change-Id: I595e0ede1cf136cc803181377155bcd58ca1a83c
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-03-15 11:31:53 +00:00
Eike Ziller
c53ccceff1 Merge remote-tracking branch 'origin/4.9'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri
	src/plugins/debugger/debuggerkitinformation.cpp
	src/plugins/languageclient/languageclientmanager.cpp
	src/plugins/plugins.pro
	src/plugins/projectexplorer/kit.cpp
	src/plugins/projectexplorer/kitmanager.cpp

Change-Id: I66fb941202991f35f7d7761430b21e42dfc678a8
2019-03-14 15:51:15 +01:00
David Schulz
89335266ba LanguageClient: move match function to language filter
Change-Id: I9081d441fa2f48e5a1c5273e2de2620e0b88c4e0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-03-13 12:24:18 +00:00
David Schulz
6b59d711a8 TextEditor: return all BaseTextEditor for a document
Change-Id: Iab483528357fdba1b7107130c19370974c03979c
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-03-13 05:38:00 +00:00