fix diagnostic styles
Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
@ -10,6 +10,7 @@ import {
|
||||
workspaceFolders,
|
||||
LanguageServerOptions,
|
||||
} from './plugin/lsp'
|
||||
import lspLintExt from './plugin/lint'
|
||||
|
||||
export type { LanguageServerClientOptions } from './client'
|
||||
export { LanguageServerClient } from './client'
|
||||
@ -53,5 +54,9 @@ export function lspPlugin(options: LanguageServerOptions): Extension {
|
||||
}),
|
||||
]
|
||||
|
||||
if (options.diagnosticsFn) {
|
||||
ext.push(lspLintExt(options.diagnosticsFn))
|
||||
}
|
||||
|
||||
return ext
|
||||
}
|
||||
|
||||
10
packages/codemirror-lsp-client/src/plugin/lint.ts
Normal file
10
packages/codemirror-lsp-client/src/plugin/lint.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { Extension } from '@codemirror/state'
|
||||
import { linter, Diagnostic } from '@codemirror/lint'
|
||||
|
||||
export default function lspLintExt(
|
||||
diagnosticsFn: () => Diagnostic[]
|
||||
): Extension {
|
||||
return linter(() => {
|
||||
return diagnosticsFn()
|
||||
})
|
||||
}
|
||||
@ -17,7 +17,6 @@ import type {
|
||||
PluginSpec,
|
||||
ViewPlugin,
|
||||
} from '@codemirror/view'
|
||||
import { setDiagnosticsEffect } from '@codemirror/lint'
|
||||
import { EditorView, Tooltip } from '@codemirror/view'
|
||||
|
||||
import type { PublishDiagnosticsParams } from 'vscode-languageserver-protocol'
|
||||
@ -37,6 +36,7 @@ import lspHoverExt from './hover'
|
||||
import lspFormatExt from './format'
|
||||
import lspIndentExt from './indent'
|
||||
import lspSemanticTokensExt from './semantic-tokens'
|
||||
import { Diagnostic } from '@codemirror/lint'
|
||||
|
||||
const useLast = (values: readonly any[]) => values.reduce((_, v) => v, '')
|
||||
export const docPathFacet = Facet.define<string, string>({
|
||||
@ -65,6 +65,9 @@ export interface LanguageServerOptions {
|
||||
documentUri: string
|
||||
allowHTMLContent: boolean
|
||||
client: LanguageServerClient
|
||||
|
||||
diagnosticsFn?: () => Diagnostic[]
|
||||
|
||||
processLspNotification?: (
|
||||
plugin: LanguageServerPlugin,
|
||||
notification: LSP.NotificationMessage
|
||||
|
||||
@ -17,6 +17,7 @@ import { kclPlugin } from '.'
|
||||
import type * as LSP from 'vscode-languageserver-protocol'
|
||||
// @ts-ignore: No types available
|
||||
import { parser } from './kcl.grammar'
|
||||
import { kclManager } from 'lib/singletons'
|
||||
|
||||
export interface LanguageOptions {
|
||||
workspaceFolders: LSP.WorkspaceFolder[]
|
||||
@ -62,6 +63,9 @@ export function kcl(options: LanguageOptions) {
|
||||
allowHTMLContent: true,
|
||||
client: options.client,
|
||||
processLspNotification: options.processLspNotification,
|
||||
diagnosticsFn: () => {
|
||||
return kclManager.getDiagnostics()
|
||||
},
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
@ -91,12 +91,19 @@ export class KclManager {
|
||||
set kclErrors(kclErrors) {
|
||||
if (kclErrors === this._kclErrors && this.lints.length === 0) return
|
||||
this._kclErrors = kclErrors
|
||||
let diagnostics = kclErrorsToDiagnostics(kclErrors)
|
||||
let diagnostics = this.getDiagnostics()
|
||||
editorManager.setDiagnostics(diagnostics)
|
||||
this._kclErrorsCallBack(kclErrors)
|
||||
}
|
||||
|
||||
getDiagnostics(): Diagnostic[] {
|
||||
if (this.kclErrors.length === 0 && this.lints.length === 0) return []
|
||||
let diagnostics = kclErrorsToDiagnostics(this.kclErrors)
|
||||
if (this.lints.length > 0) {
|
||||
diagnostics = diagnostics.concat(this.lints)
|
||||
}
|
||||
editorManager.setDiagnostics(diagnostics)
|
||||
this._kclErrorsCallBack(kclErrors)
|
||||
|
||||
return diagnostics
|
||||
}
|
||||
|
||||
addKclErrors(kclErrors: KCLError[]) {
|
||||
|
||||
Reference in New Issue
Block a user