58 lines
No EOL
1.7 KiB
JavaScript
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(); |