Skip to content

Commit

Permalink
add a new config to enable word-based suggestions, fixes #5574
Browse files Browse the repository at this point in the history
  • Loading branch information
jrieken authored and sandy081 committed May 18, 2016
1 parent 08d41ce commit b81d690
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 5 deletions.
6 changes: 4 additions & 2 deletions src/vs/editor/common/modes/abstractMode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {IDisposable} from 'vs/base/common/lifecycle';
import {TPromise} from 'vs/base/common/winjs.base';
import {AsyncDescriptor1, createAsyncDescriptor1} from 'vs/platform/instantiation/common/descriptors';
import {IInstantiationService, optional} from 'vs/platform/instantiation/common/instantiation';
import {IConfigurationService} from 'vs/platform/configuration/common/configuration';
import {IModeSupportChangedEvent} from 'vs/editor/common/editorCommon';
import * as modes from 'vs/editor/common/modes';
import {NullMode} from 'vs/editor/common/modes/nullMode';
Expand Down Expand Up @@ -251,13 +252,14 @@ export class FrankensteinMode extends AbstractMode {
public suggestSupport:modes.ISuggestSupport;

constructor(
descriptor:modes.IModeDescriptor,
descriptor: modes.IModeDescriptor,
@IConfigurationService configurationService: IConfigurationService,
@optional(IEditorWorkerService) editorWorkerService: IEditorWorkerService
) {
super(descriptor.id);

if (editorWorkerService) {
this.suggestSupport = new TextualSuggestSupport(this.getId(), editorWorkerService);
this.suggestSupport = new TextualSuggestSupport(this.getId(), editorWorkerService, configurationService);
}
}
}
Expand Down
26 changes: 24 additions & 2 deletions src/vs/editor/common/modes/supports/suggestSupport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ import {IFilter, matchesStrictPrefix, fuzzyContiguousFilter} from 'vs/base/commo
import {handleEvent, isLineToken} from 'vs/editor/common/modes/supports';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {IModelService} from 'vs/editor/common/services/modelService';
import {IConfigurationService} from 'vs/platform/configuration/common/configuration';
import {IConfigurationRegistry, Extensions} from 'vs/platform/configuration/common/configurationRegistry';
import {Registry} from 'vs/platform/platform';
import {localize} from 'vs/nls';

export interface ISuggestContribution {
triggerCharacters: string[];
Expand Down Expand Up @@ -67,16 +71,34 @@ export class SuggestSupport implements ISuggestSupport {

export class TextualSuggestSupport implements ISuggestSupport {

/* tslint:disable */
private static _c = Registry.as<IConfigurationRegistry>(Extensions.Configuration).registerConfiguration({
type: 'object',
properties: {
'editor.wordBasedSuggestions': {
'type': 'boolean',
'description': localize('editor.wordBasedSuggestions', "Enable word based suggestions."),
'default': true
}
}
});
/* tslint:enable */

private _modeId: string;
private _editorWorkerService: IEditorWorkerService;
private _configurationService: IConfigurationService;

constructor(modeId: string, editorWorkerService: IEditorWorkerService) {
constructor(modeId: string, editorWorkerService: IEditorWorkerService, configurationService: IConfigurationService) {
this._modeId = modeId;
this._editorWorkerService = editorWorkerService;
this._configurationService = configurationService;
}

public suggest(resource: URI, position: IPosition, triggerCharacter?: string): TPromise<ISuggestResult[]> {
return this._editorWorkerService.textualSuggest(resource, position);
let config = this._configurationService.getConfiguration<{ wordBasedSuggestions: boolean }>('editor');
return (!config || config.wordBasedSuggestions)
? this._editorWorkerService.textualSuggest(resource, position)
: TPromise.as([]);
}

public get filter(): IFilter {
Expand Down
4 changes: 3 additions & 1 deletion src/vs/languages/php/common/php.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {RichEditSupport} from 'vs/editor/common/modes/supports/richEditSupport';
import {TokenizationSupport, ILeavingNestedModeData, ITokenizationCustomization} from 'vs/editor/common/modes/supports/tokenizationSupport';
import {TextualSuggestSupport} from 'vs/editor/common/modes/supports/suggestSupport';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {IConfigurationService} from 'vs/platform/configuration/common/configuration';


var brackets = (function() {
Expand Down Expand Up @@ -460,6 +461,7 @@ export class PHPMode extends AbstractMode implements ITokenizationCustomization
constructor(
descriptor:Modes.IModeDescriptor,
@IModeService modeService: IModeService,
@IConfigurationService configurationService: IConfigurationService,
@IEditorWorkerService editorWorkerService: IEditorWorkerService
) {
super(descriptor.id);
Expand Down Expand Up @@ -493,7 +495,7 @@ export class PHPMode extends AbstractMode implements ITokenizationCustomization
});

if (editorWorkerService) {
this.suggestSupport = new TextualSuggestSupport(this.getId(), editorWorkerService);
this.suggestSupport = new TextualSuggestSupport(this.getId(), editorWorkerService, configurationService);
}
}

Expand Down
1 change: 1 addition & 0 deletions src/vs/languages/php/test/common/php.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ suite('Syntax Highlighting - PHP', () => {
let mode = new PHPMode(
{ id: 'php' },
modeService,
null,
null
);

Expand Down

0 comments on commit b81d690

Please sign in to comment.