From 1354f4a8ba11da7a13cb9a764a08de4cad8e77b8 Mon Sep 17 00:00:00 2001 From: Denis Malinochkin Date: Tue, 17 Oct 2017 08:56:31 +0300 Subject: [PATCH 1/3] chore(package): Update rquired version of VS Code to 1.16.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 67484e6..0f181ff 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "publisher": "mrmlnc", "license": "MIT", "engines": { - "vscode": "^1.15.0" + "vscode": "^1.16.0" }, "icon": "icon.png", "author": { From ed9fc434dff235442de3f948e7dc40886d950271 Mon Sep 17 00:00:00 2001 From: Denis Malinochkin Date: Tue, 17 Oct 2017 09:16:24 +0300 Subject: [PATCH 2/3] fix(*): commands for work without workspace --- src/extension.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index c0ee5db..9e25734 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -39,12 +39,19 @@ function getProvider(document: vscode.TextDocument, selection: vscode.Selection, export function activate(context: vscode.ExtensionContext) { const onCommand = vscode.commands.registerTextEditorCommand('csscomb.execute', (textEditor) => { + // Prevent run command without active TextEditor + if (!vscode.window.activeTextEditor) { + return null; + } + const document = textEditor.document; const selection = textEditor.selection; const filepath = document.uri.fsPath; const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri); - const workspace = workspaceFolder.uri.fsPath; - const settings = vscode.workspace.getConfiguration('csscomb', workspaceFolder.uri) as IPluginSettings; + // Use workspace directory or filepath of current file as workspace folder + const workspace = workspaceFolder ? workspaceFolder.uri.fsPath : filepath; + const workspaceUri = workspaceFolder ? workspaceFolder.uri : null; + const settings = vscode.workspace.getConfiguration('csscomb', workspaceUri) as IPluginSettings; const provider = getProvider(document, selection, workspace, filepath, settings); @@ -66,11 +73,18 @@ export function activate(context: vscode.ExtensionContext) { }); const onSave = vscode.workspace.onWillSaveTextDocument((event) => { + // Prevent run command without active TextEditor + if (!vscode.window.activeTextEditor) { + return null; + } + const document = event.document; const filepath = document.uri.fsPath; const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri); - const workspace = workspaceFolder.uri.fsPath; - const settings = vscode.workspace.getConfiguration('csscomb', workspaceFolder.uri) as IPluginSettings; + // Use workspace directory or filepath of current file as workspace folder + const workspace = workspaceFolder ? workspaceFolder.uri.fsPath : filepath; + const workspaceUri = workspaceFolder ? workspaceFolder.uri : null; + const settings = vscode.workspace.getConfiguration('csscomb', workspaceUri) as IPluginSettings; // Skip files without providers const provider = getProvider(document, null, workspace, filepath, settings); From 4c0e59a31a203eb7f81abefc12e9383e226c28bc Mon Sep 17 00:00:00 2001 From: Denis Malinochkin Date: Tue, 17 Oct 2017 09:17:40 +0300 Subject: [PATCH 3/3] style(*): Mark params of classes as readonly --- src/providers/base.ts | 8 ++++---- src/providers/embedded.ts | 4 ++-- src/providers/styles.ts | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/providers/base.ts b/src/providers/base.ts index aa9394d..c2be373 100644 --- a/src/providers/base.ts +++ b/src/providers/base.ts @@ -21,10 +21,10 @@ const configProfiler = new ConfigProfiler(null, { export default class BaseProvider { constructor( - private workspace: string, - private filepath: string, - public syntax: string, - private settings: IPluginSettings + private readonly workspace: string, + private readonly filepath: string, + public readonly syntax: string, + private readonly settings: IPluginSettings ) { } public supportedSyntaxes(): string[] { diff --git a/src/providers/embedded.ts b/src/providers/embedded.ts index df47bb2..b3709df 100644 --- a/src/providers/embedded.ts +++ b/src/providers/embedded.ts @@ -12,8 +12,8 @@ export interface IStyleBlock { export default class EmbeddedProvider extends BaseProvider { constructor( - private document: vscode.TextDocument, - public syntax: string, + private readonly document: vscode.TextDocument, + public readonly syntax: string, workspace: string, filepath: string, settings: IPluginSettings ) { super(workspace, filepath, syntax, settings); diff --git a/src/providers/styles.ts b/src/providers/styles.ts index c379a54..5fc56d9 100644 --- a/src/providers/styles.ts +++ b/src/providers/styles.ts @@ -6,9 +6,9 @@ import { IPluginSettings, IStyleBlock } from '../types'; export default class StylesProvider extends BaseProvider { constructor( - private document: vscode.TextDocument, - private selection: vscode.Selection, - public syntax: string, + private readonly document: vscode.TextDocument, + private readonly selection: vscode.Selection, + public readonly syntax: string, workspace: string, filepath: string, settings: IPluginSettings ) { super(workspace, filepath, syntax, settings);