tailwind-ctp-intellisense/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts

75 lines
2.7 KiB
TypeScript
Raw Normal View History

import type { TextDocument } from 'vscode-languageserver'
import { State } from '../util/state'
import { getDocumentSettings } from '../util/getDocumentSettings'
2020-06-19 10:52:38 +00:00
import { DiagnosticKind, AugmentedDiagnostic } from './types'
2020-06-23 11:22:31 +00:00
import { getCssConflictDiagnostics } from './getCssConflictDiagnostics'
2020-06-19 10:52:38 +00:00
import { getInvalidApplyDiagnostics } from './getInvalidApplyDiagnostics'
import { getInvalidScreenDiagnostics } from './getInvalidScreenDiagnostics'
import { getInvalidVariantDiagnostics } from './getInvalidVariantDiagnostics'
import { getInvalidConfigPathDiagnostics } from './getInvalidConfigPathDiagnostics'
import { getInvalidTailwindDirectiveDiagnostics } from './getInvalidTailwindDirectiveDiagnostics'
export async function doValidate(
2020-05-09 21:11:35 +00:00
state: State,
2020-06-18 09:54:01 +00:00
document: TextDocument,
only: DiagnosticKind[] = [
2020-06-23 11:22:31 +00:00
DiagnosticKind.CssConflict,
2020-06-18 09:54:01 +00:00
DiagnosticKind.InvalidApply,
DiagnosticKind.InvalidScreen,
DiagnosticKind.InvalidVariant,
DiagnosticKind.InvalidConfigPath,
DiagnosticKind.InvalidTailwindDirective,
]
): Promise<AugmentedDiagnostic[]> {
const settings = await getDocumentSettings(state, document)
2020-06-18 09:54:01 +00:00
return settings.validate
? [
2020-06-23 11:22:31 +00:00
...(only.includes(DiagnosticKind.CssConflict)
? await getCssConflictDiagnostics(state, document, settings)
2020-06-18 09:54:01 +00:00
: []),
...(only.includes(DiagnosticKind.InvalidApply)
? await getInvalidApplyDiagnostics(state, document, settings)
2020-06-18 09:54:01 +00:00
: []),
...(only.includes(DiagnosticKind.InvalidScreen)
? getInvalidScreenDiagnostics(state, document, settings)
: []),
...(only.includes(DiagnosticKind.InvalidVariant)
? getInvalidVariantDiagnostics(state, document, settings)
: []),
...(only.includes(DiagnosticKind.InvalidConfigPath)
? getInvalidConfigPathDiagnostics(state, document, settings)
: []),
...(only.includes(DiagnosticKind.InvalidTailwindDirective)
? getInvalidTailwindDirectiveDiagnostics(state, document, settings)
: []),
]
: []
2020-06-18 09:54:01 +00:00
}
2020-06-18 09:54:01 +00:00
export async function provideDiagnostics(state: State, document: TextDocument) {
state.editor.connection.sendDiagnostics({
uri: document.uri,
diagnostics: await doValidate(state, document),
})
2020-05-09 21:11:35 +00:00
}
export function clearDiagnostics(state: State, document: TextDocument): void {
state.editor.connection.sendDiagnostics({
uri: document.uri,
diagnostics: [],
})
}
export function clearAllDiagnostics(state: State): void {
state.editor.documents.all().forEach((document) => {
clearDiagnostics(state, document)
})
}
export function updateAllDiagnostics(state: State): void {
state.editor.documents.all().forEach((document) => {
provideDiagnostics(state, document)
})
}