[mod] createstate
This commit is contained in:
parent
5a8d24dc49
commit
ecb975a999
5 changed files with 58 additions and 259 deletions
|
|
@ -11,8 +11,7 @@ import { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap }
|
|||
|
||||
import { xQuery } from "@codemirror/legacy-modes/mode/xquery"
|
||||
|
||||
// Theme
|
||||
import { oneDark } from "@codemirror/theme-one-dark";
|
||||
|
||||
import { LSPClient, LSPPlugin, languageServerSupport } from "@codemirror/lsp-client";
|
||||
// Language
|
||||
import { xml } from "@codemirror/lang-xml";
|
||||
|
|
@ -67,21 +66,6 @@ const baseExts = [
|
|||
StreamLanguage.define(xQuery)
|
||||
];
|
||||
|
||||
function createEditorState(initialContents, extensions, options = {}) {
|
||||
|
||||
if (options.oneDark)
|
||||
extensions.push(oneDark);
|
||||
|
||||
return EditorState.create({
|
||||
doc: initialContents,
|
||||
extensions
|
||||
});
|
||||
}
|
||||
|
||||
function createEditorView(state, parent) {
|
||||
return new EditorView({ state, parent });
|
||||
}
|
||||
|
||||
function debouncedChangeListener({ delay = 750, onChange }) {
|
||||
let timeoutId = null;
|
||||
let lastContent = '';
|
||||
|
|
@ -118,4 +102,4 @@ function listCommands(view) {
|
|||
return commands;
|
||||
};
|
||||
|
||||
export { createEditorState, createEditorView, openSearchPanel, openLintPanel, languageServerSupport, baseExts, simpleWebSocketTransport, linter, LSPPlugin, setDiagnostics, LSPClient, debouncedChangeListener, listCommands };
|
||||
export { EditorView,EditorState, openSearchPanel, openLintPanel, languageServerSupport, baseExts, simpleWebSocketTransport, linter, LSPPlugin, setDiagnostics, LSPClient, debouncedChangeListener, listCommands };
|
||||
41
bundles/src/try.js
Normal file
41
bundles/src/try.js
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import {basicSetup, EditorView} from "codemirror"
|
||||
import { EditorState } from '@codemirror/state';
|
||||
import { LSPClient, LSPPlugin, languageServerSupport } from "@codemirror/lsp-client";
|
||||
import {StreamLanguage} from "@codemirror/language"
|
||||
import { xQuery } from "@codemirror/legacy-modes/mode/xquery"
|
||||
|
||||
function simpleWebSocketTransport(uri) {
|
||||
let handlers = [];
|
||||
return new Promise(function (resolve, reject) {
|
||||
let sock = new WebSocket(uri);
|
||||
|
||||
sock.onmessage = e => { for (let h of handlers) h(e.data.toString()); };
|
||||
sock.onerror = e => reject(e);
|
||||
sock.onopen = () => resolve({
|
||||
socket: sock,
|
||||
send: (message) => sock.send(message),
|
||||
subscribe: (handler) => handlers.push(handler),
|
||||
unsubscribe: (handler) => handlers = handlers.filter(h => h != handler)
|
||||
});
|
||||
}
|
||||
);
|
||||
};
|
||||
simpleWebSocketTransport("ws://localhost:3000/ws/lsp")
|
||||
.then(transport => {
|
||||
|
||||
client = new LSPClient().connect(transport);
|
||||
|
||||
let extLsp = languageServerSupport(client, file, "xquery");
|
||||
|
||||
const doc = view.state.doc.toString();
|
||||
const state = lsp.createEditorState(doc, [...lsp.baseExts, extLsp, extLint]);
|
||||
view.setState(state);
|
||||
})
|
||||
.catch(r => { alert("connection failed: " + server) });
|
||||
|
||||
|
||||
new EditorView({
|
||||
doc: "xquery version '3.1';\n(:~ comment:)\nmodule namespace pdfbox='ns';\n",
|
||||
extensions: [basicSetup, StreamLanguage.define(xQuery)],
|
||||
parent: document.body
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue