@@ -123,57 +123,87 @@ export default function lspSettings() {
123123 customServers : strings [ "settings-category-custom-servers" ] ,
124124 servers : strings [ "settings-category-servers" ] ,
125125 } ;
126- const servers = serverRegistry . listServers ( ) ;
126+ let page = createPage ( ) ;
127127
128- const sortedServers = servers . sort ( ( a , b ) => {
129- const aEnabled = getServerOverride ( a . id ) . enabled ?? a . enabled ;
130- const bEnabled = getServerOverride ( b . id ) . enabled ?? b . enabled ;
128+ return {
129+ show ( goTo ) {
130+ page = createPage ( ) ;
131+ page . show ( goTo ) ;
132+ } ,
133+ hide ( ) {
134+ page . hide ( ) ;
135+ } ,
136+ search ( key ) {
137+ page = createPage ( ) ;
138+ return page . search ( key ) ;
139+ } ,
140+ restoreList ( ) {
141+ page . restoreList ( ) ;
142+ } ,
143+ setTitle ( nextTitle ) {
144+ page . setTitle ( nextTitle ) ;
145+ } ,
146+ } ;
131147
132- if ( aEnabled !== bEnabled ) {
133- return bEnabled ? 1 : - 1 ;
134- }
135- return a . label . localeCompare ( b . label ) ;
136- } ) ;
148+ function createPage ( ) {
149+ const servers = serverRegistry . listServers ( ) ;
137150
138- const items = [
139- {
140- key : "add_custom_server" ,
141- text : strings [ "lsp-add-custom-server" ] ,
142- info : strings [ "settings-info-lsp-add-custom-server" ] ,
143- category : categories . customServers ,
144- index : 0 ,
145- chevron : true ,
146- } ,
147- ] ;
151+ const sortedServers = servers . sort ( ( a , b ) => {
152+ const aEnabled = getServerOverride ( a . id ) . enabled ?? a . enabled ;
153+ const bEnabled = getServerOverride ( b . id ) . enabled ?? b . enabled ;
148154
149- for ( const server of sortedServers ) {
150- const source = server . launcher ?. install ?. source
151- ? ` • ${ server . launcher . install . source } `
152- : "" ;
153- const languagesList =
154- Array . isArray ( server . languages ) && server . languages . length
155- ? `${ server . languages . join ( ", " ) } ${ source } `
156- : source . slice ( 3 ) ;
155+ if ( aEnabled !== bEnabled ) {
156+ return bEnabled ? 1 : - 1 ;
157+ }
158+ return a . label . localeCompare ( b . label ) ;
159+ } ) ;
160+
161+ const items = [
162+ {
163+ key : "add_custom_server" ,
164+ text : strings [ "lsp-add-custom-server" ] ,
165+ info : strings [ "settings-info-lsp-add-custom-server" ] ,
166+ category : categories . customServers ,
167+ index : 0 ,
168+ chevron : true ,
169+ } ,
170+ ] ;
171+
172+ for ( const server of sortedServers ) {
173+ const source = server . launcher ?. install ?. source
174+ ? ` • ${ server . launcher . install . source } `
175+ : "" ;
176+ const languagesList =
177+ Array . isArray ( server . languages ) && server . languages . length
178+ ? `${ server . languages . join ( ", " ) } ${ source } `
179+ : source . slice ( 3 ) ;
180+
181+ items . push ( {
182+ key : `server:${ server . id } ` ,
183+ text : server . label ,
184+ info : languagesList || undefined ,
185+ category : categories . servers ,
186+ chevron : true ,
187+ } ) ;
188+ }
157189
158190 items . push ( {
159- key : `server:${ server . id } ` ,
160- text : server . label ,
161- info : languagesList || undefined ,
162- category : categories . servers ,
163- chevron : true ,
191+ note : strings [ "settings-note-lsp-settings" ] ,
164192 } ) ;
165- }
166193
167- items . push ( {
168- note : strings [ "settings-note-lsp-settings" ] ,
169- } ) ;
194+ return settingsPage ( title , items , callback , undefined , {
195+ preserveOrder : true ,
196+ pageClassName : "detail-settings-page" ,
197+ listClassName : "detail-settings-list" ,
198+ groupByDefault : true ,
199+ } ) ;
200+ }
170201
171- return settingsPage ( title , items , callback , undefined , {
172- preserveOrder : true ,
173- pageClassName : "detail-settings-page" ,
174- listClassName : "detail-settings-list" ,
175- groupByDefault : true ,
176- } ) ;
202+ function refreshVisiblePage ( ) {
203+ page . hide ( ) ;
204+ page = createPage ( ) ;
205+ page . show ( ) ;
206+ }
177207
178208 async function callback ( key ) {
179209 if ( key === "add_custom_server" ) {
@@ -261,6 +291,7 @@ export default function lspSettings() {
261291 } ) ;
262292
263293 toast ( strings [ "lsp-custom-server-added" ] ) ;
294+ refreshVisiblePage ( ) ;
264295 const detailPage = lspServerDetail ( serverId ) ;
265296 detailPage ?. show ( ) ;
266297 } catch ( error ) {
0 commit comments