提交 bed2db54 编写于 作者: J Johannes Rieken

use getModeAtPostion when computing snippets, #15398

上级 267585d3
......@@ -6,7 +6,7 @@
import { localize } from 'vs/nls';
import * as strings from 'vs/base/common/strings';
import { IReadOnlyModel, IPosition } from 'vs/editor/common/editorCommon';
import { ITokenizedModel, IPosition } from 'vs/editor/common/editorCommon';
import { ISuggestion } from 'vs/editor/common/modes';
import { Registry } from 'vs/platform/platform';
......@@ -29,7 +29,7 @@ export interface ISnippetsRegistry {
/**
* Get all snippet completions for the given position
*/
getSnippetCompletions(model: IReadOnlyModel, position: IPosition): ISuggestion[];
getSnippetCompletions(model: ITokenizedModel, position: IPosition): ISuggestion[];
}
......@@ -69,8 +69,8 @@ class SnippetsRegistry implements ISnippetsRegistry {
}
}
public getSnippetCompletions(model: IReadOnlyModel, position: IPosition): ISuggestion[] {
const modeId = model.getModeId();
public getSnippetCompletions(model: ITokenizedModel, position: IPosition): ISuggestion[] {
const modeId = model.getModeIdAtPosition(position.lineNumber, position.column);
if (!this._snippets[modeId]) {
return;
}
......
......@@ -10,7 +10,7 @@ import { compare } from 'vs/base/common/strings';
import { assign } from 'vs/base/common/objects';
import { onUnexpectedError } from 'vs/base/common/errors';
import { TPromise } from 'vs/base/common/winjs.base';
import { IReadOnlyModel, IPosition } from 'vs/editor/common/editorCommon';
import { IModel, IPosition } from 'vs/editor/common/editorCommon';
import { CommonEditorRegistry } from 'vs/editor/common/editorCommonExtensions';
import { ISuggestResult, ISuggestSupport, ISuggestion, SuggestRegistry } from 'vs/editor/common/modes';
import { ISnippetsRegistry, Extensions } from 'vs/editor/common/modes/snippetsRegistry';
......@@ -42,7 +42,7 @@ export const snippetSuggestSupport: ISuggestSupport = {
triggerCharacters: [],
provideCompletionItems(model: IReadOnlyModel, position: Position): ISuggestResult {
provideCompletionItems(model: IModel, position: Position): ISuggestResult {
const suggestions = Registry.as<ISnippetsRegistry>(Extensions.Snippets).getSnippetCompletions(model, position);
if (suggestions) {
return { suggestions };
......@@ -50,7 +50,7 @@ export const snippetSuggestSupport: ISuggestSupport = {
}
};
export function provideSuggestionItems(model: IReadOnlyModel, position: Position, snippetConfig: SnippetConfig = 'bottom', onlyFrom?: ISuggestSupport[]): TPromise<ISuggestionItem[]> {
export function provideSuggestionItems(model: IModel, position: Position, snippetConfig: SnippetConfig = 'bottom', onlyFrom?: ISuggestSupport[]): TPromise<ISuggestionItem[]> {
const allSuggestions: ISuggestionItem[] = [];
const acceptSuggestion = createSuggesionFilter(snippetConfig);
......@@ -132,7 +132,7 @@ function fixOverwriteBeforeAfter(suggestion: ISuggestion, container: ISuggestRes
}
}
function createSuggestionResolver(provider: ISuggestSupport, suggestion: ISuggestion, model: IReadOnlyModel, position: Position): () => TPromise<void> {
function createSuggestionResolver(provider: ISuggestSupport, suggestion: ISuggestion, model: IModel, position: Position): () => TPromise<void> {
return () => {
if (typeof provider.resolveCompletionItem === 'function') {
return asWinJsPromise(token => provider.resolveCompletionItem(model, position, suggestion, token))
......
......@@ -36,8 +36,11 @@ class ShowSnippetsActions extends EditorAction {
return;
}
const {lineNumber, column} = editor.getPosition();
const modeId = editor.getModel().getModeIdAtPosition(lineNumber, column);
const picks: ISnippetPick[] = [];
Registry.as<ISnippetsRegistry>(Extensions.Snippets).visitSnippets(editor.getModel().getModeId(), snippet => {
Registry.as<ISnippetsRegistry>(Extensions.Snippets).visitSnippets(modeId, snippet => {
picks.push({
label: snippet.prefix,
detail: snippet.description,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册