@ codemirror/ lsp- 客户端 
[ 西非 | 医生 | 问 题 | 论坛 | 变化 [ . ]
此软件包执行语言服务器协议( LSP) 客户端 页:1 代码 代码编辑器.
这个 项目页面 拥有更多信息,a 数目 实例 编辑 文档。 。 。 .
此代码以 麻省理工学院许可证。 。 。 .
我们的目标是成为一个包容、欢迎的社区。 为了表明这一点, 我们有一个 代码 行为 适用 联系项目.
使用量
运行语言服务器并将其连接到
网页。 您可以在服务器上运行,并通过网络代理
套接字,或者,如果它是用 JavaScript 写的或者可以编译到 WASM,
在客户端直接运行。 @ codemirror/ lsp- 客户端软件包
通过 a(Transport(中文(简体) )
对象,它显示一个发送和接收 JSON 的小型界面
留言.
如何实际与服务器交谈、如何连接的责任 并处理断开,则留给执行 运输.
这个例子使用一种完全不处理出错的粗糙运输.
import {Transport, LSPClient, languageServerExtensions} from "@codemirror/lsp-client"
import {basicSetup, EditorView} from "codemirror"
import {typescriptLanguage} from "@codemirror/lang-javascript"
function simpleWebSocketTransport(uri: string): Promise<Transport> {
let handlers: ((value: string) => void)[] = []
let sock = new WebSocket(uri)
sock.onmessage = e => { for (let h of handlers) h(e.data.toString()) }
return new Promise(resolve => {
sock.onopen = () => resolve({
send(message: string) { sock.send(message) },
subscribe(handler: (value: string) => void) { handlers.push(handler) },
unsubscribe(handler: (value: string) => void) { handlers = handlers.filter(h => h != handler) }
})
})
}
let transport = await simpleWebSocketTransport("ws://host:port")
let client = new LSPClient({extensions: languageServerExtensions()}).connect(transport)
new EditorView({
extensions: [
basicSetup,
typescriptLanguage,
client.plugin("file:///some/file.ts"),
],
parent: document.body
})