tailwind-ctp-intellisense @master -
refs -
log -
-
https://git.jolheiser.com/tailwind-ctp-intellisense.git
Fix language server initialisation outside of VS Code (#803)
* Remove buggy await call
This is to resolve issue https://github.com/tailwindlabs/tailwindcss-intellisense/issues/802
* Fix unhandled method errors
---------
Co-authored-by: Brad Cornes <hello@bradley.dev>
Signature
-----BEGIN PGP SIGNATURE-----
wsBcBAABCAAQBQJk5JtNCRBK7hj4Ov3rIwAATYMIAHxHYaMDdKjyPSOuLFX7OP8F
WxRrzzayGhX2Hf+3/O7BF1AWH9FErRVSNOq0DDQ0NgZqmViKEC3O/4IB+/RaefqO
j8OX+RNWrTI0y1Zr2bErEA2UoNay+dmOnPu5nG5sfepOakO0SHEdRuSXMVsoBrcr
pC9YYttjg3ofQmg+sNQ8EKUhyGDIY0xanb1UdKQHyBTy4EnU7+Ibnn8Pu0GU7jCD
uCyIOpqjzckmrEvznJyM1z9YTMqNSqX+qocK7YCJanFhvE47CfRm7jI+YCkloIcH
mf+9V59nEb6qu0hQi74Ff1oGGJQQtxZmTFA0I8i3LtqNGzHmsQ/aZ3ymcHR/TYQ=
=R39b
-----END PGP SIGNATURE-----
diff --git a/packages/tailwindcss-language-server/src/server.ts b/packages/tailwindcss-language-server/src/server.ts
index c4a844d6c208c7dc4024607299163765f5300ef3..24a191e8c652296f238d4fd9413f05f12233e8d1 100644
--- a/packages/tailwindcss-language-server/src/server.ts
+++ b/packages/tailwindcss-language-server/src/server.ts
@@ -1611,7 +1611,7 @@ }))
}
class TW {
- private initialized = false
+ private initPromise: Promise<void>
private lspHandlersAdded = false
private workspaces: Map<string, { name: string; workspaceFsPath: string }>
private projects: Map<string, ProjectService>
@@ -1631,11 +1631,14 @@ this.projectCounter = 0
}
async init(): Promise<void> {
- if (this.initialized) return
+ if (!this.initPromise) {
+ this.initPromise = this._init()
+ }
+ await this.initPromise
+ }
+ private async _init(): Promise<void> {
clearRequireCache()
-
- this.initialized = true
let base: string
if (this.initializeParams.rootUri) {
@@ -2131,7 +2134,7 @@ }
}
}
- private setupLSPHandlers() {
+ setupLSPHandlers() {
if (this.lspHandlersAdded) {
return
}
@@ -2147,6 +2150,10 @@ this.connection.onDocumentLinks(this.onDocumentLinks.bind(this))
}
private updateCapabilities() {
+ if (!supportsDynamicRegistration(this.initializeParams)) {
+ return
+ }
+
if (this.registrations) {
this.registrations.then((r) => r.dispose())
}
@@ -2221,30 +2228,37 @@ return fallbackProject
}
async onDocumentColor(params: DocumentColorParams): Promise<ColorInformation[]> {
+ await this.init()
return this.getProject(params.textDocument)?.onDocumentColor(params) ?? []
}
async onColorPresentation(params: ColorPresentationParams): Promise<ColorPresentation[]> {
+ await this.init()
return this.getProject(params.textDocument)?.onColorPresentation(params) ?? []
}
async onHover(params: TextDocumentPositionParams): Promise<Hover> {
+ await this.init()
return this.getProject(params.textDocument)?.onHover(params) ?? null
}
async onCompletion(params: CompletionParams): Promise<CompletionList> {
+ await this.init()
return this.getProject(params.textDocument)?.onCompletion(params) ?? null
}
async onCompletionResolve(item: CompletionItem): Promise<CompletionItem> {
+ await this.init()
return this.projects.get(item.data?._projectKey)?.onCompletionResolve(item) ?? null
}
- onCodeAction(params: CodeActionParams): Promise<CodeAction[]> {
+ async onCodeAction(params: CodeActionParams): Promise<CodeAction[]> {
+ await this.init()
return this.getProject(params.textDocument)?.onCodeAction(params) ?? null
}
- onDocumentLinks(params: DocumentLinkParams): DocumentLink[] {
+ async onDocumentLinks(params: DocumentLinkParams): Promise<DocumentLink[]> {
+ await this.init()
return this.getProject(params.textDocument)?.onDocumentLinks(params) ?? null
}
@@ -2274,7 +2288,7 @@
restart(): void {
console.log('----------\nRESTARTING\n----------')
this.dispose()
- this.initialized = false
+ this.initPromise = undefined
this.init()
}
}
@@ -2306,9 +2320,8 @@ return this.documents.onDidOpen
}
}
-function supportsDynamicRegistration(connection: Connection, params: InitializeParams): boolean {
+function supportsDynamicRegistration(params: InitializeParams): boolean {
return (
- connection.onInitialized &&
params.capabilities.textDocument.hover?.dynamicRegistration &&
params.capabilities.textDocument.colorProvider?.dynamicRegistration &&
params.capabilities.textDocument.codeAction?.dynamicRegistration &&
@@ -2322,7 +2335,7 @@
connection.onInitialize(async (params: InitializeParams): Promise<InitializeResult> => {
tw.initializeParams = params
- if (supportsDynamicRegistration(connection, params)) {
+ if (supportsDynamicRegistration(params)) {
return {
capabilities: {
textDocumentSync: TextDocumentSyncKind.Full,
@@ -2330,7 +2343,7 @@ },
}
}
- await tw.init()
+ tw.setupLSPHandlers()
return {
capabilities: {