[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 lsp(transport,fileId){
|
||||
let client = new LSPClient().connect(transport);
|
||||
return languageServerSupport(client, fileId);
|
||||
function client(transport){
|
||||
return new LSPClient().connect(transport)
|
||||
};
|
||||
|
||||
|
||||
const baseExts = [
|
||||
lineNumbers(),
|
||||
highlightActiveLineGutter(),
|
||||
|
@ -82,4 +81,4 @@ function createEditorView(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": {
|
||||
"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": "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,
|
||||
"documentLinkProvider": {},
|
||||
"serverInfo": {
|
||||
"name": "BaseX Language Server",
|
||||
"name": "XQuery 4.0 Language Server",
|
||||
"version": "0.0.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ as empty-sequence()
|
|||
return ()
|
||||
};
|
||||
|
||||
(:~ didOpen method response :)
|
||||
(:~ didChange method response :)
|
||||
declare
|
||||
function lsp-text:didChange($json 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 = [
|
||||
lineNumbers(),
|
||||
highlightActiveLineGutter(),
|
||||
|
@ -31359,10 +31358,10 @@ ${text}</tr>
|
|||
}
|
||||
|
||||
exports.baseExts = baseExts;
|
||||
exports.client = client;
|
||||
exports.createEditorState = createEditorState;
|
||||
exports.createEditorView = createEditorView;
|
||||
exports.languageServerSupport = languageServerSupport;
|
||||
exports.lsp = lsp;
|
||||
exports.openLintPanel = openLintPanel;
|
||||
exports.openSearchPanel = openSearchPanel;
|
||||
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"));
|
||||
view.setState(lsp.createEditorState(doc, lsp.baseExts));
|
||||
|
||||
let client;
|
||||
// Save content to localStorage when the page is about to unload
|
||||
window.addEventListener('beforeunload', () => {
|
||||
const doc = view.state.doc.toString();
|
||||
|
@ -40,6 +40,7 @@ document.getElementById("load").onchange = e => {
|
|||
insert: t
|
||||
}
|
||||
})
|
||||
console.log("SYNC")
|
||||
});
|
||||
document.getElementById("load").value="";
|
||||
};
|
||||
|
@ -48,11 +49,12 @@ function connect() {
|
|||
const file = document.getElementById("iFile").value;
|
||||
lsp.simpleWebSocketTransport(server)
|
||||
.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 state = lsp.createEditorState(doc, [...lsp.baseExts, link]);
|
||||
const state = lsp.createEditorState(doc, [...lsp.baseExts, plugin]);
|
||||
view.setState(state);
|
||||
})
|
||||
.catch(r => alert("fail"));
|
||||
.catch(r => alert("connection failed: "+ server));
|
||||
};
|
||||
connect();
|
Loading…
Add table
Reference in a new issue