diff --git a/packages/tailwindcss-language-server/src/server.ts b/packages/tailwindcss-language-server/src/server.ts index 6b6877cb8baaeddb2e05bb3c0c94263a4d2be74a..f05c842feb17c67448b4e07269c7d47e020f7343 100644 --- a/packages/tailwindcss-language-server/src/server.ts +++ b/packages/tailwindcss-language-server/src/server.ts @@ -211,33 +211,12 @@ params: InitializeParams, documentService: DocumentService ): Promise { const disposables: Disposable[] = [] - const documentSettingsCache: Map = new Map() - - async function getConfiguration(uri?: string) { - if (documentSettingsCache.has(uri)) { - return documentSettingsCache.get(uri) - } - let [editor, tailwindCSS] = await Promise.all([ - connection.workspace.getConfiguration({ - section: 'editor', - scopeUri: uri, - }), - connection.workspace.getConfiguration({ - section: 'tailwindCSS', - scopeUri: uri, - }), - ]) - let config: Settings = { editor, tailwindCSS } - documentSettingsCache.set(uri, config) - return config - } - const state: State = { enabled: false, editor: { connection, folder, - globalSettings: await getConfiguration(), + globalSettings: params.initializationOptions.configuration as Settings, userLanguages: params.initializationOptions.userLanguages ? params.initializationOptions.userLanguages : {}, @@ -247,17 +226,35 @@ configuration: true, diagnosticRelatedInformation: true, }, documents: documentService.documents, - getConfiguration, + getConfiguration: async (uri?: string) => { + if (documentSettingsCache.has(uri)) { + return documentSettingsCache.get(uri) + } + let [editor, tailwindCSS] = await Promise.all([ + connection.workspace.getConfiguration({ + section: 'editor', + scopeUri: uri, + }), + connection.workspace.getConfiguration({ + section: 'tailwindCSS', + scopeUri: uri, + }), + ]) + let config: Settings = { editor, tailwindCSS } + documentSettingsCache.set(uri, config) + return config + }, getDocumentSymbols: (uri: string) => { return connection.sendRequest('@/tailwindCSS/getDocumentSymbols', { uri }) }, }, } + const documentSettingsCache: Map = new Map() let registrations: Promise let chokidarWatcher: chokidar.FSWatcher - let ignore = state.editor.globalSettings.tailwindCSS.files?.exclude ?? [] + let ignore = state.editor.globalSettings.tailwindCSS.files.exclude function onFileEvents(changes: Array<{ file: string; type: FileChangeType }>): void { let needsInit = false @@ -450,7 +447,7 @@ let [configPath] = ( await glob([`**/${CONFIG_FILE_GLOB}`], { cwd: folder, - ignore: state.editor.globalSettings.tailwindCSS.files?.exclude ?? [], + ignore: state.editor.globalSettings.tailwindCSS.files.exclude, onlyFiles: true, absolute: true, suppressErrors: true, @@ -983,9 +980,9 @@ } }, onUpdateSettings(settings: any): void { documentSettingsCache.clear() - let previousExclude = state.editor.globalSettings.tailwindCSS.files?.exclude ?? [] + let previousExclude = state.editor.globalSettings.tailwindCSS.files.exclude state.editor.globalSettings = settings - if (!equal(previousExclude, settings.tailwindCSS.files?.exclude ?? [])) { + if (!equal(previousExclude, settings.tailwindCSS.files.exclude)) { tryInit() } else { if (state.enabled) { diff --git a/packages/vscode-tailwindcss/src/extension.ts b/packages/vscode-tailwindcss/src/extension.ts index a8bcf9c0479c3b5ef54b9f08ad47b41f2597448a..30cc692554f5d7df0422d7bebe2eee91cf7a009e 100755 --- a/packages/vscode-tailwindcss/src/extension.ts +++ b/packages/vscode-tailwindcss/src/extension.ts @@ -364,6 +364,7 @@ }, }, initializationOptions: { userLanguages: getUserLanguages(folder), + configuration, }, synchronize: { configurationSection: ['editor', 'tailwindCSS'],