LSP: use DocumentUri as workspaceFolder

Fixes: QTCREATORBUG-24452
Change-Id: I596138e658118f7b348c22e67d60d153f547fdfa
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2020-08-12 13:07:14 +02:00
parent 5eb9054a35
commit 2ca4010f2d
3 changed files with 12 additions and 10 deletions

View File

@@ -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);

View File

@@ -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<QString>(uriKey); }
void setUri(const QString &uri) { insert(uriKey, uri); }
DocumentUri uri() const { return DocumentUri::fromProtocol(typedValue<QString>(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<QString>(nameKey); }

View File

@@ -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());
});
}