parse pattern for file watching

This commit is contained in:
Benjamin Pasero
2017-09-15 10:59:20 +02:00
parent 4c26c77894
commit 655527d156

View File

@@ -6,7 +6,7 @@
import Event, { Emitter } from 'vs/base/common/event';
import { Disposable } from './extHostTypes';
import { match } from 'vs/base/common/glob';
import { parse, ParsedPattern } from 'vs/base/common/glob';
import { Uri, FileSystemWatcher as _FileSystemWatcher } from 'vscode';
import { FileSystemEvents, ExtHostFileSystemEventServiceShape } from './extHost.protocol';
@@ -17,6 +17,7 @@ class FileSystemWatcher implements _FileSystemWatcher {
private _onDidDelete = new Emitter<Uri>();
private _disposable: Disposable;
private _config: number;
private _parsedPattern: ParsedPattern;
get ignoreCreateEvents(): boolean {
return Boolean(this._config & 0b001);
@@ -43,24 +44,26 @@ class FileSystemWatcher implements _FileSystemWatcher {
this._config += 0b100;
}
this._parsedPattern = parse(globPattern);
let subscription = dispatcher(events => {
if (!ignoreCreateEvents) {
for (let created of events.created) {
if (match(globPattern, created.fsPath)) {
if (this._parsedPattern(created.fsPath)) {
this._onDidCreate.fire(created);
}
}
}
if (!ignoreChangeEvents) {
for (let changed of events.changed) {
if (match(globPattern, changed.fsPath)) {
if (this._parsedPattern(changed.fsPath)) {
this._onDidChange.fire(changed);
}
}
}
if (!ignoreDeleteEvents) {
for (let deleted of events.deleted) {
if (match(globPattern, deleted.fsPath)) {
if (this._parsedPattern(deleted.fsPath)) {
this._onDidDelete.fire(deleted);
}
}