@@ -118,6 +118,7 @@ import {
118118} from "@server/languages/func/rename/file-renaming"
119119import { IndexingRootKind } from "@server/indexing/indexing"
120120import { FuncIndexingRoot } from "@server/languages/func/indexing-root"
121+ import { formatTolkFile } from "@server/languages/tolk/format/format"
121122
122123/**
123124 * Whenever LS is initialized.
@@ -1021,6 +1022,34 @@ connection.onInitialize(async (initParams: lsp.InitializeParams): Promise<lsp.In
10211022 return [ ...provideTolkWorkspaceSymbols ( ) , ...provideFuncWorkspaceSymbols ( ) ]
10221023 } )
10231024
1025+ connection . onRequest (
1026+ lsp . DocumentFormattingRequest . type ,
1027+ async ( params : lsp . DocumentFormattingParams ) : Promise < lsp . TextEdit [ ] | null > => {
1028+ const uri = params . textDocument . uri
1029+ const settings = await getDocumentSettings ( uri )
1030+
1031+ if ( isTolkFile ( uri ) ) {
1032+ return formatTolkFile ( uri , undefined , settings . tolk . formatter )
1033+ }
1034+
1035+ return null
1036+ } ,
1037+ )
1038+
1039+ connection . onRequest (
1040+ lsp . DocumentRangeFormattingRequest . type ,
1041+ async ( params : lsp . DocumentRangeFormattingParams ) : Promise < lsp . TextEdit [ ] | null > => {
1042+ const uri = params . textDocument . uri
1043+ const settings = await getDocumentSettings ( uri )
1044+
1045+ if ( isTolkFile ( uri ) ) {
1046+ return formatTolkFile ( uri , params . range , settings . tolk . formatter )
1047+ }
1048+
1049+ return null
1050+ } ,
1051+ )
1052+
10241053 // Custom LSP requests
10251054
10261055 connection . onRequest (
@@ -1045,6 +1074,7 @@ connection.onInitialize(async (initParams: lsp.InitializeParams): Promise<lsp.In
10451074 capabilities : {
10461075 textDocumentSync : lsp . TextDocumentSyncKind . Incremental ,
10471076 documentFormattingProvider : true ,
1077+ documentRangeFormattingProvider : true ,
10481078 documentSymbolProvider : true ,
10491079 workspaceSymbolProvider : true ,
10501080 definitionProvider : true ,
0 commit comments