ace-linters 0.13.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  Ace linters is lsp client for Ace editor. It comes with large number of preconfigured easy to use in browser servers.
4
4
 
5
- Example client with pre-defined services:
5
+ If you're uncertain about integrating ace-linters, consult [our diagram on the GitHub Wiki](https://github.com/mkslanc/ace-linters/wiki/Usage-Scenarios-Overview) for a quick setup guide
6
+ tailored to your needs.
7
+
8
+ ### Example client with pre-defined services:
6
9
  ```javascript
7
10
  import * as ace from "ace-code";
8
11
  import {Mode as TypescriptMode} from "ace-code/src/mode/typescript";
@@ -21,11 +24,47 @@ let languageProvider = LanguageProvider.create(worker);
21
24
 
22
25
  // Register the editor with the language provider
23
26
  languageProvider.registerEditor(editor);
24
-
25
27
  ```
26
28
 
27
29
  [Example webworker.js with all services](https://github.com/mkslanc/ace-linters/blob/main/packages/demo/webworker-lsp/webworker.ts)
28
30
 
31
+ ## New Features in 1.0.0
32
+
33
+ - `registerServer` method in `ServiceManager` enables management of both services and servers on the web worker's side.
34
+ Just add new servers to your webworker like this:
35
+ ```javascript
36
+ manager.registerServer("astro", {
37
+ module: () => import("ace-linters/build/language-client"),
38
+ modes: "astro",
39
+ type: "socket", // "socket|worker"
40
+ socket: new WebSocket("ws://127.0.0.1:3030/astro"),
41
+ initializationOptions: {
42
+ typescript: {
43
+ tsdk: "node_modules/typescript/lib"
44
+ }
45
+ }
46
+ });
47
+ ```
48
+ - Multiple servers management on main thread. Just register servers like this:
49
+ ```javascript
50
+ let servers = [
51
+ {
52
+ module: () => import("ace-linters/build/language-client"),
53
+ modes: "astro",
54
+ type: "socket",
55
+ socket: new WebSocket("ws://127.0.0.1:3030/astro"),
56
+ },
57
+ {
58
+ module: () => import("ace-linters/build/language-client"),
59
+ modes: "svelte",
60
+ type: "socket",
61
+ socket: new WebSocket("ws://127.0.0.1:3030/svelte"),
62
+ }
63
+ ]
64
+ let languageProvider = AceLanguageClient.for(servers);
65
+ ```
66
+ - **Breaking change:** `AceLanguageClient.for` interface was changed
67
+
29
68
  ## Example using script tag from CDN
30
69
  ```html
31
70
  <script src="https://www.unpkg.com/ace-builds@latest/src-noconflict/ace.js"></script>
@@ -48,7 +87,7 @@ languageProvider.registerEditor(editor);
48
87
  ```
49
88
 
50
89
 
51
- Ace linters works in two modes: **WebSockets** and **WebWorkers**.
90
+ Ace linters client currently supports two modes: **WebSockets** and **WebWorkers**.
52
91
 
53
92
  ## Usage with WebSocket (JSON-RPC)
54
93
 
@@ -62,15 +101,19 @@ import {Mode as JSONMode} from "ace-code/src/mode/json"; //any mode you want
62
101
  import {AceLanguageClient} from "ace-linters/build/ace-language-client";
63
102
 
64
103
  // Create a web socket
65
- const webSocket = new WebSocket("ws://localhost:3000/exampleServer"); // address of your websocket server
66
-
104
+ const serverData = {
105
+ module: () => import("ace-linters/build/language-client"),
106
+ modes: "json|json5",
107
+ type: "socket",
108
+ socket: new WebSocket("ws://127.0.0.1:3000/exampleServer"), // address of your websocket server
109
+ }
67
110
  // Create an Ace editor
68
111
  let editor = ace.edit("container", {
69
112
  mode: new JSONMode() // Set the mode of the editor to JSON
70
113
  });
71
114
 
72
115
  // Create a language provider for web socket
73
- let languageProvider = AceLanguageClient.for(webSocket);
116
+ let languageProvider = AceLanguageClient.for(serverData);
74
117
 
75
118
  // Register the editor with the language provider
76
119
  languageProvider.registerEditor(editor);
@@ -91,13 +134,19 @@ import {AceLanguageClient} from "ace-linters/build/ace-language-client";
91
134
 
92
135
  // Create a web worker
93
136
  let worker = new Worker(new URL('./webworker.js', import.meta.url));
137
+ const serverData = {
138
+ module: () => import("ace-linters/build/language-client"),
139
+ modes: "json",
140
+ type: "webworker",
141
+ worker: worker,
142
+ }
94
143
 
95
144
  // Create an Ace editor
96
145
  let editor = ace.edit("container", {
97
146
  mode: new TypescriptMode() // Set the mode of the editor to Typescript
98
147
  });
99
148
 
100
- // Create a language provider for web worker (
149
+ // Create a language provider for web worker
101
150
  let languageProvider = AceLanguageClient.for(worker);
102
151
 
103
152
  // Register the editor with the language provider
@@ -118,7 +167,7 @@ languageProvider.registerEditor(editor);
118
167
  - Completions
119
168
  - Signature Help
120
169
 
121
- [Full list of capabilities](https://github.com/mkslanc/ace-linters/blob/main/Capabilities.md)
170
+ [Full list of capabilities](https://github.com/mkslanc/ace-linters/wiki/Client-LSP-capabilities)
122
171
 
123
172
  ## Supported languages
124
173
  Ace linters supports the following languages by default with webworkers approach: