Skip to content

Commit 4527fd7

Browse files
committed
Nested langauge issue.
1 parent 9ece2f5 commit 4527fd7

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/vs/editor/common/modes/languageConfigurationRegistry.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,9 +451,21 @@ export class LanguageConfigurationRegistryImpl {
451451
}
452452

453453
public getIndentForEnter(model: ITokenizedModel, range: Range, indentConverter: any): { beforeEnter: string, afterEnter: string } {
454-
let scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);
454+
model.forceTokenization(range.startLineNumber);
455+
let lineTokens = model.getLineTokens(range.startLineNumber);
456+
457+
let beforeEnterText;
458+
let tokenIndexUnderCursor = lineTokens.findTokenIndexAtOffset(range.startColumn);
459+
let tokenIndexAtBeginning = lineTokens.findTokenIndexAtOffset(0);
460+
let scopedLineTokens = createScopedLineTokens(lineTokens, range.startColumn);
455461
let scopedLineText = scopedLineTokens.getLineContent();
456-
let beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);
462+
463+
if (lineTokens.getLanguageId(tokenIndexAtBeginning) === lineTokens.getLanguageId(tokenIndexUnderCursor)) {
464+
beforeEnterText = lineTokens.getLineContent().substring(0, range.startColumn);
465+
} else {
466+
beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);
467+
}
468+
457469
let afterEnterText;
458470

459471
if (range.isEmpty()) {

0 commit comments

Comments
 (0)