Skip to content

Commit ae18cb2

Browse files
authored
Remove language service dependency on TextDocuments (#742)
The code actions API depends on `TextDocuments`. This is specific to the language server. This makes it hard to use without a language server. The use of `TextDocuments` has been removed. Instead, the resolved text document is passed down.
1 parent 33f94ba commit ae18cb2

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

packages/tailwindcss-language-server/src/server.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,6 @@ async function createProjectService(
412412
diagnosticRelatedInformation: true,
413413
itemDefaults,
414414
},
415-
documents: documentService.documents,
416415
getConfiguration,
417416
getDocumentSymbols: (uri: string) => {
418417
return connection.sendRequest('@/tailwindCSS/getDocumentSymbols', { uri })
@@ -1171,7 +1170,7 @@ async function createProjectService(
11711170
if (!document) return null
11721171
let settings = await state.editor.getConfiguration(document.uri)
11731172
if (!settings.tailwindCSS.codeActions) return null
1174-
return doCodeActions(state, params)
1173+
return doCodeActions(state, params, document)
11751174
}, null)
11761175
},
11771176
onDocumentLinks(params: DocumentLinkParams): DocumentLink[] {

packages/tailwindcss-language-service/src/codeActions/codeActionProvider.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@ import { flatten, dedupeBy } from '../util/array'
1717
import { provideCssConflictCodeActions } from './provideCssConflictCodeActions'
1818
import { provideInvalidApplyCodeActions } from './provideInvalidApplyCodeActions'
1919
import { provideSuggestionCodeActions } from './provideSuggestionCodeActions'
20+
import { TextDocument } from 'vscode-languageserver-textdocument'
2021

2122
async function getDiagnosticsFromCodeActionParams(
2223
state: State,
2324
params: CodeActionParams,
25+
document: TextDocument,
2426
only?: DiagnosticKind[]
2527
): Promise<AugmentedDiagnostic[]> {
26-
let document = state.editor.documents.get(params.textDocument.uri)
2728
if (!document) return []
2829
let diagnostics = await doValidate(state, document, only)
2930

@@ -40,14 +41,15 @@ async function getDiagnosticsFromCodeActionParams(
4041
.filter(Boolean)
4142
}
4243

43-
export async function doCodeActions(state: State, params: CodeActionParams): Promise<CodeAction[]> {
44+
export async function doCodeActions(state: State, params: CodeActionParams, document: TextDocument): Promise<CodeAction[]> {
4445
if (!state.enabled) {
4546
return []
4647
}
4748

4849
let diagnostics = await getDiagnosticsFromCodeActionParams(
4950
state,
5051
params,
52+
document,
5153
params.context.diagnostics
5254
.map((diagnostic) => diagnostic.code)
5355
.filter(Boolean) as DiagnosticKind[]
@@ -56,7 +58,7 @@ export async function doCodeActions(state: State, params: CodeActionParams): Pro
5658
return Promise.all(
5759
diagnostics.map((diagnostic) => {
5860
if (isInvalidApplyDiagnostic(diagnostic)) {
59-
return provideInvalidApplyCodeActions(state, params, diagnostic)
61+
return provideInvalidApplyCodeActions(state, document, diagnostic)
6062
}
6163

6264
if (isCssConflictDiagnostic(diagnostic)) {

packages/tailwindcss-language-service/src/codeActions/provideInvalidApplyCodeActions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ import { dset } from 'dset'
1818
import selectorParser from 'postcss-selector-parser'
1919
import { flatten } from '../util/array'
2020
import { getTextWithoutComments } from '../util/doc'
21+
import { TextDocument } from 'vscode-languageserver-textdocument'
2122

2223
export async function provideInvalidApplyCodeActions(
2324
state: State,
24-
params: CodeActionParams,
25+
document: TextDocument,
2526
diagnostic: InvalidApplyDiagnostic
2627
): Promise<CodeAction[]> {
27-
let document = state.editor.documents.get(params.textDocument.uri)
2828
if (!document) return []
2929
let documentText = getTextWithoutComments(document, 'css')
3030
let cssRange: Range
@@ -144,7 +144,7 @@ export async function provideInvalidApplyCodeActions(
144144
diagnostics: [diagnostic],
145145
edit: {
146146
changes: {
147-
[params.textDocument.uri]: changes,
147+
[document.uri]: changes,
148148
},
149149
},
150150
},

packages/tailwindcss-language-service/src/util/state.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ export type ClassNames = {
2020
export type EditorState = {
2121
connection: Connection
2222
folder: string
23-
documents: TextDocuments<TextDocument>
2423
userLanguages: Record<string, string>
2524
capabilities: {
2625
configuration: boolean

0 commit comments

Comments
 (0)