[mod] merge lsp-web-poc

This commit is contained in:
Andy Bunce 2025-07-11 15:16:28 +01:00
parent 368930cbf2
commit 1c758567d4
18 changed files with 1243 additions and 2 deletions

19
src/server/html/acego.js Normal file
View file

@ -0,0 +1,19 @@
import * as ace from "ace-builds/ace";
import {Mode as JSONMode} from "ace-builds/src/mode/json"; // any mode you want
import {AceLanguageClient} from "ace-linters/build/ace-language-client";
const serverData = {
module: () => import("ace-linters/build/language-client"),
modes: "json|json5",
type: "socket",
socket: new WebSocket("ws://127.0.0.1:3000/ws/lsp"), // your websocket server address
}
// Create an Ace editor
let editor = ace.edit("container", {
mode: new JSONMode()
});
// Create a language provider for WebSocket
let languageProvider = AceLanguageClient.for(serverData);
languageProvider.registerEditor(editor);

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<script type="importmap">
{
"imports": {
"ace-builds": "https://www.unpkg.com/ace-builds@latest/src-noconflict"
}
}
</script>
<script src="https://www.unpkg.com/ace-builds@latest/src-noconflict/ace.js"></script>
<script src="https://www.unpkg.com/ace-builds@latest/src-noconflict/ext-language_tools.js"></script>
<script src="https://www.unpkg.com/ace-linters@latest/build/ace-linters.js"></script>
</head>
<body>
<div id="editor" style="height: 100px">some text</div>
<script>
ace.require("ace/ext/language_tools"); //To allow autocompletion
var editor = ace.edit("editor", {
enableBasicAutocompletion: true,
enableLiveAutocompletion: true,
mode: "ace/mode/xml"
});
var provider = LanguageProvider.fromCdn("https://www.unpkg.com/ace-linters@latest/build/");
provider.registerEditor(editor);
</script>
</body>
</html>

39
src/server/html/t2.html Normal file
View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Editor</title>
<style type="text/css" media="screen">
body {
overflow: hidden;
}
#editor {
margin: 0;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<pre id="editor">function foo(items) {
var i;
for (i = 0; i &lt; items.length; i++) {
alert("Ace Rocks " + items[i]);
}
}</pre>
<script src="src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.session.setMode("ace/mode/javascript");
</script>
</body>
</html>