提交 2b5b63b0 编写于 作者: J Johannes Rieken

add ISuggestion#snippetType, #3210

上级 e04179d6
......@@ -397,7 +397,8 @@ class SuggestAdapter {
detail: item.detail,
documentation: item.documentation,
sortText: item.sortText,
filterText: item.filterText
filterText: item.filterText,
snippetType: 'internal'
};
}
......
......@@ -169,6 +169,8 @@ export type SuggestionType = 'method'
| 'reference'
| 'customcolor';
export type SnippetType = 'internal' | 'textmate';
/**
* @internal
*/
......@@ -185,7 +187,7 @@ export interface ISuggestion {
overwriteAfter?: number;
additionalTextEdits?: editorCommon.ISingleEditOperation[];
command?: Command;
isTMSnippet?: boolean;
snippetType?: SnippetType;
_extensionId?: string;
}
......
......@@ -107,7 +107,7 @@ class SnippetsRegistry implements ISnippetsRegistry {
documentation: s.description,
insertText: s.codeSnippet,
noAutoAccept: true,
isTMSnippet: true,
snippetType: 'textmate',
overwriteBefore
});
......
......@@ -43,6 +43,12 @@ export class CodeSnippet implements ICodeSnippet {
return snippet;
}
static plain(template: string): CodeSnippet {
const snippet = new CodeSnippet();
snippet.lines = template.split(/\r\n|\n|\r/);
return snippet;
}
static fromEmmet(template: string): CodeSnippet {
return EmmetSnippetParser.parse(template);
}
......
......@@ -76,6 +76,16 @@ export class SuggestController implements IEditorContribution {
}
}
private static _codeSnippetForSuggestion({suggestion}: ICompletionItem): CodeSnippet {
if (suggestion.snippetType === 'textmate') {
return CodeSnippet.fromTextmate(suggestion.insertText);
} else if (suggestion.snippetType === 'internal') {
return CodeSnippet.fromInternal(suggestion.insertText);
} else {
return CodeSnippet.plain(suggestion.insertText);
}
}
private onDidSelectItem(item: ICompletionItem): void {
if (item) {
const {suggestion, position} = item;
......@@ -87,9 +97,7 @@ export class SuggestController implements IEditorContribution {
this.editor.pushUndoStop();
}
const snippet = suggestion.isTMSnippet
? CodeSnippet.fromTextmate(suggestion.insertText)
: CodeSnippet.fromInternal(suggestion.insertText);
const snippet = SuggestController._codeSnippetForSuggestion(item);
SnippetController.get(this.editor).run(
snippet,
......
......@@ -4334,6 +4334,8 @@ declare module monaco.languages {
provideHover(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Hover | Thenable<Hover>;
}
export type SnippetType = 'internal' | 'textmate';
/**
* Interface used to quick fix typing errors while accesing member fields.
*/
......
......@@ -479,9 +479,8 @@ class SuggestAdapter {
suggestion.overwriteAfter = 0;
}
if (this._extensionId) {
suggestion._extensionId = this._extensionId;
}
suggestion._extensionId = this._extensionId;
suggestion.snippetType = 'internal';
// store suggestion
result.suggestions.push(suggestion);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册