@lemmabase/lemma-engine 0.8.12 → 0.8.14
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 +24 -6
- package/lemma.bindings.d.ts +45 -24
- package/lemma.bindings.js +255 -158
- package/lemma.d.ts +166 -18
- package/lemma.iife.js +1 -1
- package/lemma_bg.wasm +0 -0
- package/lemma_bg.wasm.d.ts +10 -6
- package/lsp-client.js +9 -0
- package/monaco.js +98 -12
- package/package.json +1 -1
package/lemma_bg.wasm
CHANGED
|
Binary file
|
package/lemma_bg.wasm.d.ts
CHANGED
|
@@ -18,16 +18,20 @@ export const intounderlyingsink_write: (a: number, b: number) => number;
|
|
|
18
18
|
export const intounderlyingsource_cancel: (a: number) => void;
|
|
19
19
|
export const intounderlyingsource_pull: (a: number, b: number) => number;
|
|
20
20
|
export const __wbg_engine_free: (a: number, b: number) => void;
|
|
21
|
+
export const wasmengine_fetch: (a: number, b: number, c: number) => number;
|
|
21
22
|
export const wasmengine_format: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
23
|
+
export const wasmengine_format_repository: (a: number, b: number, c: number, d: number) => void;
|
|
22
24
|
export const wasmengine_invert: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
|
|
23
25
|
export const wasmengine_list: (a: number, b: number) => void;
|
|
24
|
-
export const wasmengine_load: (a: number, b: number, c: number, d: number, e: number) =>
|
|
26
|
+
export const wasmengine_load: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
|
|
27
|
+
export const wasmengine_load_batch: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
25
28
|
export const wasmengine_new: () => number;
|
|
26
|
-
export const
|
|
27
|
-
export const
|
|
28
|
-
export const
|
|
29
|
-
export const
|
|
30
|
-
export const
|
|
29
|
+
export const wasmengine_repositories: (a: number, b: number) => void;
|
|
30
|
+
export const wasmengine_run: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => void;
|
|
31
|
+
export const wasmengine_schema: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
|
|
32
|
+
export const __wasm_bindgen_func_elem_11787: (a: number, b: number, c: number, d: number) => void;
|
|
33
|
+
export const __wasm_bindgen_func_elem_2722: (a: number, b: number, c: number, d: number) => void;
|
|
34
|
+
export const __wasm_bindgen_func_elem_11799: (a: number, b: number, c: number, d: number) => void;
|
|
31
35
|
export const __wbindgen_export: (a: number, b: number) => number;
|
|
32
36
|
export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
|
33
37
|
export const __wbindgen_export3: (a: number) => void;
|
package/lsp-client.js
CHANGED
|
@@ -154,6 +154,15 @@ export class LspClient {
|
|
|
154
154
|
});
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Notify the server that a file was closed.
|
|
159
|
+
*/
|
|
160
|
+
didClose(uri) {
|
|
161
|
+
this.sendNotification('textDocument/didClose', {
|
|
162
|
+
textDocument: { uri: uri },
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
157
166
|
/**
|
|
158
167
|
* Request textDocument/formatting from the server.
|
|
159
168
|
* Returns an array of TextEdit.
|
package/monaco.js
CHANGED
|
@@ -3,34 +3,120 @@
|
|
|
3
3
|
* Syntax highlighting is provided by the Rust LSP via semantic tokens.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
// Must stay in exact index order with TOKEN_TYPES in engine/lsp/src/semantic_tokens.rs.
|
|
6
7
|
export const SEMANTIC_TOKEN_TYPES = [
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
'
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'
|
|
13
|
-
'
|
|
14
|
-
'operator',
|
|
15
|
-
'
|
|
16
|
-
'
|
|
8
|
+
'namespace', // 0 — repo keyword + qualifier
|
|
9
|
+
'class', // 1 — spec keyword + name
|
|
10
|
+
'property', // 2 — data keyword + field path (before colon)
|
|
11
|
+
'function', // 3 — rule keyword + rule name (colon is punctuation)
|
|
12
|
+
'string', // 4 — values in rule body / defaults
|
|
13
|
+
'comment', // 5
|
|
14
|
+
'keyword', // 6 — type keywords, math functions
|
|
15
|
+
'operator', // 7
|
|
16
|
+
'controlKeyword', // 8 — unless, then, uses, and, not, from, in, veto, …
|
|
17
|
+
'dataBody', // 9 — data block after the colon
|
|
18
|
+
'punctuation', // 10 — colons after data field and rule name
|
|
19
|
+
'reference', // 11 — identifiers in spec/rule body
|
|
17
20
|
];
|
|
18
21
|
|
|
22
|
+
export const SEMANTIC_TOKEN_MODIFIERS = [];
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Monaco theme rules for Lemma semantic tokens.
|
|
26
|
+
*
|
|
27
|
+
* Monaco standalone resolves semantic token colors via its TextMate rule
|
|
28
|
+
* matcher: getTokenStyleMetadata calls _match(type + '.' + modifier).
|
|
29
|
+
* Rules must therefore use the token type name (with optional .modifier suffix)
|
|
30
|
+
* and foreground values WITHOUT a leading '#'.
|
|
31
|
+
*
|
|
32
|
+
* Use in monaco.editor.defineTheme: { ..., rules: LEMMA_MONACO_RULES }
|
|
33
|
+
*/
|
|
34
|
+
export const LEMMA_MONACO_RULES = [
|
|
35
|
+
{ token: 'namespace', foreground: 'BD8EBB' }, // repo keyword + qualifier
|
|
36
|
+
{ token: 'class', foreground: '5DBDAA' }, // spec keyword + name
|
|
37
|
+
{ token: 'property', foreground: 'A3B5DF' }, // data header (keyword + field)
|
|
38
|
+
{ token: 'function', foreground: 'A3B5DF' }, // rule header (keyword + name)
|
|
39
|
+
{ token: 'string', foreground: 'D07868' }, // same as dataBody (values / literals bucket)
|
|
40
|
+
{ token: 'comment', foreground: '595945' },
|
|
41
|
+
{ token: 'keyword', foreground: '6BA0C2' }, // type + math keywords
|
|
42
|
+
{ token: 'operator', foreground: '80807A' },
|
|
43
|
+
{ token: 'controlKeyword', foreground: '726B83' }, // unless, then, uses
|
|
44
|
+
{ token: 'dataBody', foreground: 'D07868' }, // data block after colon
|
|
45
|
+
{ token: 'punctuation', foreground: '79987F' }, // declaration colons
|
|
46
|
+
{ token: 'reference', foreground: 'A59582' }, // paths, aliases, …
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Semantic token colours (Lemma dark theme).
|
|
51
|
+
* Monaco uses dot notation for modifier-qualified rules (type.modifier).
|
|
52
|
+
*/
|
|
53
|
+
export const LEMMA_SEMANTIC_COLORS = {
|
|
54
|
+
'namespace': '#BD8EBB', // repo
|
|
55
|
+
'class': '#5DBDAA', // spec
|
|
56
|
+
'property': '#A3B5DF', // data header
|
|
57
|
+
'function': '#A3B5DF', // rule header
|
|
58
|
+
'string': '#D07868', // same hex as dataBody
|
|
59
|
+
'comment': '#595945',
|
|
60
|
+
'keyword': '#6BA0C2', // type + math keywords
|
|
61
|
+
'operator': '#80807A',
|
|
62
|
+
'controlKeyword': '#726B83',
|
|
63
|
+
'dataBody': '#D07868', // data after colon
|
|
64
|
+
'punctuation': '#79987F', // data/rule colons
|
|
65
|
+
'reference': '#A59582',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Complete Monaco theme built on the Lemma brand.
|
|
70
|
+
* Pass directly to monaco.editor.defineTheme:
|
|
71
|
+
*
|
|
72
|
+
* monaco.editor.defineTheme('lemma-dark', LEMMA_MONACO_THEME);
|
|
73
|
+
* monaco.editor.setTheme('lemma-dark');
|
|
74
|
+
*
|
|
75
|
+
* The editor background is set to transparent so the obsidian stone
|
|
76
|
+
* surface from the page shows through unbroken (matching .lemma-editor CSS).
|
|
77
|
+
* Set colors['editor.background'] to '#0B0B09' if you need an opaque editor.
|
|
78
|
+
*/
|
|
79
|
+
export const LEMMA_MONACO_THEME = {
|
|
80
|
+
base: 'vs-dark',
|
|
81
|
+
inherit: true,
|
|
82
|
+
rules: LEMMA_MONACO_RULES,
|
|
83
|
+
colors: {
|
|
84
|
+
// Background transparent — stone surface shows through.
|
|
85
|
+
// If you need opaque, override with '#0B0B09'.
|
|
86
|
+
'editor.background': '#0B0B0900',
|
|
87
|
+
'editor.foreground': '#EFE4C8', // soft ivory
|
|
88
|
+
'editorLineNumber.foreground': '#4A4A42',
|
|
89
|
+
'editorLineNumber.activeForeground': '#8A8A78',
|
|
90
|
+
'editorCursor.foreground': '#C2B295', // sandstone
|
|
91
|
+
'editor.selectionBackground': '#C2B29530', // sandstone at ~19%
|
|
92
|
+
'editor.lineHighlightBackground': '#27272410', // offset, very subtle
|
|
93
|
+
'editorIndentGuide.background1': '#27272460',
|
|
94
|
+
'editorIndentGuide.activeBackground1': '#C2B29550',
|
|
95
|
+
'editorBracketMatch.background': '#C2B29530',
|
|
96
|
+
'editorBracketMatch.border': '#C2B295',
|
|
97
|
+
'scrollbarSlider.background': '#C1C2BD20',
|
|
98
|
+
'scrollbarSlider.hoverBackground': '#C1C2BD40',
|
|
99
|
+
'scrollbarSlider.activeBackground': '#C1C2BD60',
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
19
103
|
export function registerLemmaLanguage(monaco) {
|
|
20
104
|
monaco.languages.register({ id: 'lemma' });
|
|
21
105
|
|
|
22
106
|
monaco.languages.setLanguageConfiguration('lemma', {
|
|
23
107
|
comments: { blockComment: ['"""', '"""'] },
|
|
24
|
-
brackets: [['(', ')'], ['[', ']']],
|
|
108
|
+
// brackets: [['(', ')'], ['[', ']']],
|
|
25
109
|
autoClosingPairs: [
|
|
26
110
|
{ open: '(', close: ')' },
|
|
27
111
|
{ open: '[', close: ']' },
|
|
28
112
|
{ open: '"', close: '"' },
|
|
113
|
+
{ open: '"""', close: '"""' },
|
|
29
114
|
],
|
|
30
115
|
surroundingPairs: [
|
|
31
116
|
{ open: '(', close: ')' },
|
|
32
117
|
{ open: '[', close: ']' },
|
|
33
118
|
{ open: '"', close: '"' },
|
|
119
|
+
{ open: '"""', close: '"""' },
|
|
34
120
|
],
|
|
35
121
|
});
|
|
36
122
|
}
|
|
@@ -46,7 +132,7 @@ export function registerLemmaLanguage(monaco) {
|
|
|
46
132
|
export function registerLspProviders(monaco, lspClient) {
|
|
47
133
|
monaco.languages.registerDocumentSemanticTokensProvider('lemma', {
|
|
48
134
|
getLegend() {
|
|
49
|
-
return { tokenTypes: SEMANTIC_TOKEN_TYPES, tokenModifiers:
|
|
135
|
+
return { tokenTypes: SEMANTIC_TOKEN_TYPES, tokenModifiers: SEMANTIC_TOKEN_MODIFIERS };
|
|
50
136
|
},
|
|
51
137
|
async provideDocumentSemanticTokens(model) {
|
|
52
138
|
const uri = model.uri.toString();
|