diff --git a/src/libs/languageserverprotocol/lsptypes.cpp b/src/libs/languageserverprotocol/lsptypes.cpp index 168a545105b..04594e54930 100644 --- a/src/libs/languageserverprotocol/lsptypes.cpp +++ b/src/libs/languageserverprotocol/lsptypes.cpp @@ -102,7 +102,7 @@ void WorkspaceEdit::setChanges(const Changes &changes) insert(changesKey, changesObject); } -WorkSpaceFolder::WorkSpaceFolder(const QString &uri, const QString &name) +WorkSpaceFolder::WorkSpaceFolder(const DocumentUri &uri, const QString &name) { setUri(uri); setName(name); diff --git a/src/libs/languageserverprotocol/lsptypes.h b/src/libs/languageserverprotocol/lsptypes.h index e4a9b993a3e..10ae2c79adf 100644 --- a/src/libs/languageserverprotocol/lsptypes.h +++ b/src/libs/languageserverprotocol/lsptypes.h @@ -440,12 +440,12 @@ class LANGUAGESERVERPROTOCOL_EXPORT WorkSpaceFolder : public JsonObject { public: WorkSpaceFolder() = default; - WorkSpaceFolder(const QString &uri, const QString &name); + WorkSpaceFolder(const DocumentUri &uri, const QString &name); using JsonObject::JsonObject; // The associated URI for this workspace folder. - QString uri() const { return typedValue(uriKey); } - void setUri(const QString &uri) { insert(uriKey, uri); } + DocumentUri uri() const { return DocumentUri::fromProtocol(typedValue(uriKey)); } + void setUri(const DocumentUri &uri) { insert(uriKey, uri); } // The name of the workspace folder. Defaults to the uri's basename. QString name() const { return typedValue(nameKey); } diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 7930b12143c..b72bd3dfe11 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -267,8 +267,9 @@ void Client::initialize() params.setInitializationOptions(m_initializationOptions); if (m_project) { params.setRootUri(DocumentUri::fromFilePath(m_project->projectDirectory())); - params.setWorkSpaceFolders(Utils::transform(SessionManager::projects(), [](Project *pro){ - return WorkSpaceFolder(pro->projectDirectory().toString(), pro->displayName()); + params.setWorkSpaceFolders(Utils::transform(SessionManager::projects(), [](Project *pro) { + return WorkSpaceFolder(DocumentUri::fromFilePath(pro->projectDirectory()), + pro->displayName()); })); } initRequest.setParams(params); @@ -840,7 +841,8 @@ void Client::projectOpened(ProjectExplorer::Project *project) if (!sendWorkspceFolderChanges()) return; WorkspaceFoldersChangeEvent event; - event.setAdded({WorkSpaceFolder(project->projectDirectory().toString(), project->displayName())}); + event.setAdded({WorkSpaceFolder(DocumentUri::fromFilePath(project->projectDirectory()), + project->displayName())}); DidChangeWorkspaceFoldersParams params; params.setEvent(event); DidChangeWorkspaceFoldersNotification change(params); @@ -860,8 +862,8 @@ void Client::projectClosed(ProjectExplorer::Project *project) if (!sendWorkspceFolderChanges()) return; WorkspaceFoldersChangeEvent event; - event.setRemoved( - {WorkSpaceFolder(project->projectDirectory().toString(), project->displayName())}); + event.setRemoved({WorkSpaceFolder(DocumentUri::fromFilePath(project->projectDirectory()), + project->displayName())}); DidChangeWorkspaceFoldersParams params; params.setEvent(event); DidChangeWorkspaceFoldersNotification change(params); @@ -1239,7 +1241,7 @@ void Client::handleMethod(const QString &method, MessageId id, const IContent *c result = nullptr; } else { result = Utils::transform(projects, [](ProjectExplorer::Project *project) { - return WorkSpaceFolder(project->projectDirectory().toString(), + return WorkSpaceFolder(DocumentUri::fromFilePath(project->projectDirectory()), project->displayName()); }); }