From 901810dc4ac8cb4a85c2c3f5fcbff1a875e256b0 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 11 Oct 2016 09:37:28 +0200 Subject: [PATCH] git: dirty diff first steps --- extensions/git/src/dirtydiff.ts | 29 +++++++++++++++++++++++++++++ extensions/git/src/extension.ts | 14 +++++++++++--- extensions/git/src/util.ts | 25 +++++++++++++++++++++++++ extensions/git/tsconfig.json | 13 ++++--------- 4 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 extensions/git/src/dirtydiff.ts create mode 100644 extensions/git/src/util.ts diff --git a/extensions/git/src/dirtydiff.ts b/extensions/git/src/dirtydiff.ts new file mode 100644 index 00000000000..62d4bef1d81 --- /dev/null +++ b/extensions/git/src/dirtydiff.ts @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { Event, TextEditor, window } from 'vscode'; +import { IDisposable, dispose, mapEvent } from './util'; + +type TextEditorsEvent = Event; + +export class DirtyDiffDecorator implements IDisposable { + + private disposables: IDisposable[] = []; + + constructor() { + mapEvent(window.onDidChangeActiveTextEditor, () => window.visibleTextEditors) + (this.onDidVisibleEditorsChange, this, this.disposables); + } + + private onDidVisibleEditorsChange(textEditors: TextEditor[]) { + // TODO + } + + dispose(): void { + this.disposables = dispose(this.disposables); + } +} \ No newline at end of file diff --git a/extensions/git/src/extension.ts b/extensions/git/src/extension.ts index 7abb65c036e..650bb4205af 100644 --- a/extensions/git/src/extension.ts +++ b/extensions/git/src/extension.ts @@ -5,7 +5,15 @@ 'use strict'; -import * as vscode from 'vscode'; +import { ExtensionContext } from 'vscode'; +import { DirtyDiffDecorator } from './dirtydiff'; -export function activate(context: vscode.ExtensionContext) { } -export function deactivate() { } \ No newline at end of file +export function activate(context: ExtensionContext) { + context.subscriptions.push( + new DirtyDiffDecorator() + ); +} + +export function deactivate() { + +} \ No newline at end of file diff --git a/extensions/git/src/util.ts b/extensions/git/src/util.ts new file mode 100644 index 00000000000..d9ca2b75792 --- /dev/null +++ b/extensions/git/src/util.ts @@ -0,0 +1,25 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { Event } from 'vscode'; + +export interface IDisposable { + dispose(): void; +} + +export function dispose(disposables: T[]): T[] { + disposables.forEach(d => d.dispose()); + return []; +} + +export function mapEvent(event: Event, map: (i: I) => O): Event { + return (listener, thisArgs = null, disposables?) => event(i => listener.call(thisArgs, map(i)), null, disposables); +} + +export function filterEvent(event: Event, filter: (e: T) => boolean): Event { + return (listener, thisArgs = null, disposables?) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables); +} \ No newline at end of file diff --git a/extensions/git/tsconfig.json b/extensions/git/tsconfig.json index f72a72f83c7..8cb16334377 100644 --- a/extensions/git/tsconfig.json +++ b/extensions/git/tsconfig.json @@ -1,16 +1,11 @@ { "compilerOptions": { + "noLib": true, + "target": "es5", "module": "commonjs", - "target": "es6", - "outDir": "out", - "lib": [ - "es6" - ], - "sourceMap": true, - "rootDir": "." + "outDir": "./out" }, "exclude": [ - "node_modules", - ".vscode-test" + "node_modules" ] } \ No newline at end of file