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>
This commit is contained in:
David Schulz
2019-03-15 10:09:17 +01:00
parent 2df4667620
commit 35baa3e89d
4 changed files with 36 additions and 1 deletions

View File

@@ -871,6 +871,21 @@ void Client::handleMethod(const QString &method, MessageId id, const IContent *c
paramsValid = params.isValid(&error);
if (paramsValid)
applyWorkspaceEdit(params.edit());
} else if (method == WorkSpaceFolderRequest::methodName) {
WorkSpaceFolderRequest::Response response(dynamic_cast<const WorkSpaceFolderRequest *>(content)->id());
const QList<ProjectExplorer::Project *> projects
= ProjectExplorer::SessionManager::projects();
WorkSpaceFolderResult result;
if (projects.isEmpty()) {
result = nullptr;
} else {
result = Utils::transform(projects, [](ProjectExplorer::Project *project) {
return WorkSpaceFolder(project->projectDirectory().toString(),
project->displayName());
});
}
response.setResult(result);
sendContent(response);
} else if (id.isValid(&error)) {
Response<JsonObject, JsonObject> response(id);
ResponseError<JsonObject> error;