diff --git a/CHANGELOG.md b/CHANGELOG.md index 41f450c3..7c627b36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ Releases of the extension can be downloaded from [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=redking00.vscode-nbts). +### [3.43.4](https://github.com/denoland/vscode_deno/compare/3.43.4...3.43.5) / 2025.02.26 + +- Revert "fix: move extended language formatting to client" (#1261) + ### [3.43.4](https://github.com/denoland/vscode_deno/compare/3.43.3...3.43.4) / 2025.02.25 - fix: move extended language formatting to client (#1258) diff --git a/client/src/commands.ts b/client/src/commands.ts index f3c0ca01..bc4e4652 100644 --- a/client/src/commands.ts +++ b/client/src/commands.ts @@ -40,7 +40,6 @@ import * as path from "path"; import * as process from "process"; import * as jsoncParser from "jsonc-parser/lib/esm/main.js"; import { semver } from "./semver"; -import { log } from "./extension"; // deno-lint-ignore no-explicit-any export type Callback = (...args: any[]) => unknown; @@ -190,10 +189,6 @@ export function startLanguageServer( { outputChannel: extensionContext.outputChannel, middleware: { - provideDocumentFormattingEdits: (document, options, token, next) => { - log("provideDocumentFormattingEdits:", document.uri.toString(), options); - return next(document, options, token) - }, workspace: { configuration: (params, token, next) => { const response = next(params, token) as Record[]; diff --git a/client/src/extension.ts b/client/src/extension.ts index a22b18c8..aaeac2fd 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -17,7 +17,6 @@ import * as util from "util"; import * as vscode from "vscode"; import { registerSidebar } from "./tasks_sidebar"; -import { DENO_FORMATTING_EDIT_PROVIDER } from "./formatting"; import { NBTSSerializer } from './notebook-serializers/nbts-serializer/nbts-serializer'; import { KernelController } from './notebook-controllers/kernel-controller/kernel-controller'; @@ -138,25 +137,67 @@ export async function activate( const p2cMap = new Map(); extensionContext.clientOptions = { documentSelector: [ - { language: "javascript", scheme: "file" }, - { language: "javascript", scheme: "untitled" }, - { language: "javascript", scheme: "deno" }, - { language: "javascript", notebook: "*" }, - { language: "javascriptreact", scheme: "file" }, - { language: "javascriptreact", scheme: "untitled" }, - { language: "javascriptreact", scheme: "deno" }, - { language: "javascriptreact", notebook: "*" }, - { language: "typescript", scheme: "file" }, - { language: "typescript", scheme: "untitled" }, - { language: "typescript", scheme: "deno" }, - { language: "typescript", notebook: "*" }, - { language: "typescriptreact", scheme: "file" }, - { language: "typescriptreact", scheme: "untitled" }, - { language: "typescriptreact", scheme: "deno" }, - { language: "typescriptreact", notebook: "*" }, - { language: "json", scheme: "file" }, - { language: "json", scheme: "untitled" }, - { language: "json", scheme: "deno" }, + { scheme: "file", language: "javascript" }, + { scheme: "file", language: "javascriptreact" }, + { scheme: "file", language: "typescript" }, + { scheme: "file", language: "typescriptreact" }, + { scheme: "file", language: "json" }, + { scheme: "file", language: "jsonc" }, + { scheme: "file", language: "markdown" }, + { scheme: "file", language: "html" }, + { scheme: "file", language: "css" }, + { scheme: "file", language: "scss" }, + { scheme: "file", language: "sass" }, + { scheme: "file", language: "less" }, + { scheme: "file", language: "yaml" }, + { scheme: "file", language: "sql" }, + { scheme: "file", language: "svelte" }, + { scheme: "file", language: "vue" }, + { scheme: "file", language: "astro" }, + { scheme: "file", language: "vento" }, + { scheme: "file", language: "nunjucks" }, + { scheme: "untitled", language: "javascript" }, + { scheme: "untitled", language: "javascriptreact" }, + { scheme: "untitled", language: "typescript" }, + { scheme: "untitled", language: "typescriptreact" }, + { scheme: "untitled", language: "json" }, + { scheme: "untitled", language: "jsonc" }, + { scheme: "untitled", language: "markdown" }, + { scheme: "untitled", language: "html" }, + { scheme: "untitled", language: "css" }, + { scheme: "untitled", language: "scss" }, + { scheme: "untitled", language: "sass" }, + { scheme: "untitled", language: "less" }, + { scheme: "untitled", language: "yaml" }, + { scheme: "untitled", language: "sql" }, + { scheme: "untitled", language: "svelte" }, + { scheme: "untitled", language: "vue" }, + { scheme: "untitled", language: "astro" }, + { scheme: "untitled", language: "vento" }, + { scheme: "untitled", language: "nunjucks" }, + { scheme: "deno", language: "javascript" }, + { scheme: "deno", language: "javascriptreact" }, + { scheme: "deno", language: "typescript" }, + { scheme: "deno", language: "typescriptreact" }, + { scheme: "deno", language: "json" }, + { scheme: "deno", language: "jsonc" }, + { scheme: "deno", language: "markdown" }, + { scheme: "deno", language: "html" }, + { scheme: "deno", language: "css" }, + { scheme: "deno", language: "scss" }, + { scheme: "deno", language: "sass" }, + { scheme: "deno", language: "less" }, + { scheme: "deno", language: "yaml" }, + { scheme: "deno", language: "sql" }, + { scheme: "deno", language: "svelte" }, + { scheme: "deno", language: "vue" }, + { scheme: "deno", language: "astro" }, + { scheme: "deno", language: "vento" }, + { scheme: "deno", language: "nunjucks" }, + { notebook: "*", language: "javascript" }, + { notebook: "*", language: "javascriptreact" }, + { notebook: "*", language: "typescript" }, + { notebook: "*", language: "typescriptreact" }, ], uriConverters: { code2Protocol: (uri) => { @@ -254,39 +295,6 @@ export async function activate( extensionContext.tasksSidebar.refresh(); } })); - context.subscriptions.push( - vscode.languages.registerDocumentFormattingEditProvider([ - { language: "jsonc", scheme: "file" }, - { language: "jsonc", scheme: "untitled" }, - { language: "markdown", scheme: "file" }, - { language: "markdown", scheme: "untitled" }, - { language: "html", scheme: "file" }, - { language: "html", scheme: "untitled" }, - { language: "css", scheme: "file" }, - { language: "css", scheme: "untitled" }, - { language: "scss", scheme: "file" }, - { language: "scss", scheme: "untitled" }, - { language: "sass", scheme: "file" }, - { language: "sass", scheme: "untitled" }, - { language: "less", scheme: "file" }, - { language: "less", scheme: "untitled" }, - { language: "yaml", scheme: "file" }, - { language: "yaml", scheme: "untitled" }, - { language: "sql", scheme: "file" }, - { language: "sql", scheme: "untitled" }, - { language: "svelte", scheme: "file" }, - { language: "svelte", scheme: "untitled" }, - { language: "vue", scheme: "file" }, - { language: "vue", scheme: "untitled" }, - { language: "astro", scheme: "file" }, - { language: "astro", scheme: "untitled" }, - { language: "astro", scheme: "deno" }, - { language: "vento", scheme: "file" }, - { language: "vento", scheme: "untitled" }, - { language: "nunjucks", scheme: "file" }, - { language: "nunjucks", scheme: "untitled" }, - ], DENO_FORMATTING_EDIT_PROVIDER), - ); const registerCommand = createRegisterCommand(context); registerCommand("deno.client.showReferences", commands.showReferences); diff --git a/client/src/formatting.ts b/client/src/formatting.ts deleted file mode 100644 index b3c78e3e..00000000 --- a/client/src/formatting.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { diffChars } from "diff"; -import * as fs from "fs/promises"; -import * as path from "path"; -import { spawnSync } from "child_process"; -import * as vscode from "vscode"; -import { getDenoCommandName } from "./util"; - -const SUPPORTED_EXTENSIONS_BY_LANGUAGE_ID = new Map([ - ["jsonc", "jsonc"], - ["markdown", "markdown"], - ["html", "html"], - ["css", "css"], - ["scss", "scss"], - ["sass", "sass"], - ["less", "less"], - ["yaml", "yaml"], - ["sql", "sql"], - ["svelte", "svelte"], - ["vue", "vue"], - ["astro", "astro"], - ["vento", "vto"], - ["nunjucks", "njk"], -]); - -export const DENO_FORMATTING_EDIT_PROVIDER: - vscode.DocumentFormattingEditProvider = { - async provideDocumentFormattingEdits(document, options, _token) { - // TODO(nayeemrmn): Account for `deno.json` exclude settings. - const ext = SUPPORTED_EXTENSIONS_BY_LANGUAGE_ID.get(document.languageId); - if (!ext) { - throw new Error("Unexpected language ID for client-side formatting."); - } - const command = await getDenoCommandName(); - let cwd = path.dirname(document.uri.fsPath); - while (!isDir(cwd)) { - const parentDir = path.dirname(cwd); - if (parentDir == cwd) { - break; - } - cwd = parentDir; - } - const configArgs = []; - if (!options.insertSpaces) { - configArgs.push("--use-tabs"); - } - configArgs.push("--indent-width"); - configArgs.push(options.tabSize.toString()); - const input = document.getText(); - const { stdout, error } = spawnSync(command, [ - "fmt", - "--unstable-component", - "--unstable-sql", - "--ext", - ext, - ...configArgs, - "-", - ], { - encoding: "utf-8", - cwd, - stdio: "pipe", - input, - }); - if (error) { - throw error; - } - const edits = []; - let currentOffset = 0; - for (const change of diffChars(input, stdout)) { - if (change.added) { - edits.push( - vscode.TextEdit.insert( - document.positionAt(currentOffset), - change.value, - ), - ); - } else { - const nextOffset = currentOffset + (change.count ?? 0); - if (change.removed) { - edits.push( - vscode.TextEdit.delete( - new vscode.Range( - document.positionAt(currentOffset), - document.positionAt(nextOffset), - ), - ), - ); - } - currentOffset = nextOffset; - } - } - return edits; - }, - }; - -async function isDir(path: string): Promise { - try { - const stats = await fs.stat(path); - return stats.isDirectory(); - } catch { - return false; - } -} diff --git a/package-lock.json b/package-lock.json index 8ff9ef1f..25efefb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-nbts", - "version": "1.0.27", + "version": "1.0.28", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-nbts", - "version": "1.0.27", + "version": "1.0.28", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -1943,7 +1943,7 @@ } }, "typescript-deno-plugin": { - "version": "3.43.4", + "version": "3.43.5", "license": "MIT", "devDependencies": { "typescript": "^5.0.2" diff --git a/package.json b/package.json index c31d0bdf..9a09aeab 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Visual Studio Code plugin for Deno lsp support on notebooks (+ NBTS serializer + DenoNBTS kernel)", "author": "redking00 & Deno Land Inc.", "license": "MIT", - "version": "1.0.27", + "version": "1.0.28", "icon": "deno.png", "galleryBanner": { "color": "#3B3738", diff --git a/typescript-deno-plugin/package-lock.json b/typescript-deno-plugin/package-lock.json index 0785f3f9..4dc26c11 100644 --- a/typescript-deno-plugin/package-lock.json +++ b/typescript-deno-plugin/package-lock.json @@ -1,12 +1,12 @@ { "name": "typescript-deno-plugin", - "version": "3.43.4", + "version": "3.43.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "typescript-deno-plugin", - "version": "3.43.4", + "version": "3.43.5", "license": "MIT", "devDependencies": { "typescript": "^5.0.2" diff --git a/typescript-deno-plugin/package.json b/typescript-deno-plugin/package.json index 8b28d14d..fbe1e63b 100644 --- a/typescript-deno-plugin/package.json +++ b/typescript-deno-plugin/package.json @@ -4,7 +4,7 @@ "author": "Deno Land Inc.", "license": "MIT", "private": true, - "version": "3.43.4", + "version": "3.43.5", "publisher": "deno-land", "main": "./dist/index", "files": [