[mod] surface client
This commit is contained in:
parent
5f094cdd95
commit
5c859d014f
9 changed files with 37 additions and 19 deletions
|
|
@ -28,12 +28,11 @@ function simpleWebSocketTransport(uri) {
|
||||||
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
function client(transport){
|
||||||
function lsp(transport,fileId){
|
return new LSPClient().connect(transport)
|
||||||
let client = new LSPClient().connect(transport);
|
|
||||||
return languageServerSupport(client, fileId);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const baseExts = [
|
const baseExts = [
|
||||||
lineNumbers(),
|
lineNumbers(),
|
||||||
highlightActiveLineGutter(),
|
highlightActiveLineGutter(),
|
||||||
|
|
@ -82,4 +81,4 @@ function createEditorView(state, parent) {
|
||||||
return new EditorView({ state, parent });
|
return new EditorView({ state, parent });
|
||||||
}
|
}
|
||||||
|
|
||||||
export { createEditorState, createEditorView, openSearchPanel,openLintPanel, languageServerSupport, baseExts ,lsp, simpleWebSocketTransport};
|
export { createEditorState, createEditorView, openSearchPanel,openLintPanel, languageServerSupport, baseExts ,client, simpleWebSocketTransport};
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"cells":[{"kind":2,"language":"xquery","value":" db:system() "}]}
|
{"cells":[{"kind":2,"language":"xquery","value":"(:<:)\r\n\r\nimport module namespace docs=\"lsp/docs\" at \"/srv/basex/webapp/lsp/docs.xqm\";"},{"kind":2,"language":"xquery","value":"ws:ids()"},{"kind":2,"language":"xquery","value":"let $f:=docs:list(ws:ids())[1]\r\nreturn docs:get(ws:ids(),$f,\"parse\")"}]}
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rollup src/index.js -m true -f iife -o dist/cm6.bundle.js -p node-resolve,tla --output.name cm6",
|
"build": "rollup src/index.js -m true -f iife -o dist/cm6.bundle.js -p node-resolve,tla --output.name cm6",
|
||||||
"build-cm": "rollup src/lsp.js -m true -f iife -o webapp/static/clients/codemirror/lsp.bundle.js -p node-resolve,tla --output.name lsp",
|
"build-cm": "rollup bundles/src/lsp.js -m true -f iife -o webapp/static/clients/codemirror/lsp.bundle.js -p node-resolve,tla --output.name lsp",
|
||||||
"min-cm": "cd webapp/static/clients/codemirror && npx minify lsp.bundle.js > lsp.bundle.min.js ",
|
"min-cm": "cd webapp/static/clients/codemirror && npx minify lsp.bundle.js > lsp.bundle.min.js ",
|
||||||
"min": "cd dist && npx minify cm6.bundle.js > cm6.bundle.min.js && npx minify lsp.bundle.js > lsp.bundle.min.js"
|
"min": "cd dist && npx minify cm6.bundle.js > cm6.bundle.min.js && npx minify lsp.bundle.js > lsp.bundle.min.js"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,3 +51,21 @@ return (
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
(:~ close a file :)
|
||||||
|
declare function docs:close($socket as xs:string,$uri as xs:string)
|
||||||
|
as map(*){
|
||||||
|
let $files:=ws:get($socket,"files",{})
|
||||||
|
return if(map:contains($files,$uri))
|
||||||
|
then let $props:=$files($uri)
|
||||||
|
return (
|
||||||
|
map:items($props)!ws:delete($socket,.),
|
||||||
|
ws:set($socket,"files",map:remove($files,$uri))
|
||||||
|
)
|
||||||
|
else ()
|
||||||
|
};
|
||||||
|
(:~ list a file :)
|
||||||
|
declare function docs:list($socket as xs:string)
|
||||||
|
as xs:string*{
|
||||||
|
ws:get($socket,"files",{})=>map:keys()
|
||||||
|
|
||||||
|
};
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
"selectionRangeProvider": true,
|
"selectionRangeProvider": true,
|
||||||
"documentLinkProvider": {},
|
"documentLinkProvider": {},
|
||||||
"serverInfo": {
|
"serverInfo": {
|
||||||
"name": "BaseX Language Server",
|
"name": "XQuery 4.0 Language Server",
|
||||||
"version": "0.0.1"
|
"version": "0.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ as empty-sequence()
|
||||||
return ()
|
return ()
|
||||||
};
|
};
|
||||||
|
|
||||||
(:~ didOpen method response :)
|
(:~ didChange method response :)
|
||||||
declare
|
declare
|
||||||
function lsp-text:didChange($json as map(*))
|
function lsp-text:didChange($json as map(*))
|
||||||
as map(*)?
|
as map(*)?
|
||||||
|
|
|
||||||
|
|
@ -31305,11 +31305,10 @@ ${text}</tr>
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
}function client(transport){
|
||||||
|
return new LSPClient().connect(transport)
|
||||||
}
|
}
|
||||||
function lsp(transport,fileId){
|
|
||||||
let client = new LSPClient().connect(transport);
|
|
||||||
return languageServerSupport(client, fileId);
|
|
||||||
}
|
|
||||||
const baseExts = [
|
const baseExts = [
|
||||||
lineNumbers(),
|
lineNumbers(),
|
||||||
highlightActiveLineGutter(),
|
highlightActiveLineGutter(),
|
||||||
|
|
@ -31359,10 +31358,10 @@ ${text}</tr>
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.baseExts = baseExts;
|
exports.baseExts = baseExts;
|
||||||
|
exports.client = client;
|
||||||
exports.createEditorState = createEditorState;
|
exports.createEditorState = createEditorState;
|
||||||
exports.createEditorView = createEditorView;
|
exports.createEditorView = createEditorView;
|
||||||
exports.languageServerSupport = languageServerSupport;
|
exports.languageServerSupport = languageServerSupport;
|
||||||
exports.lsp = lsp;
|
|
||||||
exports.openLintPanel = openLintPanel;
|
exports.openLintPanel = openLintPanel;
|
||||||
exports.openSearchPanel = openSearchPanel;
|
exports.openSearchPanel = openSearchPanel;
|
||||||
exports.simpleWebSocketTransport = simpleWebSocketTransport;
|
exports.simpleWebSocketTransport = simpleWebSocketTransport;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -10,7 +10,7 @@ window.addEventListener('load', () => {
|
||||||
|
|
||||||
const view = lsp.createEditorView(undefined, document.getElementById("editor"));
|
const view = lsp.createEditorView(undefined, document.getElementById("editor"));
|
||||||
view.setState(lsp.createEditorState(doc, lsp.baseExts));
|
view.setState(lsp.createEditorState(doc, lsp.baseExts));
|
||||||
|
let client;
|
||||||
// Save content to localStorage when the page is about to unload
|
// Save content to localStorage when the page is about to unload
|
||||||
window.addEventListener('beforeunload', () => {
|
window.addEventListener('beforeunload', () => {
|
||||||
const doc = view.state.doc.toString();
|
const doc = view.state.doc.toString();
|
||||||
|
|
@ -40,6 +40,7 @@ document.getElementById("load").onchange = e => {
|
||||||
insert: t
|
insert: t
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
console.log("SYNC")
|
||||||
});
|
});
|
||||||
document.getElementById("load").value="";
|
document.getElementById("load").value="";
|
||||||
};
|
};
|
||||||
|
|
@ -48,11 +49,12 @@ function connect() {
|
||||||
const file = document.getElementById("iFile").value;
|
const file = document.getElementById("iFile").value;
|
||||||
lsp.simpleWebSocketTransport(server)
|
lsp.simpleWebSocketTransport(server)
|
||||||
.then(transport => {
|
.then(transport => {
|
||||||
let link = lsp.lsp(transport, file);
|
client = lsp.client(transport);
|
||||||
|
let plugin=lsp.languageServerSupport(client,file,"xquery")
|
||||||
const doc = view.state.doc.toString();
|
const doc = view.state.doc.toString();
|
||||||
const state = lsp.createEditorState(doc, [...lsp.baseExts, link]);
|
const state = lsp.createEditorState(doc, [...lsp.baseExts, plugin]);
|
||||||
view.setState(state);
|
view.setState(state);
|
||||||
})
|
})
|
||||||
.catch(r => alert("fail"));
|
.catch(r => alert("connection failed: "+ server));
|
||||||
};
|
};
|
||||||
connect();
|
connect();
|
||||||
Loading…
Add table
Reference in a new issue