本文整理汇总了TypeScript中vs/editor/common/modes/languageConfigurationRegistry.LanguageConfigurationRegistry.getEnterActionAtPosition方法的典型用法代码示例。如果您正苦于以下问题:TypeScript LanguageConfigurationRegistry.getEnterActionAtPosition方法的具体用法?TypeScript LanguageConfigurationRegistry.getEnterActionAtPosition怎么用?TypeScript LanguageConfigurationRegistry.getEnterActionAtPosition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vs/editor/common/modes/languageConfigurationRegistry.LanguageConfigurationRegistry
的用法示例。
在下文中一共展示了LanguageConfigurationRegistry.getEnterActionAtPosition方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: _enter
private static _enter(config: CursorConfiguration, model: ITokenizedModel, keepPosition: boolean, range: Range): EditOperationResult {
let r = LanguageConfigurationRegistry.getEnterActionAtPosition(model, range.startLineNumber, range.startColumn);
let enterAction = r.enterAction;
let indentation = r.indentation;
let executeCommand: ICommand;
if (enterAction.indentAction === IndentAction.None) {
// Nothing special
executeCommand = TypeOperations.typeCommand(range, '\n' + config.normalizeIndentation(indentation + enterAction.appendText), keepPosition);
} else if (enterAction.indentAction === IndentAction.Indent) {
// Indent once
executeCommand = TypeOperations.typeCommand(range, '\n' + config.normalizeIndentation(indentation + enterAction.appendText), keepPosition);
} else if (enterAction.indentAction === IndentAction.IndentOutdent) {
// Ultra special
let normalIndent = config.normalizeIndentation(indentation);
let increasedIndent = config.normalizeIndentation(indentation + enterAction.appendText);
let typeText = '\n' + increasedIndent + '\n' + normalIndent;
if (keepPosition) {
executeCommand = new ReplaceCommandWithoutChangingPosition(range, typeText);
} else {
executeCommand = new ReplaceCommandWithOffsetCursorState(range, typeText, -1, increasedIndent.length - normalIndent.length);
}
} else if (enterAction.indentAction === IndentAction.Outdent) {
let desiredIndentCount = ShiftCommand.unshiftIndentCount(indentation, indentation.length + 1, config.tabSize);
let actualIndentation = '';
for (let i = 0; i < desiredIndentCount; i++) {
actualIndentation += '\t';
}
executeCommand = TypeOperations.typeCommand(range, '\n' + config.normalizeIndentation(actualIndentation + enterAction.appendText), keepPosition);
}
return new EditOperationResult(executeCommand, {
shouldPushStackElementBefore: true,
shouldPushStackElementAfter: false,
isAutoWhitespaceCommand: true
});
}
示例2: _goodIndentForLine
private static _goodIndentForLine(config: CursorConfiguration, model: ITokenizedModel, lineNumber: number): string {
let lastLineNumber = lineNumber - 1;
for (lastLineNumber = lineNumber - 1; lastLineNumber >= 1; lastLineNumber--) {
let lineText = model.getLineContent(lastLineNumber);
let nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineText);
if (nonWhitespaceIdx >= 0) {
break;
}
}
if (lastLineNumber < 1) {
// No previous line with content found
return '\t';
}
let r = LanguageConfigurationRegistry.getEnterActionAtPosition(model, lastLineNumber, model.getLineMaxColumn(lastLineNumber));
let indentation: string;
if (r.enterAction.indentAction === IndentAction.Outdent) {
let desiredIndentCount = ShiftCommand.unshiftIndentCount(r.indentation, r.indentation.length, config.tabSize);
indentation = '';
for (let i = 0; i < desiredIndentCount; i++) {
indentation += '\t';
}
indentation = config.normalizeIndentation(indentation);
} else {
indentation = r.indentation;
}
let result = indentation + r.enterAction.appendText;
if (result.length === 0) {
// good position is at column 1, but we gotta do something...
return '\t';
}
return result;
}