提交 de04973a 编写于 作者: A Alex Dima

Clean up AbstractModeWorker around ValidationHelper

上级 cc45c4ef
......@@ -8,7 +8,6 @@ import URI from 'vs/base/common/uri';
import {IMarkerService} from 'vs/platform/markers/common/markers';
import {IResourceService} from 'vs/editor/common/services/resourceService';
import {ValidationHelper} from 'vs/editor/common/worker/validationHelper';
import EditorCommon = require('vs/editor/common/editorCommon');
import Modes = require('vs/editor/common/modes');
import {TPromise} from 'vs/base/common/winjs.base';
......@@ -23,8 +22,12 @@ export class AbstractModeWorker {
_validationHelper: ValidationHelper;
constructor(mode: Modes.IMode, participants: Modes.IWorkerParticipant[], @IResourceService resourceService: IResourceService,
@IMarkerService markerService: IMarkerService) {
constructor(
mode: Modes.IMode,
participants: Modes.IWorkerParticipant[],
@IResourceService resourceService: IResourceService,
@IMarkerService markerService: IMarkerService
) {
this._mode = mode;
this._participants = participants;
......@@ -33,8 +36,8 @@ export class AbstractModeWorker {
this._validationHelper = new ValidationHelper(
this.resourceService,
(changed, notChanged, dueToConfigurationChange) => this._newValidate(changed, notChanged, dueToConfigurationChange),
(resource) => this._shouldIncludeModelInValidation(resource),
(toValidate) => this.doValidateOnChange(toValidate),
(resource) => (resource.getMode().getId() === this._mode.getId()),
500
);
}
......@@ -43,41 +46,16 @@ export class AbstractModeWorker {
return this._mode;
}
_getWorkerParticipants<T extends Modes.IWorkerParticipant>(select:(p:Modes.IWorkerParticipant)=>boolean):T[] {
return <T[]> this._participants.filter(select);
}
// ---- validation -----------------------------------------
_shouldIncludeModelInValidation(resource:EditorCommon.IMirrorModel): boolean {
return resource.getMode().getId() === this._mode.getId();
}
public enableValidator(): TPromise<void> {
this._validationHelper.enable();
return TPromise.as(null);
}
private _newValidate(changed:URI[], notChanged:URI[], dueToConfigurationChange:boolean): void {
this.doValidateOnChange(changed, notChanged, dueToConfigurationChange);
}
public _getContextForValidationParticipants(resource:URI):any {
return null;
}
public doValidateOnChange(changed:URI[], notChanged:URI[], dueToConfigurationChange:boolean): void {
if (dueToConfigurationChange) {
for (var i = 0; i < changed.length; i++) {
this.doValidate(changed[i]);
}
for (var i = 0; i < notChanged.length; i++) {
this.doValidate(notChanged[i]);
}
} else {
for (var i = 0; i < changed.length; i++) {
this.doValidate(changed[i]);
}
private doValidateOnChange(toValidate:URI[]): void {
for (var i = 0; i < toValidate.length; i++) {
this.doValidate(toValidate[i]);
}
}
......
......@@ -16,7 +16,7 @@ export interface IValidationHelperFilter {
}
export interface IValidationHelperCallback {
(changed:URI[], notChanged:URI[], isDueToConfigurationChange:boolean): void;
(toValidate:URI[]): void;
}
class ValidationModel implements IDisposable {
......@@ -179,7 +179,13 @@ export class ValidationHelper implements IDisposable {
var isDueToConfigurationChange = this._isDueToConfigurationChange;
this._isDueToConfigurationChange = false;
this._callback(dirtyModels, cleanModels, isDueToConfigurationChange);
let toValidate: URI[] = dirtyModels;
if (isDueToConfigurationChange) {
toValidate = toValidate.concat(cleanModels);
}
this._callback(toValidate);
}
public enable(): void {
......
......@@ -172,12 +172,6 @@ export class TypeScriptWorker2 extends AbstractModeWorker {
return fileNames && fileNames.map(URI.parse);
}
public _getContextForValidationParticipants(resource: URI): any {
// var project = this._findProject(resource);
// return project.languageService.getSourceFile(resource.toString());
return null;
}
public suggest(resource:URI, position:EditorCommon.IPosition):winjs.TPromise<Modes.ISuggestResult[]> {
return this.doSuggest(resource, position).then(value => filterSuggestions(value));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册