Skip to content

Commit 73f046d

Browse files
committed
feat: implemented provideDocumentFormattingEdits
1 parent 1d37f55 commit 73f046d

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/monaco/ls.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,20 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
393393
return moncaoResult;
394394
},
395395
}),
396+
monaco.languages.registerDocumentFormattingEditProvider(lang, {
397+
provideDocumentFormattingEdits: async (model, options) => {
398+
const document = documents.get(model);
399+
if (document) {
400+
const codeResult = await ds.format(
401+
document,
402+
monaco2code.asFormattingOptions(options),
403+
);
404+
if (codeResult) {
405+
return codeResult.map(code2monaco.asTextEdit);
406+
}
407+
}
408+
},
409+
}),
396410
monaco.languages.registerCompletionItemProvider(lang, {
397411
// https://github.com/johnsoncodehk/volar/blob/2f786182250d27e99cc3714fbfc7d209616e2289/packages/vue-language-server/src/registers/registerlanguageFeatures.ts#L57
398412
triggerCharacters: '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ '.split(''),

src/monaco/monaco2code.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,10 @@ export function asTriggerKind(kind: monaco.languages.CompletionTriggerKind): vsc
3333
return vscode.CompletionTriggerKind.TriggerForIncompleteCompletions;
3434
}
3535
}
36+
37+
export function asFormattingOptions(options: monaco.languages.FormattingOptions): vscode.FormattingOptions {
38+
return {
39+
tabSize: options.tabSize,
40+
insertSpaces: options.insertSpaces,
41+
};
42+
}

0 commit comments

Comments
 (0)