LSP: Improve handling of file URI scheme

Fixes #63205.

(cherry picked from commits 3fa943fe23,
42a16ef76e and
2ff69d6181)
This commit is contained in:
Lamia 2022-07-24 21:42:32 +10:00 committed by Rémi Verschelde
parent 3a2f2d99f6
commit a412922c2b
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 6 additions and 4 deletions

View file

@ -183,7 +183,9 @@ Dictionary GDScriptLanguageProtocol::initialize(const Dictionary &p_params) {
if (root_uri.length() && is_same_workspace) { if (root_uri.length() && is_same_workspace) {
workspace->root_uri = root_uri; workspace->root_uri = root_uri;
} else { } else {
workspace->root_uri = "file://" + workspace->root; String r_root = workspace->root;
r_root = r_root.lstrip("/");
workspace->root_uri = "file:///" + r_root;
Dictionary params; Dictionary params;
params["path"] = workspace->root; params["path"] = workspace->root;

View file

@ -496,9 +496,9 @@ Error GDScriptWorkspace::parse_local_script(const String &p_path) {
} }
String GDScriptWorkspace::get_file_path(const String &p_uri) const { String GDScriptWorkspace::get_file_path(const String &p_uri) const {
String path = p_uri; String path = p_uri.http_unescape();
path = path.replace(root_uri + "/", "res://"); String base_uri = root_uri.http_unescape();
path = path.http_unescape(); path = path.replacen(base_uri + "/", "res://");
return path; return path;
} }