mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
TextEditor.insertSnippet extension API.
More robust type validation on ext side of insertSnippet. Position/range check for snippet insertion was inverted. Adding insertSnippet to vscode.d.ts. (Should it be in vscode.proposed.d.ts?) Adding extension API tests for insertSnippet.
This commit is contained in:
@@ -13,7 +13,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { IThreadService } from 'vs/workbench/services/thread/common/threadService';
|
||||
import { ExtHostDocuments, ExtHostDocumentData } from 'vs/workbench/api/node/extHostDocuments';
|
||||
import { Selection, Range, Position, EndOfLine, TextEditorRevealType, TextEditorSelectionChangeKind, TextEditorLineNumbersStyle } from './extHostTypes';
|
||||
import { ISingleEditOperation, TextEditorCursorStyle } from 'vs/editor/common/editorCommon';
|
||||
import { ISingleEditOperation, TextEditorCursorStyle, IPosition, IRange } from 'vs/editor/common/editorCommon';
|
||||
import { IResolvedTextEditorConfiguration, ISelectionChangeEvent, ITextEditorConfigurationUpdate } from 'vs/workbench/api/node/mainThreadEditorsTracker';
|
||||
import * as TypeConverters from './extHostTypeConverters';
|
||||
import { MainContext, MainThreadEditorsShape, ExtHostEditorsShape, ITextEditorAddData, ITextEditorPositionData } from './extHost.protocol';
|
||||
@@ -621,8 +621,17 @@ class ExtHostTextEditor implements vscode.TextEditor {
|
||||
}
|
||||
|
||||
insertSnippet(template: string, posOrRange: Position | Range) {
|
||||
const convertedPosOrRange = posOrRange instanceof Position ?
|
||||
TypeConverters.fromPosition(posOrRange) : TypeConverters.fromRange(posOrRange);
|
||||
let convertedPosOrRange: IPosition | IRange;
|
||||
|
||||
if (Position.isPosition(posOrRange)) {
|
||||
convertedPosOrRange = TypeConverters.fromPosition(posOrRange);
|
||||
}
|
||||
else if (Range.isRange(posOrRange)) {
|
||||
convertedPosOrRange = TypeConverters.fromRange(posOrRange);
|
||||
}
|
||||
else {
|
||||
return TPromise.wrapError(new Error('Unrecognized value for posOrRange'));
|
||||
}
|
||||
|
||||
return this._proxy.$tryInsertSnippet(this._id, template, convertedPosOrRange);
|
||||
}
|
||||
|
||||
@@ -400,10 +400,10 @@ export class MainThreadTextEditor {
|
||||
this._codeEditor.focus();
|
||||
|
||||
if (range) {
|
||||
snippetController.insertSnippet(template, 0, 0);
|
||||
snippetController.insertSnippetWithReplaceRange(template, range);
|
||||
}
|
||||
else {
|
||||
snippetController.insertSnippetWithReplaceRange(template, range);
|
||||
snippetController.insertSnippet(template, 0, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user