[add] initial handler stuff
This commit is contained in:
parent
7deb653208
commit
9533519b8a
10 changed files with 284 additions and 187 deletions
|
@ -76,27 +76,7 @@ const baseExts = [
|
|||
StreamLanguage.define(xQuery)
|
||||
];
|
||||
|
||||
function debouncedChangeListener({ delay = 750, onChange }) {
|
||||
let timeoutId = null;
|
||||
let lastContent = '';
|
||||
|
||||
return EditorView.updateListener.of(update => {
|
||||
if (update.docChanged) {
|
||||
const currentContent = update.state.doc.toString();
|
||||
|
||||
if (timeoutId) {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
|
||||
timeoutId = setTimeout(() => {
|
||||
if (currentContent !== lastContent) {
|
||||
lastContent = currentContent;
|
||||
onChange(currentContent, update.state);
|
||||
}
|
||||
}, delay);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// map cmd->{keybings,fn}
|
||||
function listCommands(view) {
|
||||
|
@ -114,4 +94,4 @@ function listCommands(view) {
|
|||
|
||||
export { baseExts, EditorView, EditorState, StateEffect, LSPPlugin, LSPClient,
|
||||
openSearchPanel, openLintPanel, languageServerSupport, languageServerExtensions,
|
||||
simpleWebSocketTransport, linter, formatDocument,keymap,formatKeymap, debouncedChangeListener, listCommands };
|
||||
simpleWebSocketTransport, linter, formatDocument,keymap,formatKeymap, listCommands };
|
6
docs/notes.md
Normal file
6
docs/notes.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
<any/><token>:=</token><any/>
|
||||
$p update
|
||||
replace node //token[.=':='][preceding-siblings::*[1]/element()][following-siblings::*[1]/element()]with (' ',.,' ')...........................
|
||||
|
||||
|
||||
---------------Nico Verwer: SMAX (Separated Markup API for XML). SMAX (Separated Markup API for XML) https://github.com/nverwer/SMAX
|
228
package-lock.json
generated
228
package-lock.json
generated
|
@ -12,7 +12,7 @@
|
|||
"@codemirror/language-data": "^6.5.1",
|
||||
"@codemirror/legacy-modes": "^6.5.1",
|
||||
"@codemirror/lint": "^6.8.5",
|
||||
"@codemirror/lsp-client": "^6.1.0",
|
||||
"@codemirror/lsp-client": "^6.1.1",
|
||||
"@codemirror/search": "^6.5.11",
|
||||
"@codemirror/theme-one-dark": "^6.1.0",
|
||||
"@codemirror/view": "^6.38.1",
|
||||
|
@ -28,9 +28,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@codemirror/autocomplete": {
|
||||
"version": "6.18.6",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz",
|
||||
"integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==",
|
||||
"version": "6.18.7",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.7.tgz",
|
||||
"integrity": "sha512-8EzdeIoWPJDsMBwz3zdzwXnUpCzMiCyz5/A3FIPpriaclFCGDkAzK13sMcnsu5rowqiyeQN2Vs2TsOcoDPZirQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@codemirror/language": "^6.0.0",
|
||||
|
@ -380,13 +380,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@codemirror/lsp-client": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/lsp-client/-/lsp-client-6.1.0.tgz",
|
||||
"integrity": "sha512-DRZ97ZvTywU6IvGvmImNFIOWo2IkI1V6EccXrgId7/nJ7IhUQNFkGRMafDGX8plr65ngCBH+u9Sy0fTuGu39BA==",
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/lsp-client/-/lsp-client-6.1.1.tgz",
|
||||
"integrity": "sha512-ydz4LbaERepN2YPn/SEZLOs7A+3I5cxMrXay69XjrXyETX3+6Bw2+UjAbpnY6ihsvPj3OFV+knJBLhNjoPtBEw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@codemirror/autocomplete": "^6.18.6",
|
||||
"@codemirror/language": "^6.11.0",
|
||||
"@codemirror/lint": "^6.8.5",
|
||||
"@codemirror/state": "^6.5.2",
|
||||
"@codemirror/view": "^6.37.0",
|
||||
"@lezer/highlight": "^1.2.1",
|
||||
|
@ -427,9 +428,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@codemirror/view": {
|
||||
"version": "6.38.1",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.1.tgz",
|
||||
"integrity": "sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==",
|
||||
"version": "6.38.2",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.2.tgz",
|
||||
"integrity": "sha512-bTWAJxL6EOFLPzTx+O5P5xAO3gTqpatQ2b/ARQ8itfU/v2LlpS3pH2fkL0A3E/Fx8Y2St2KES7ZEV0sHTsSW/A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@codemirror/state": "^6.5.0",
|
||||
|
@ -559,9 +560,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@lezer/javascript": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.1.tgz",
|
||||
"integrity": "sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==",
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.2.tgz",
|
||||
"integrity": "sha512-oJDMyptbtS/zhSi/uOszsqCm7/0l6QpbnvjoXBgNiFlk4NHrqoP/+psiVxYKYe9GHRr6K7jBSxwmIW61TrtZOQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@lezer/common": "^1.2.0",
|
||||
|
@ -724,9 +725,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@rollup/pluginutils": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz",
|
||||
"integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==",
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
|
||||
"integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -747,9 +748,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.48.1.tgz",
|
||||
"integrity": "sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz",
|
||||
"integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -761,9 +762,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm64": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.48.1.tgz",
|
||||
"integrity": "sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz",
|
||||
"integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -775,9 +776,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.48.1.tgz",
|
||||
"integrity": "sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz",
|
||||
"integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -789,9 +790,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-x64": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.48.1.tgz",
|
||||
"integrity": "sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz",
|
||||
"integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -803,9 +804,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-freebsd-arm64": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.48.1.tgz",
|
||||
"integrity": "sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz",
|
||||
"integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -817,9 +818,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-freebsd-x64": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.48.1.tgz",
|
||||
"integrity": "sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz",
|
||||
"integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -831,9 +832,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.48.1.tgz",
|
||||
"integrity": "sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz",
|
||||
"integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -845,9 +846,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.48.1.tgz",
|
||||
"integrity": "sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz",
|
||||
"integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
|
@ -859,9 +860,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.48.1.tgz",
|
||||
"integrity": "sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz",
|
||||
"integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -873,9 +874,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.48.1.tgz",
|
||||
"integrity": "sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz",
|
||||
"integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -887,9 +888,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.48.1.tgz",
|
||||
"integrity": "sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz",
|
||||
"integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
|
@ -901,9 +902,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.48.1.tgz",
|
||||
"integrity": "sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz",
|
||||
"integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
|
@ -915,9 +916,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.48.1.tgz",
|
||||
"integrity": "sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz",
|
||||
"integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
|
@ -929,9 +930,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-musl": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.48.1.tgz",
|
||||
"integrity": "sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz",
|
||||
"integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
|
@ -943,9 +944,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.48.1.tgz",
|
||||
"integrity": "sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz",
|
||||
"integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
|
@ -957,9 +958,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.48.1.tgz",
|
||||
"integrity": "sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz",
|
||||
"integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -971,9 +972,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.48.1.tgz",
|
||||
"integrity": "sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz",
|
||||
"integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -984,10 +985,24 @@
|
|||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-openharmony-arm64": {
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz",
|
||||
"integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openharmony"
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.48.1.tgz",
|
||||
"integrity": "sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz",
|
||||
"integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
|
@ -999,9 +1014,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.48.1.tgz",
|
||||
"integrity": "sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz",
|
||||
"integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
|
@ -1013,9 +1028,9 @@
|
|||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.48.1.tgz",
|
||||
"integrity": "sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz",
|
||||
"integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
|
@ -1041,9 +1056,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ace-builds": {
|
||||
"version": "1.43.2",
|
||||
"resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.2.tgz",
|
||||
"integrity": "sha512-3wzJUJX0RpMc03jo0V8Q3bSb/cKPnS7Nqqw8fVHsCCHweKMiTIxT3fP46EhjmVy6MCuxwP801ere+RW245phGw==",
|
||||
"version": "1.43.3",
|
||||
"resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.43.3.tgz",
|
||||
"integrity": "sha512-MCl9rALmXwIty/4Qboijo/yNysx1r6hBTzG+6n/TiOm5LFhZpEvEIcIITPFiEOEFDfgBOEmxu+a4f54LEFM6Sg==",
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/ace-linters": {
|
||||
|
@ -1529,9 +1544,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.48.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.48.1.tgz",
|
||||
"integrity": "sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==",
|
||||
"version": "4.50.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz",
|
||||
"integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -1545,26 +1560,27 @@
|
|||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-android-arm-eabi": "4.48.1",
|
||||
"@rollup/rollup-android-arm64": "4.48.1",
|
||||
"@rollup/rollup-darwin-arm64": "4.48.1",
|
||||
"@rollup/rollup-darwin-x64": "4.48.1",
|
||||
"@rollup/rollup-freebsd-arm64": "4.48.1",
|
||||
"@rollup/rollup-freebsd-x64": "4.48.1",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.48.1",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.48.1",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.48.1",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.48.1",
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "4.48.1",
|
||||
"@rollup/rollup-linux-ppc64-gnu": "4.48.1",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.48.1",
|
||||
"@rollup/rollup-linux-riscv64-musl": "4.48.1",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.48.1",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.48.1",
|
||||
"@rollup/rollup-linux-x64-musl": "4.48.1",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.48.1",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.48.1",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.48.1",
|
||||
"@rollup/rollup-android-arm-eabi": "4.50.1",
|
||||
"@rollup/rollup-android-arm64": "4.50.1",
|
||||
"@rollup/rollup-darwin-arm64": "4.50.1",
|
||||
"@rollup/rollup-darwin-x64": "4.50.1",
|
||||
"@rollup/rollup-freebsd-arm64": "4.50.1",
|
||||
"@rollup/rollup-freebsd-x64": "4.50.1",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.50.1",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.50.1",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.50.1",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.50.1",
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "4.50.1",
|
||||
"@rollup/rollup-linux-ppc64-gnu": "4.50.1",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.50.1",
|
||||
"@rollup/rollup-linux-riscv64-musl": "4.50.1",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.50.1",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.50.1",
|
||||
"@rollup/rollup-linux-x64-musl": "4.50.1",
|
||||
"@rollup/rollup-openharmony-arm64": "4.50.1",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.50.1",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.50.1",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.50.1",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
|
@ -1638,14 +1654,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.43.1",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz",
|
||||
"integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==",
|
||||
"version": "5.44.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz",
|
||||
"integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.3",
|
||||
"acorn": "^8.14.0",
|
||||
"acorn": "^8.15.0",
|
||||
"commander": "^2.20.0",
|
||||
"source-map-support": "~0.5.20"
|
||||
},
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"@codemirror/language-data": "^6.5.1",
|
||||
"@codemirror/legacy-modes": "^6.5.1",
|
||||
"@codemirror/lint": "^6.8.5",
|
||||
"@codemirror/lsp-client": "^6.1.0",
|
||||
"@codemirror/lsp-client": "^6.1.1",
|
||||
"@codemirror/search": "^6.5.11",
|
||||
"@codemirror/theme-one-dark": "^6.1.0",
|
||||
"@codemirror/view": "^6.38.1",
|
||||
|
@ -22,8 +22,8 @@
|
|||
"rollup-plugin-tla": "^0.0.2"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "rollup src/index.js -m true -f iife -o dist/cm6.bundle.js -p node-resolve,tla --output.name cm6",
|
||||
"lsp-build": "rollup bundles/src/lsp.js -m true -f iife -o webapp/static/clients/codemirror/lsp.bundle.js -p node-resolve,tla --output.name lsp",
|
||||
"build": "rollup cm6/index.js -m true -f iife -o dist/cm6.bundle.js -p node-resolve,tla --output.name cm6",
|
||||
"lsp-build": "rollup bundles/cm6/lsp.js -m true -f iife -o webapp/static/clients/codemirror/lsp.bundle.js -p node-resolve,tla --output.name lsp",
|
||||
"lsp-min": "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",
|
||||
"javac": "cd bundles/grammar && javac -cp %BASEX12%\\BaseX.jar -d build xq4.java && cd build && jar cf ../../../webapp/custom/xq4.jar . "
|
||||
|
|
|
@ -286,7 +286,8 @@ as map(*)*{
|
|||
=>PDDocumentCatalog:getDocumentOutline()
|
||||
|
||||
return if(exists($outline))
|
||||
then pdfbox:outline($pdf,PDOutlineItem:getFirstChild($outline))
|
||||
then pdfbox:outline($pdf,PDOutlineItem:getFirstChild($outline))
|
||||
else ()
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -363,6 +364,7 @@ as item()?
|
|||
then PDDocument:getDocumentCatalog($pdf)
|
||||
=>PDDocumentCatalog:getPages()
|
||||
=>PDPageTree:indexOf($page)
|
||||
else ()
|
||||
};
|
||||
|
||||
(:~ Return new PDF doc with pages from $start to $end as xs:base64Binary, (1 based)
|
||||
|
@ -434,7 +436,7 @@ as xs:string?{
|
|||
return string-join(($page,
|
||||
if(empty($style)) then "-" else $style,
|
||||
if(($start eq 1)) then "" else $start,
|
||||
if(exists($prefix)) then '*' || $prefix (:TODO double " :)
|
||||
if(exists($prefix)) then '*' || $prefix else () (:TODO double " :)
|
||||
))
|
||||
};
|
||||
|
||||
|
|
56
webapp/lsp/handlers.xqm
Normal file
56
webapp/lsp/handlers.xqm
Normal file
|
@ -0,0 +1,56 @@
|
|||
(: tools to analyse xml parse tree
|
||||
@author Andy Bunce
|
||||
:)
|
||||
module namespace hnd="lsp/handlers";
|
||||
import module namespace pos="lsp/position" at "position.xqm";
|
||||
|
||||
declare record hnd:hand(
|
||||
result as item()*,
|
||||
skipchildren as xs:boolean
|
||||
);
|
||||
|
||||
declare function hnd:default-handler($el as element(*),$state)
|
||||
as function(*){
|
||||
fn(){hnd:hand($state,false())}
|
||||
};
|
||||
|
||||
declare function hnd:get-handler($el as element(*),$state)
|
||||
as function(*)
|
||||
{ function-lookup(xs:QName(name($el)),2)
|
||||
otherwise hnd:default-handler($el,$state)
|
||||
};
|
||||
|
||||
declare function hnd:diags($parse as element(),$diags:=())
|
||||
{
|
||||
let $h:= hnd:get-handler($parse,$diags)($parse,$diags)
|
||||
return if($h?skipchildren)
|
||||
then $h?result
|
||||
else fold-left($parse/*,$diags,
|
||||
fn($r,$this){
|
||||
hnd:diags($this,$r)
|
||||
})
|
||||
};
|
||||
|
||||
declare record hnd:symbol (
|
||||
name as xs:string,
|
||||
type as xs:string,
|
||||
range-name? as pos:Range,
|
||||
range-full? as pos:Range,
|
||||
children? as array(hnd:symbol)
|
||||
);
|
||||
|
||||
declare function hnd:symbols($parse as element(),$syms as hnd:symbol* :=() )
|
||||
{
|
||||
'todo'
|
||||
};
|
||||
|
||||
declare function hnd:anotated-declaration($parse as element(),$syms)
|
||||
as hnd:hand
|
||||
{
|
||||
let $sym:=hnd:symbol(
|
||||
$parse/token,
|
||||
"AA"
|
||||
)
|
||||
return hnd:hand(($syms,$sym),true())
|
||||
};
|
||||
|
|
@ -8075,6 +8075,29 @@ var lsp = (function (exports) {
|
|||
return pos;
|
||||
}
|
||||
}
|
||||
function skipAtomsForSelection(atoms, sel) {
|
||||
let ranges = null;
|
||||
for (let i = 0; i < sel.ranges.length; i++) {
|
||||
let range = sel.ranges[i], updated = null;
|
||||
if (range.empty) {
|
||||
let pos = skipAtomicRanges(atoms, range.from, 0);
|
||||
if (pos != range.from)
|
||||
updated = EditorSelection.cursor(pos, -1);
|
||||
}
|
||||
else {
|
||||
let from = skipAtomicRanges(atoms, range.from, -1);
|
||||
let to = skipAtomicRanges(atoms, range.to, 1);
|
||||
if (from != range.from || to != range.to)
|
||||
updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);
|
||||
}
|
||||
if (updated) {
|
||||
if (!ranges)
|
||||
ranges = sel.ranges.slice();
|
||||
ranges[i] = updated;
|
||||
}
|
||||
}
|
||||
return ranges ? EditorSelection.create(ranges, sel.mainIndex) : sel;
|
||||
}
|
||||
function skipAtoms(view, oldPos, pos) {
|
||||
let newPos = skipAtomicRanges(view.state.facet(atomicRanges).map(f => f(view)), pos.from, oldPos.head > pos.from ? -1 : 1);
|
||||
return newPos == pos.from ? pos : EditorSelection.cursor(newPos, newPos < pos.from ? 1 : -1);
|
||||
|
@ -8310,6 +8333,8 @@ var lsp = (function (exports) {
|
|||
if (view.inputState.lastSelectionOrigin == "select")
|
||||
scrollIntoView = true;
|
||||
userEvent = view.inputState.lastSelectionOrigin;
|
||||
if (userEvent == "select.pointer")
|
||||
newSel = skipAtomsForSelection(view.state.facet(atomicRanges).map(f => f(view)), newSel);
|
||||
}
|
||||
view.dispatch({ selection: newSel, scrollIntoView, userEvent });
|
||||
return true;
|
||||
|
@ -8787,31 +8812,8 @@ var lsp = (function (exports) {
|
|||
if (this.dragging === false)
|
||||
this.select(this.lastEvent);
|
||||
}
|
||||
skipAtoms(sel) {
|
||||
let ranges = null;
|
||||
for (let i = 0; i < sel.ranges.length; i++) {
|
||||
let range = sel.ranges[i], updated = null;
|
||||
if (range.empty) {
|
||||
let pos = skipAtomicRanges(this.atoms, range.from, 0);
|
||||
if (pos != range.from)
|
||||
updated = EditorSelection.cursor(pos, -1);
|
||||
}
|
||||
else {
|
||||
let from = skipAtomicRanges(this.atoms, range.from, -1);
|
||||
let to = skipAtomicRanges(this.atoms, range.to, 1);
|
||||
if (from != range.from || to != range.to)
|
||||
updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);
|
||||
}
|
||||
if (updated) {
|
||||
if (!ranges)
|
||||
ranges = sel.ranges.slice();
|
||||
ranges[i] = updated;
|
||||
}
|
||||
}
|
||||
return ranges ? EditorSelection.create(ranges, sel.mainIndex) : sel;
|
||||
}
|
||||
select(event) {
|
||||
let { view } = this, selection = this.skipAtoms(this.style.get(event, this.extend, this.multiple));
|
||||
let { view } = this, selection = skipAtomsForSelection(this.atoms, this.style.get(event, this.extend, this.multiple));
|
||||
if (this.mustSelect || !selection.eq(view.state.selection, this.dragging === false))
|
||||
this.view.dispatch({
|
||||
selection,
|
||||
|
@ -8964,6 +8966,9 @@ var lsp = (function (exports) {
|
|||
return mouseSel.dragging === false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
view.inputState.setSelectionOrigin("select.pointer");
|
||||
}
|
||||
return false;
|
||||
};
|
||||
function rangeForClick(view, pos, bias, type) {
|
||||
|
@ -12288,7 +12293,7 @@ var lsp = (function (exports) {
|
|||
}
|
||||
/**
|
||||
Find the line block (see
|
||||
[`lineBlockAt`](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt) at the given
|
||||
[`lineBlockAt`](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt)) at the given
|
||||
height, again interpreted relative to the [top of the
|
||||
document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop).
|
||||
*/
|
||||
|
@ -13075,7 +13080,7 @@ var lsp = (function (exports) {
|
|||
// Ctrl-Alt may be used for AltGr on Windows
|
||||
!(browser.windows && event.ctrlKey && event.altKey) &&
|
||||
// Alt-combinations on macOS tend to be typed characters
|
||||
!(browser.mac && event.altKey && !event.ctrlKey) &&
|
||||
!(browser.mac && event.altKey && !(event.ctrlKey || event.metaKey)) &&
|
||||
(baseName = base[event.keyCode]) && baseName != name) {
|
||||
if (runFor(scopeObj[prefix + modifiers(baseName, event, true)])) {
|
||||
handled = true;
|
||||
|
@ -23971,16 +23976,20 @@ var lsp = (function (exports) {
|
|||
*/
|
||||
function insertCompletionText(state, text, from, to) {
|
||||
let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;
|
||||
return Object.assign(Object.assign({}, state.changeByRange(range => {
|
||||
if (range != main && from != to &&
|
||||
state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))
|
||||
return { range };
|
||||
let lines = state.toText(text);
|
||||
return {
|
||||
changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },
|
||||
range: EditorSelection.cursor(range.from + fromOff + lines.length)
|
||||
};
|
||||
})), { scrollIntoView: true, userEvent: "input.complete" });
|
||||
return {
|
||||
...state.changeByRange(range => {
|
||||
if (range != main && from != to &&
|
||||
state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))
|
||||
return { range };
|
||||
let lines = state.toText(text);
|
||||
return {
|
||||
changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },
|
||||
range: EditorSelection.cursor(range.from + fromOff + lines.length)
|
||||
};
|
||||
}),
|
||||
scrollIntoView: true,
|
||||
userEvent: "input.complete"
|
||||
};
|
||||
}
|
||||
const SourceCache = /*@__PURE__*/new WeakMap();
|
||||
function asSource(source) {
|
||||
|
@ -24625,7 +24634,7 @@ var lsp = (function (exports) {
|
|||
}, prev ? prev.timestamp : Date.now(), selected, false);
|
||||
}
|
||||
map(changes) {
|
||||
return new CompletionDialog(this.options, this.attrs, Object.assign(Object.assign({}, this.tooltip), { pos: changes.mapPos(this.tooltip.pos) }), this.timestamp, this.selected, this.disabled);
|
||||
return new CompletionDialog(this.options, this.attrs, { ...this.tooltip, pos: changes.mapPos(this.tooltip.pos) }, this.timestamp, this.selected, this.disabled);
|
||||
}
|
||||
setDisabled() {
|
||||
return new CompletionDialog(this.options, this.attrs, this.tooltip, this.timestamp, this.selected, true);
|
||||
|
@ -24810,7 +24819,10 @@ var lsp = (function (exports) {
|
|||
if (!(result instanceof ActiveResult))
|
||||
return false;
|
||||
if (typeof apply == "string")
|
||||
view.dispatch(Object.assign(Object.assign({}, insertCompletionText(view.state, apply, result.from, result.to)), { annotations: pickedCompletion.of(option.completion) }));
|
||||
view.dispatch({
|
||||
...insertCompletionText(view.state, apply, result.from, result.to),
|
||||
annotations: pickedCompletion.of(option.completion)
|
||||
});
|
||||
else
|
||||
apply(view, option.completion, result.from, result.to);
|
||||
return true;
|
||||
|
@ -25227,7 +25239,7 @@ var lsp = (function (exports) {
|
|||
let fields = [];
|
||||
let lines = [], positions = [], m;
|
||||
for (let line of template.split(/\r\n?|\n/)) {
|
||||
while (m = /[#$]\{(?:(\d+)(?::([^}]*))?|((?:\\[{}]|[^}])*))\}/.exec(line)) {
|
||||
while (m = /[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(line)) {
|
||||
let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || "", found = -1;
|
||||
let name = rawName.replace(/\\[{}]/g, m => m[1]);
|
||||
for (let i = 0; i < fields.length; i++) {
|
||||
|
@ -25244,6 +25256,12 @@ var lsp = (function (exports) {
|
|||
if (pos.field >= found)
|
||||
pos.field++;
|
||||
}
|
||||
for (let pos of positions)
|
||||
if (pos.line == lines.length && pos.from > m.index) {
|
||||
let snip = m[2] ? 3 + (m[1] || "").length : 2;
|
||||
pos.from -= snip;
|
||||
pos.to -= snip;
|
||||
}
|
||||
positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));
|
||||
line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);
|
||||
}
|
||||
|
@ -25273,7 +25291,7 @@ var lsp = (function (exports) {
|
|||
constructor(ranges, active) {
|
||||
this.ranges = ranges;
|
||||
this.active = active;
|
||||
this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)));
|
||||
this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)), true);
|
||||
}
|
||||
map(changes) {
|
||||
let ranges = [];
|
||||
|
@ -25690,17 +25708,18 @@ var lsp = (function (exports) {
|
|||
/**
|
||||
Basic keybindings for autocompletion.
|
||||
|
||||
- Ctrl-Space (and Alt-\` on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)
|
||||
- Ctrl-Space (and Alt-\` or Alt-i on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)
|
||||
- Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)
|
||||
- ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`
|
||||
- ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`
|
||||
- PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, "page")`
|
||||
- PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, "page")`
|
||||
- PageUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false, "page")`
|
||||
- Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)
|
||||
*/
|
||||
const completionKeymap = [
|
||||
{ key: "Ctrl-Space", run: startCompletion },
|
||||
{ mac: "Alt-`", run: startCompletion },
|
||||
{ mac: "Alt-i", run: startCompletion },
|
||||
{ key: "Escape", run: closeCompletion },
|
||||
{ key: "ArrowDown", run: /*@__PURE__*/moveCompletionSelection(true) },
|
||||
{ key: "ArrowUp", run: /*@__PURE__*/moveCompletionSelection(false) },
|
||||
|
@ -29545,6 +29564,27 @@ ${text}</tr>
|
|||
function toSeverity(sev) {
|
||||
return sev == 1 ? "error" : sev == 2 ? "warning" : sev == 3 ? "info" : "hint";
|
||||
}
|
||||
const autoSync = /*@__PURE__*/ViewPlugin.fromClass(class {
|
||||
constructor() {
|
||||
this.pending = -1;
|
||||
}
|
||||
update(update) {
|
||||
if (update.docChanged) {
|
||||
if (this.pending > -1)
|
||||
clearTimeout(this.pending);
|
||||
this.pending = setTimeout(() => {
|
||||
this.pending = -1;
|
||||
let plugin = LSPPlugin.get(update.view);
|
||||
if (plugin)
|
||||
plugin.client.sync();
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
destroy() {
|
||||
if (this.pending > -1)
|
||||
clearTimeout(this.pending);
|
||||
}
|
||||
});
|
||||
function serverDiagnostics() {
|
||||
return {
|
||||
clientCapabilities: { textDocument: { publishDiagnostics: { versionSupport: true } } },
|
||||
|
@ -29567,7 +29607,8 @@ ${text}</tr>
|
|||
})));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
},
|
||||
editorExtension: autoSync
|
||||
};
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -83,21 +83,18 @@ function connect() {
|
|||
$("popConnect").hidePopover();
|
||||
connectStatus(true);
|
||||
let extLsp = client.plugin(file, "xquery");
|
||||
let up = lsp.debouncedChangeListener({
|
||||
delay: 750,
|
||||
onChange: (content, state) => {
|
||||
console.log('Debounced change detected:');
|
||||
client.sync();
|
||||
}
|
||||
})
|
||||
|
||||
view.dispatch({
|
||||
effects: lsp.StateEffect.appendConfig.of(
|
||||
[lsp.linter(null, { autoPanel: true }), ...extLsp, up,
|
||||
lsp.keymap.of([...lsp.formatKeymap])])
|
||||
[lsp.linter(null, { autoPanel: true }), ...extLsp,
|
||||
lsp.keymap.of([...lsp.formatKeymap])])
|
||||
})
|
||||
})
|
||||
.catch(r => { connectStatus(false); alert("connection failed: " + server) });
|
||||
.catch(e => {
|
||||
console.log(e);
|
||||
connectStatus(false);
|
||||
alert("connection failed: " + server)
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
@ -114,7 +111,6 @@ function connectStatus(bool) {
|
|||
function incoming(msg) {
|
||||
const rpc = JSON.parse(msg);
|
||||
log(rpc);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue