@@ -18,6 +18,7 @@ import NotificationManager from "lib/notificationManager";
1818import Uri from "utils/Uri" ;
1919import { clearDiagnosticsEffect } from "./diagnostics" ;
2020import { documentHighlightsExtension } from "./documentHighlights" ;
21+ import { supportsBuiltinFormatting } from "./formattingSupport" ;
2122import { inlayHintsExtension } from "./inlayHints" ;
2223import { acodeRenameKeymap } from "./rename" ;
2324import { ensureServerRunning } from "./serverLauncher" ;
@@ -60,13 +61,6 @@ function safeString(value: unknown): string {
6061 return value != null ? String ( value ) : "" ;
6162}
6263
63- const defaultKeymaps = keymap . of ( [
64- ...formatKeymap ,
65- ...acodeRenameKeymap ,
66- ...jumpToDefinitionKeymap ,
67- ...findReferencesKeymap ,
68- ] ) ;
69-
7064interface BuiltinExtensionsResult {
7165 extensions : Extension [ ] ;
7266 diagnosticsExtension : Extension | LSPClientExtension | null ;
@@ -83,14 +77,25 @@ function buildBuiltinExtensions(
8377 diagnostics : includeDiagnostics = true ,
8478 inlayHints : includeInlayHints = true ,
8579 documentHighlights : includeDocumentHighlights = true ,
80+ formatting : includeFormatting = true ,
8681 } = config ;
8782
8883 const extensions : Extension [ ] = [ ] ;
8984 let diagnosticsExtension : Extension | LSPClientExtension | null = null ;
9085
9186 if ( includeCompletion ) extensions . push ( serverCompletion ( ) ) ;
9287 if ( includeHover ) extensions . push ( hoverTooltips ( ) ) ;
93- if ( includeKeymaps ) extensions . push ( defaultKeymaps ) ;
88+ if ( includeKeymaps ) {
89+ const bindings = [
90+ ...( includeFormatting ? formatKeymap : [ ] ) ,
91+ ...acodeRenameKeymap ,
92+ ...jumpToDefinitionKeymap ,
93+ ...findReferencesKeymap ,
94+ ] ;
95+ if ( bindings . length ) {
96+ extensions . push ( keymap . of ( bindings ) ) ;
97+ }
98+ }
9499 if ( includeSignature ) extensions . push ( signatureHelp ( ) ) ;
95100 if ( includeDiagnostics ) {
96101 const diagExt = serverDiagnostics ( ) ;
@@ -263,6 +268,7 @@ export class LspClientManager {
263268 if ( ! servers . length ) return false ;
264269
265270 for ( const server of servers ) {
271+ if ( ! supportsBuiltinFormatting ( server ) ) continue ;
266272 try {
267273 const context : RootUriContext = {
268274 uri : normalizedUri ,
@@ -437,6 +443,7 @@ export class LspClientManager {
437443 diagnostics : builtinConfig . diagnostics !== false ,
438444 inlayHints : builtinConfig . inlayHints !== false ,
439445 documentHighlights : builtinConfig . documentHighlights !== false ,
446+ formatting : builtinConfig . formatting !== false ,
440447 } )
441448 : { extensions : [ ] , diagnosticsExtension : null } ;
442449
0 commit comments