language server protocol
| bundles | ||
| data | ||
| docs | ||
| test | ||
| webapp | ||
| .dockerignore | ||
| .gitignore | ||
| compose.yaml | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| rollup.config.js | ||
Work in progress.
An attempt to write a Language Server Protocol server using XQuery 4.0 and the BaseX websocket feature.
LSP Server
webapp/lspThe LSP implementation in XQuery using WebSockets for transport and the JSON-RPC 2.0 API for message format.
Dev notes
State is held in websocket attributes.
| Name | Use |
|---|---|
| initized | set true after client sends intialized messag |
| files | A map whose keys are open uris, values are maps (doctype-> attribute name where doctype is stored |
| file-{uuid} | name of websocket attribute with textDocument |
| parse-{uuid} | name of websocket attribute with parse tree XML |
Sample html clients
Using CodeMirror6
webapp/static/codemirrorA test html page using the CodeMirror6 editor that connects to the BaseX LSP instance
Using Ace Editor
webapp/static/aceA test html page using the Ace editor that connects to the BaseX LSP instance
Uses
I needed set NODE_OPTIONS=--max_old_space_size=8192 for build to complete
Or node --max-old-space-size=8192 node_modules/webpack-dev-serve r/bin/webpack-dev-server.js
Notes
java -cp org.eclipse.lemminx-uber.jar org.eclipse.lemminx.XMLServerSocketLauncher` Using https://github.com/mkslanc/ace-linters https://mkslanc.github.io/ace-linters/
Make a websocket server for lsp on port 3000 https://mkslanc.github.io/ace-linters/websocket.html
http://localhost:3000/exampleServer