basex-lsp/webapp/static/clients/codemirror/script.js
2025-08-06 14:57:52 +01:00

58 lines
No EOL
1.7 KiB
JavaScript

let doc = `3+1`;
// Load saved content from localStorage when the page loads
window.addEventListener('load', () => {
const savedText = localStorage.getItem('code');
if (savedText) {
doc = savedText;
}
});
const view = lsp.createEditorView(undefined, document.getElementById("editor"));
view.setState(lsp.createEditorState(doc, lsp.baseExts));
// 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 = e => {
lsp.openLintPanel(view);
};
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
}
})
});
document.getElementById("load").value="";
};
function connect() {
const server = document.getElementById("iServer").value;
const file = document.getElementById("iFile").value;
lsp.simpleWebSocketTransport(server)
.then(transport => {
let link = lsp.lsp(transport, file);
const doc = view.state.doc.toString();
const state = lsp.createEditorState(doc, [...lsp.baseExts, link]);
view.setState(state);
})
.catch(r => alert("fail"));
};
connect();