// Load saved content from localStorage when the page loads window.addEventListener('load', () => { const savedText = localStorage.getItem('code'); if (savedText) { doc = savedText; } view.setState(lsp.createEditorState(doc, lsp.baseExts)); connect(); }); const view = lsp.createEditorView(undefined, document.getElementById("editor")); let doc = `3+1`; let client; // Save content to localStorage when the page is about to unload window.addEventListener('beforeunload', () => { const doc = view.state.doc.toString(); localStorage.setItem('code', doc); }); document.getElementById("connect").onclick = e => { e.preventDefault() connect() }; document.getElementById("search").onclick = e => { lsp.openSearchPanel(view); }; document.getElementById("lint").onclick = async e => { console.log("word",view.state.wordAt(1)); const ser=document.getElementById("iServer").value; //const transport = new WebTransport(ser); // The connection can be used once ready fulfills //await transport.ready; lsp.openLintPanel(view); }; document.getElementById("sync").onclick = e => { client.sync(); console.log("XXXsync"); }; document.getElementById("load").onchange = e => { const url = e.target.value; if(url.length==0)return fetch(url) .then(response => response.text()) .then(t => { view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: t } }) console.log("SYNC") }); document.getElementById("load").value=""; }; function connect() { const server = document.getElementById("iServer").value; const file = document.getElementById("iFile").value; lsp.simpleWebSocketTransport(server) .then(transport => { client = lsp.client(transport); let plugin=lsp.languageServerSupport(client,file,"xquery") const doc = view.state.doc.toString(); const state = lsp.createEditorState(doc, [...lsp.baseExts, plugin]); view.setState(state); }) .catch(r => alert("connection failed: "+ server)); };