Skip to content

Commit 2037d73

Browse files
committed
feat: implemented provideSelectionRanges
1 parent 8e437f0 commit 2037d73

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/monaco/code2monaco.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,3 +436,9 @@ export function asFoldingRange(item: vscode.FoldingRange): monaco.languages.Fold
436436
},
437437
};
438438
}
439+
440+
export function asSelectionRange(item: vscode.SelectionRange): monaco.languages.SelectionRange {
441+
return {
442+
range: asRange(item.range),
443+
};
444+
}

src/monaco/ls.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,18 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
532532
}
533533
},
534534
}),
535+
monaco.languages.registerSelectionRangeProvider(lang, {
536+
provideSelectionRanges: async (model, positions) => {
537+
const document = getTextDocument(model);
538+
if (document) {
539+
const codeResults = await Promise.all(positions.map(position => ds.getSelectionRanges(
540+
document,
541+
[monaco2code.asPosition(position)],
542+
)));
543+
return codeResults.map(codeResult => codeResult?.map(code2monaco.asSelectionRange) ?? []);
544+
}
545+
},
546+
}),
535547
);
536548

537549
return ls;

0 commit comments

Comments
 (0)