From 8b16d5357dee6880a6b4aa7efd2bda0b263512e9 Mon Sep 17 00:00:00 2001 From: thomas Date: Wed, 29 Aug 2018 23:54:44 +0200 Subject: [PATCH 1/3] fix for issue #112 --- src/extension.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 9e25734..72a7b6d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -110,12 +110,13 @@ export function activate(context: vscode.ExtensionContext) { } const actions = provider.format().then((blocks) => { - return blocks.map((block) => { - if (block.error) { - showOutput(block.error.toString()); - } - - return vscode.TextEdit.replace(block.range, block.content); + vscode.window.activeTextEditor.edit((builder) => { + blocks.forEach((block) => { + if (block.error) { + showOutput(block.error.toString()); + } + builder.replace(block.range, block.content); + }); }); }).catch((err: Error) => showOutput(err.stack)); From ca33bb15fe4a5efafc32d1ee48e7db74fbed27c5 Mon Sep 17 00:00:00 2001 From: thomas Date: Thu, 30 Aug 2018 00:28:34 +0200 Subject: [PATCH 2/3] refactor formatting code between onCommand and onSave --- src/extension.ts | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 72a7b6d..23e47c3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -24,6 +24,19 @@ function showOutput(msg: string): void { output.show(); } +function formatEditor(editor:vscode.TextEditor, provider:EmbeddedProvider|StylesProvider):Promise { + return provider.format().then((blocks) => { + editor.edit((builder) => { + blocks.forEach((block) => { + if (block.error) { + showOutput(block.error.toString()); + } + builder.replace(block.range, block.content); + }); + }); + }).catch((err: Error) => showOutput(err.stack)); +} + function getProvider(document: vscode.TextDocument, selection: vscode.Selection, workspace: string, filepath: string, settings: IPluginSettings) { const stylesProvider = new StylesProvider(document, selection, document.languageId, workspace, filepath, settings); const embeddedProvider = new EmbeddedProvider(document, document.languageId, workspace, filepath, settings); @@ -59,17 +72,7 @@ export function activate(context: vscode.ExtensionContext) { return showOutput(`We do not support "${document.languageId}" syntax.`); } - provider.format().then((blocks) => { - textEditor.edit((builder) => { - blocks.forEach((block) => { - if (block.error) { - showOutput(block.error.toString()); - } - - builder.replace(block.range, block.content); - }); - }); - }).catch((err: Error) => showOutput(err.stack)); + formatEditor(textEditor, provider); }); const onSave = vscode.workspace.onWillSaveTextDocument((event) => { @@ -108,17 +111,7 @@ export function activate(context: vscode.ExtensionContext) { return null; } } - - const actions = provider.format().then((blocks) => { - vscode.window.activeTextEditor.edit((builder) => { - blocks.forEach((block) => { - if (block.error) { - showOutput(block.error.toString()); - } - builder.replace(block.range, block.content); - }); - }); - }).catch((err: Error) => showOutput(err.stack)); + const actions = formatEditor(vscode.window.activeTextEditor, provider); event.waitUntil(actions); }); From 055e2f7b5d978deb2fb02106af88bacdc6fe1795 Mon Sep 17 00:00:00 2001 From: thomas Date: Tue, 29 Jan 2019 23:18:29 +0100 Subject: [PATCH 3/3] fix formatting when using File > save all --- src/extension.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 23e47c3..a3e00ab 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,7 +6,7 @@ import * as micromatch from 'micromatch'; import StylesProvider from './providers/styles'; import EmbeddedProvider from './providers/embedded'; -import { IPluginSettings } from './types'; +import { IPluginSettings, IStyleBlock } from './types'; let output: vscode.OutputChannel; @@ -111,8 +111,23 @@ export function activate(context: vscode.ExtensionContext) { return null; } } - const actions = formatEditor(vscode.window.activeTextEditor, provider); + let actions; + const editor:vscode.TextEditor = vscode.window.visibleTextEditors.find( editor => editor.document == document); + + if ( editor ) { + actions = formatEditor(editor, provider); + } + else { + actions = provider.format().then((blocks: IStyleBlock[]) => { + return blocks.map((block) => { + if (block.error) { + showOutput(block.error.toString()); + } + return vscode.TextEdit.replace(block.range, block.content); + }); + }).catch((err: Error) => showOutput(err.stack)); + } event.waitUntil(actions); });