vscode-bazel icon indicating copy to clipboard operation
vscode-bazel copied to clipboard

Add Uri schemes to document selectors

Open allevato opened this issue 6 years ago • 1 comments

The debug console when running our extension shows messages like these at activation time:

[UriError]: Scheme is missing: {scheme: "", authority: "", path: "", query: "", fragment: ""}
extensionHostProcess.js:76
Extension 'BazelBuild.vscode-bazel' uses a document selector without scheme. Learn more about this: https://go.microsoft.com/fwlink/?linkid=872305
extensionHostProcess.js:732

According to https://go.microsoft.com/fwlink/?linkid=872305, we should be explicit about the file scheme for our document selectors to ensure that we can safely use the vscode.Uri.fsPath property to find the file (because it could be a remote file, or not saved yet).

allevato avatar Dec 20 '18 19:12 allevato

The first seems to have gone away, I did a quick attempt at the second with:

diff --git a/src/extension/extension.ts b/src/extension/extension.ts
index 9d87e79..29745a5 100644
--- a/src/extension/extension.ts
+++ b/src/extension/extension.ts
@@ -82,26 +82,32 @@ export function activate(context: vscode.ExtensionContext) {
     ),
     // CodeLens provider for BUILD files
     vscode.languages.registerCodeLensProvider(
-      [{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
+      [
+        { scheme: "file", pattern: "**/BUILD" },
+        { scheme: "file", pattern: "**/BUILD.bazel" },
+      ],
       codeLensProvider,
     ),
     // Buildifier formatting support
     vscode.languages.registerDocumentFormattingEditProvider(
       [
-        { pattern: "**/BUILD" },
-        { pattern: "**/BUILD.bazel" },
-        { pattern: "**/WORKSPACE" },
-        { pattern: "**/WORKSPACE.bazel" },
-        { pattern: "**/*.BUILD" },
-        { pattern: "**/*.bzl" },
-        { pattern: "**/*.sky" },
+        { scheme: "file", pattern: "**/BUILD" },
+        { scheme: "file", pattern: "**/BUILD.bazel" },
+        { scheme: "file", pattern: "**/WORKSPACE" },
+        { scheme: "file", pattern: "**/WORKSPACE.bazel" },
+        { scheme: "file", pattern: "**/*.BUILD" },
+        { scheme: "file", pattern: "**/*.bzl" },
+        { scheme: "file", pattern: "**/*.sky" },
       ],
       new BuildifierFormatProvider(),
     ),
     buildifierDiagnostics,
     // Symbol provider for BUILD files
     vscode.languages.registerDocumentSymbolProvider(
-      [{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
+      [
+        { scheme: "file", pattern: "**/BUILD" },
+        { scheme: "file", pattern: "**/BUILD.bazel" },
+      ],
       new BazelTargetSymbolProvider(),
     ),
     // Task events.

But I still get the message, so I'm not sure what's triggering it.

thomasvl avatar Jun 05 '19 19:06 thomasvl