From ab31cb15fae74592f49c2ceadc8d7810228fa7e2 Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Sat, 26 Aug 2023 23:21:26 -0700 Subject: fix: :bug: correctly generate uris for remote --- extension/src/continueIdeClient.ts | 8 ++++---- extension/src/decorations.ts | 3 ++- extension/src/diffs.ts | 15 ++++++++------- extension/src/util/vscode.ts | 10 ++++++++++ 4 files changed, 24 insertions(+), 12 deletions(-) (limited to 'extension/src') diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index 4e099fdb..3fa8dec1 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -3,7 +3,7 @@ import { showSuggestion as showSuggestionInEditor, SuggestionRanges, } from "./suggestions"; -import { openEditorAndRevealRange } from "./util/vscode"; +import { openEditorAndRevealRange, uriFromFilePath } from "./util/vscode"; import { FileEdit } from "../schema/FileEdit"; import { RangeInFile } from "../schema/RangeInFile"; import * as vscode from "vscode"; @@ -270,7 +270,7 @@ class IdeProtocolClient { messenger.send("listDirectoryContents", { contents: ( await vscode.workspace.fs.readDirectory( - vscode.Uri.file(data.directory) + uriFromFilePath(data.directory) ) ) .map(([name, type]) => name) @@ -439,7 +439,7 @@ class IdeProtocolClient { async fileExists(filepath: string): Promise { try { - await vscode.workspace.fs.stat(vscode.Uri.file(filepath)); + await vscode.workspace.fs.stat(uriFromFilePath(filepath)); return true; } catch { return false; @@ -563,7 +563,7 @@ class IdeProtocolClient { if (typeof contents === "undefined") { try { contents = await vscode.workspace.fs - .readFile(vscode.Uri.file(filepath)) + .readFile(uriFromFilePath(filepath)) .then((bytes) => new TextDecoder().decode(bytes)); } catch { contents = ""; diff --git a/extension/src/decorations.ts b/extension/src/decorations.ts index 0587110c..b7e2966c 100644 --- a/extension/src/decorations.ts +++ b/extension/src/decorations.ts @@ -1,12 +1,13 @@ import * as vscode from "vscode"; import * as path from "path"; +import { uriFromFilePath } from "./util/vscode"; export function showAnswerInTextEditor( filename: string, range: vscode.Range, answer: string ) { - vscode.workspace.openTextDocument(vscode.Uri.file(filename)).then((doc) => { + vscode.workspace.openTextDocument(uriFromFilePath(filename)).then((doc) => { const editor = vscode.window.activeTextEditor; if (!editor) { return; diff --git a/extension/src/diffs.ts b/extension/src/diffs.ts index d2d1dae3..f28203e6 100644 --- a/extension/src/diffs.ts +++ b/extension/src/diffs.ts @@ -5,6 +5,7 @@ import * as vscode from "vscode"; import { extensionContext, ideProtocolClient } from "./activation/activate"; import { getMetaKeyLabel } from "./util/util"; import { devDataPath } from "./activation/environmentSetup"; +import { uriFromFilePath } from "./util/vscode"; interface DiffInfo { originalFilepath: string; @@ -16,13 +17,13 @@ interface DiffInfo { async function readFile(path: string): Promise { return await vscode.workspace.fs - .readFile(vscode.Uri.file(path)) + .readFile(uriFromFilePath(path)) .then((bytes) => new TextDecoder().decode(bytes)); } async function writeFile(path: string, contents: string) { await vscode.workspace.fs.writeFile( - vscode.Uri.file(path), + uriFromFilePath(path), new TextEncoder().encode(contents) ); } @@ -42,7 +43,7 @@ class DiffManager { private async setupDirectory() { // Make sure the diff directory exists - await vscode.workspace.fs.createDirectory(vscode.Uri.file(DIFF_DIRECTORY)); + await vscode.workspace.fs.createDirectory(uriFromFilePath(DIFF_DIRECTORY)); } constructor() { @@ -72,7 +73,7 @@ class DiffManager { ): Promise { // If the file doesn't yet exist or the basename is a single digit number (vscode terminal), don't open the diff editor try { - await vscode.workspace.fs.stat(vscode.Uri.file(newFilepath)); + await vscode.workspace.fs.stat(uriFromFilePath(newFilepath)); } catch { return undefined; } @@ -80,8 +81,8 @@ class DiffManager { return undefined; } - const rightUri = vscode.Uri.file(newFilepath); - const leftUri = vscode.Uri.file(originalFilepath); + const rightUri = uriFromFilePath(newFilepath); + const leftUri = uriFromFilePath(originalFilepath); const title = "Continue Diff"; console.log( "Opening diff window with ", @@ -177,7 +178,7 @@ class DiffManager { vscode.commands.executeCommand( "workbench.action.files.revert", - vscode.Uri.file(newFilepath) + uriFromFilePath(newFilepath) ); return newFilepath; diff --git a/extension/src/util/vscode.ts b/extension/src/util/vscode.ts index bf0fa1e5..2283bfdc 100644 --- a/extension/src/util/vscode.ts +++ b/extension/src/util/vscode.ts @@ -102,3 +102,13 @@ export function openEditorAndRevealRange( }); }); } + +export function uriFromFilePath(filepath: string): vscode.Uri { + if (vscode.env.remoteName) { + return vscode.Uri.parse( + `vscode-remote://${vscode.env.remoteName}${filepath}` + ); + } else { + return vscode.Uri.file(filepath); + } +} -- cgit v1.2.3-70-g09d2