* add package.json Signed-off-by: Jess Frazelle <github@jessfraz.com> initial run; Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> more fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> clientsidescne Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> paths Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix styles Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> combine Signed-off-by: Jess Frazelle <github@jessfraz.com> eslint rule Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> my ocd Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> constants file Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> no more import sceneInfra Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> try fix circular import Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { foldService } from '@codemirror/language'
|
|
import type { EditorState, Extension } from '@codemirror/state'
|
|
import { ViewPlugin } from '@codemirror/view'
|
|
|
|
import type { LanguageServerOptions } from './plugin/lsp'
|
|
import {
|
|
LanguageServerPlugin,
|
|
LanguageServerPluginSpec,
|
|
docPathFacet,
|
|
languageId,
|
|
workspaceFolders,
|
|
} from './plugin/lsp'
|
|
|
|
export { LanguageServerClient } from './client'
|
|
export type { LanguageServerClientOptions } from './client'
|
|
export { FromServer, IntoServer, LspWorkerEventType } from './client/codec'
|
|
export { Codec } from './client/codec/utils'
|
|
export {
|
|
lspDiagnosticsEvent,
|
|
lspFormatCodeEvent,
|
|
lspSemanticTokensEvent,
|
|
} from './plugin/annotation'
|
|
export {
|
|
LanguageServerPlugin,
|
|
LanguageServerPluginSpec,
|
|
docPathFacet,
|
|
languageId,
|
|
workspaceFolders,
|
|
} from './plugin/lsp'
|
|
export type { LanguageServerOptions } from './plugin/lsp'
|
|
export { offsetToPos, posToOffset } from './plugin/util'
|
|
|
|
export function lspPlugin(options: LanguageServerOptions): Extension {
|
|
let plugin: LanguageServerPlugin | null = null
|
|
const viewPlugin = ViewPlugin.define(
|
|
(view) => (plugin = new LanguageServerPlugin(options, view)),
|
|
new LanguageServerPluginSpec()
|
|
)
|
|
|
|
let ext = [
|
|
docPathFacet.of(options.documentUri),
|
|
languageId.of('kcl'),
|
|
workspaceFolders.of(options.workspaceFolders),
|
|
viewPlugin,
|
|
foldService.of((state: EditorState, lineStart: number, lineEnd: number) => {
|
|
if (plugin == null) return null
|
|
// Get the folding ranges from the language server.
|
|
// Since this is async we directly need to update the folding ranges after.
|
|
const range = plugin?.foldingRange(lineStart, lineEnd)
|
|
return range
|
|
}),
|
|
]
|
|
|
|
return ext
|
|
}
|