()
| 197 | }; |
| 198 | |
| 199 | function createPage() { |
| 200 | const servers = serverRegistry.listServers(); |
| 201 | |
| 202 | const sortedServers = servers.sort((a, b) => { |
| 203 | const aEnabled = getServerOverride(a.id).enabled ?? a.enabled; |
| 204 | const bEnabled = getServerOverride(b.id).enabled ?? b.enabled; |
| 205 | |
| 206 | if (aEnabled !== bEnabled) { |
| 207 | return bEnabled ? 1 : -1; |
| 208 | } |
| 209 | return a.label.localeCompare(b.label); |
| 210 | }); |
| 211 | |
| 212 | const items = [ |
| 213 | { |
| 214 | key: "allow_non_terminal_workspace", |
| 215 | text: strings["lsp-allow-non-terminal-workspace"], |
| 216 | checkbox: appSettings.value.lsp?.allowNonTerminalWorkspace === true, |
| 217 | info: strings["settings-info-lsp-allow-non-terminal-workspace"], |
| 218 | category: categories.behavior, |
| 219 | }, |
| 220 | { |
| 221 | key: "add_custom_server", |
| 222 | text: strings["lsp-add-custom-server"], |
| 223 | info: strings["settings-info-lsp-add-custom-server"], |
| 224 | category: categories.customServers, |
| 225 | index: 0, |
| 226 | chevron: true, |
| 227 | }, |
| 228 | ]; |
| 229 | |
| 230 | for (const server of sortedServers) { |
| 231 | const source = server.launcher?.install?.source |
| 232 | ? ` • ${server.launcher.install.source}` |
| 233 | : ""; |
| 234 | const languagesList = |
| 235 | Array.isArray(server.languages) && server.languages.length |
| 236 | ? `${server.languages.join(", ")}${source}` |
| 237 | : source.slice(3); |
| 238 | |
| 239 | items.push({ |
| 240 | key: `server:${server.id}`, |
| 241 | text: server.label, |
| 242 | info: languagesList || undefined, |
| 243 | category: categories.servers, |
| 244 | chevron: true, |
| 245 | }); |
| 246 | } |
| 247 | |
| 248 | items.push({ |
| 249 | note: strings["settings-note-lsp-settings"], |
| 250 | }); |
| 251 | |
| 252 | return settingsPage(title, items, callback, undefined, { |
| 253 | preserveOrder: true, |
| 254 | pageClassName: "detail-settings-page", |
| 255 | listClassName: "detail-settings-list", |
| 256 | groupByDefault: true, |
no test coverage detected