diff --git a/extensions/git/src/dirtydiff.ts b/extensions/git/src/dirtydiff.ts new file mode 100644 index 0000000000000000000000000000000000000000..62d4bef1d81be02909fafc7f1ea8af98764b7753 --- /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 7abb65c036eb4d9446f10a37e50c598fd84d0414..650bb4205af62a0e4ce0b76ecc3a8b7dcd293155 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 0000000000000000000000000000000000000000..d9ca2b757927b5817fccb3d4f79a5bbb59bc611d --- /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 f72a72f83c7ce226176296e70537870607acb854..8cb1633437728038691588a558cc8917c812ade2 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