diff --git a/src/solidlsp/ls_utils.py b/src/solidlsp/ls_utils.py index 7aa610ed..f41f089b 100644 --- a/src/solidlsp/ls_utils.py +++ b/src/solidlsp/ls_utils.py @@ -131,7 +131,13 @@ class PathUtils: from urlparse import urlparse parsed = urlparse(uri) host = f"{os.path.sep}{os.path.sep}{parsed.netloc}{os.path.sep}" - return os.path.normpath(os.path.join(host, url2pathname(unquote(parsed.path)))) + path = os.path.normpath(os.path.join(host, url2pathname(unquote(parsed.path)))) + + # Normalize backslashes to forward slashes for JSON compatibility + # This prevents JSON parsing errors when paths contain unescaped backslashes + path = path.replace("\\", "/") + + return path @staticmethod def path_to_uri(path: str) -> str: @@ -152,7 +158,10 @@ class PathUtils: returns `None` otherwise. """ if PurePath(path).drive == PurePath(base_path).drive: - return str(PurePath(os.path.relpath(path, base_path))) + rel_path = str(PurePath(os.path.relpath(path, base_path))) + # Normalize backslashes to forward slashes for JSON compatibility + rel_path = rel_path.replace("\\", "/") + return rel_path return None