@mirascript/monaco 0.1.14 → 0.1.16
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/dist/basic/index.js +1 -1
- package/dist/basic/tokens-provider.d.ts.map +1 -1
- package/dist/{chunk-2WJX66QO.js → chunk-B7ONXYAM.js} +13 -10
- package/dist/chunk-B7ONXYAM.js.map +6 -0
- package/dist/constants.d.ts +1 -6
- package/dist/constants.d.ts.map +1 -1
- package/dist/lsp/diagnostics.d.ts +1 -1
- package/dist/lsp/diagnostics.d.ts.map +1 -1
- package/dist/lsp/index.js +140 -82
- package/dist/lsp/index.js.map +2 -2
- package/dist/lsp/providers/base.d.ts +7 -3
- package/dist/lsp/providers/base.d.ts.map +1 -1
- package/dist/lsp/providers/definition-reference-provider.d.ts.map +1 -1
- package/dist/lsp/providers/semantic-tokens-provider.d.ts.map +1 -1
- package/dist/lsp/utils.d.ts +2 -1
- package/dist/lsp/utils.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/basic/tokens-provider.ts +11 -3
- package/src/constants.ts +1 -7
- package/src/lsp/diagnostics.ts +64 -21
- package/src/lsp/providers/base.ts +70 -45
- package/src/lsp/providers/completion-item-provider.ts +2 -2
- package/src/lsp/providers/definition-reference-provider.ts +1 -2
- package/src/lsp/providers/hover-provider.ts +3 -3
- package/src/lsp/providers/semantic-tokens-provider.ts +8 -5
- package/src/lsp/providers/signature-help-provider.ts +1 -1
- package/src/lsp/utils.ts +4 -2
- package/dist/chunk-2WJX66QO.js.map +0 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VmContext } from '@mirascript/mirascript';
|
|
1
|
+
import type { VmContext, VmAny } from '@mirascript/mirascript';
|
|
2
2
|
import { DefaultVmContext, type IRange } from '@mirascript/mirascript/subtle';
|
|
3
3
|
import type { VmContextProvider } from '../../index.js';
|
|
4
4
|
import { type editor, Emitter, type IEvent, type IPosition } from '../../monaco-api.js';
|
|
@@ -14,11 +14,17 @@ export function setContextProvider(provider: VmContextProvider | undefined): voi
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/** 提供全局变量的执行上下文 */
|
|
17
|
-
type MonacoContext = Readonly<Required<Pick<VmContext, 'get' | 'describe' | 'keys' | 'has'
|
|
17
|
+
export type MonacoContext = Readonly<Required<Pick<VmContext, 'get' | 'describe' | 'keys' | 'has'>>> & {
|
|
18
|
+
/** 获取指定 key 的值,找不到时返回 undefined */
|
|
19
|
+
getOrUndefined(key: string): VmAny;
|
|
20
|
+
};
|
|
18
21
|
const DEFAULT_MONACO_CONTEXT: MonacoContext = Object.freeze({
|
|
19
22
|
get(key: string) {
|
|
20
23
|
return DefaultVmContext.get(key);
|
|
21
24
|
},
|
|
25
|
+
getOrUndefined(key: string) {
|
|
26
|
+
return DefaultVmContext.has(key) ? DefaultVmContext.get(key) : undefined;
|
|
27
|
+
},
|
|
22
28
|
has(key: string) {
|
|
23
29
|
return DefaultVmContext.has(key);
|
|
24
30
|
},
|
|
@@ -29,60 +35,79 @@ const DEFAULT_MONACO_CONTEXT: MonacoContext = Object.freeze({
|
|
|
29
35
|
return undefined;
|
|
30
36
|
},
|
|
31
37
|
});
|
|
38
|
+
/** 获取执行上下文 */
|
|
39
|
+
async function getContextImpl(model: editor.ITextModel, clearCache: () => void): Promise<MonacoContext> {
|
|
40
|
+
try {
|
|
41
|
+
const context = await contextProvider?.(model);
|
|
42
|
+
if (!context) {
|
|
43
|
+
return DEFAULT_MONACO_CONTEXT;
|
|
44
|
+
}
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
const monacoContext: MonacoContext = Object.freeze({
|
|
47
|
+
get(key: string) {
|
|
48
|
+
try {
|
|
49
|
+
return context.get(key);
|
|
50
|
+
} catch {
|
|
51
|
+
clearCache();
|
|
52
|
+
return DEFAULT_MONACO_CONTEXT.get(key);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
getOrUndefined(key: string) {
|
|
56
|
+
try {
|
|
57
|
+
return context.has(key) ? context.get(key) : undefined;
|
|
58
|
+
} catch {
|
|
59
|
+
clearCache();
|
|
60
|
+
return DEFAULT_MONACO_CONTEXT.getOrUndefined(key);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
has(key: string) {
|
|
64
|
+
try {
|
|
65
|
+
return context.has(key);
|
|
66
|
+
} catch {
|
|
67
|
+
clearCache();
|
|
68
|
+
return DEFAULT_MONACO_CONTEXT.has(key);
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
keys() {
|
|
72
|
+
try {
|
|
73
|
+
return context.keys();
|
|
74
|
+
} catch {
|
|
75
|
+
clearCache();
|
|
76
|
+
return DEFAULT_MONACO_CONTEXT.keys();
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
describe(key: string) {
|
|
80
|
+
try {
|
|
81
|
+
return context.describe?.(key) || undefined;
|
|
82
|
+
} catch {
|
|
83
|
+
clearCache();
|
|
84
|
+
return DEFAULT_MONACO_CONTEXT.describe(key);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
return monacoContext;
|
|
89
|
+
} catch (ex) {
|
|
90
|
+
// eslint-disable-next-line no-console
|
|
91
|
+
console.error('Error getting MiraScript Monaco context:', ex);
|
|
92
|
+
return DEFAULT_MONACO_CONTEXT;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
let cachedContext: readonly [editor.ITextModel, Promise<MonacoContext>] | null = null;
|
|
34
96
|
/** 获取执行上下文 */
|
|
35
|
-
async function getContext(model: editor.ITextModel): Promise<MonacoContext> {
|
|
97
|
+
export async function getContext(model: editor.ITextModel): Promise<MonacoContext> {
|
|
36
98
|
if (cachedContext?.[0] === model) {
|
|
37
99
|
return cachedContext[1];
|
|
38
100
|
}
|
|
39
|
-
const context = await contextProvider?.(model);
|
|
40
|
-
if (!context) {
|
|
41
|
-
return DEFAULT_MONACO_CONTEXT;
|
|
42
|
-
}
|
|
43
|
-
const monacoContext: MonacoContext = Object.freeze({
|
|
44
|
-
get(key: string) {
|
|
45
|
-
try {
|
|
46
|
-
return context.get(key);
|
|
47
|
-
} catch {
|
|
48
|
-
clearCache();
|
|
49
|
-
return DefaultVmContext.get(key);
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
has(key: string) {
|
|
53
|
-
try {
|
|
54
|
-
return context.has(key);
|
|
55
|
-
} catch {
|
|
56
|
-
clearCache();
|
|
57
|
-
return DefaultVmContext.has(key);
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
keys() {
|
|
61
|
-
try {
|
|
62
|
-
return context.keys();
|
|
63
|
-
} catch {
|
|
64
|
-
clearCache();
|
|
65
|
-
return DefaultVmContext.keys();
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
describe(key: string) {
|
|
69
|
-
try {
|
|
70
|
-
return context.describe?.(key) || undefined;
|
|
71
|
-
} catch {
|
|
72
|
-
clearCache();
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
const cache = [model, monacoContext] as const;
|
|
78
|
-
cachedContext = cache;
|
|
79
101
|
const clearCache = () => {
|
|
80
102
|
if (cachedContext === cache) {
|
|
81
103
|
cachedContext = null;
|
|
82
104
|
}
|
|
83
105
|
};
|
|
106
|
+
const context = getContextImpl(model, clearCache);
|
|
107
|
+
const cache = [model, context] as const;
|
|
108
|
+
cachedContext = cache;
|
|
84
109
|
setTimeout(clearCache, 100);
|
|
85
|
-
return
|
|
110
|
+
return context;
|
|
86
111
|
}
|
|
87
112
|
|
|
88
113
|
/** 提供编辑器 LSP 支持 */
|
|
@@ -292,7 +292,7 @@ export class CompletionItemProvider extends Provider implements languages.Comple
|
|
|
292
292
|
continue;
|
|
293
293
|
}
|
|
294
294
|
|
|
295
|
-
const doc = global.describe
|
|
295
|
+
const doc = global.describe(key);
|
|
296
296
|
suggestions.push({
|
|
297
297
|
insertText: localKeys.has(key) ? `global.${key}` : key, // 如果有同名局部变量,使用 global. 前缀
|
|
298
298
|
filterText: filterText(key, char),
|
|
@@ -355,7 +355,7 @@ export class CompletionItemProvider extends Provider implements languages.Comple
|
|
|
355
355
|
}
|
|
356
356
|
const vmGlobal = await this.getContext(model);
|
|
357
357
|
fields.pop(); // 移除最后一个部分,因为它是当前输入位置的字段名
|
|
358
|
-
const value = getDeep(vmGlobal
|
|
358
|
+
const value = getDeep(vmGlobal, def.def.name, fields);
|
|
359
359
|
if (value == null || typeof value != 'object') {
|
|
360
360
|
return [];
|
|
361
361
|
}
|
|
@@ -34,8 +34,7 @@ export class DefinitionReferenceProvider
|
|
|
34
34
|
const { globalModel } = this;
|
|
35
35
|
const globals = await this.getContext(model);
|
|
36
36
|
const [name, ...access] = path;
|
|
37
|
-
|
|
38
|
-
const value = getDeep(globals.get(name!), access);
|
|
37
|
+
const value = getDeep(globals, name!, access);
|
|
39
38
|
if (value === undefined) return undefined;
|
|
40
39
|
const { script, doc } = valueDoc(path.at(-1)!, value, 'declare');
|
|
41
40
|
const code = ['', ...docComment(doc), script, ''];
|
|
@@ -15,13 +15,13 @@ export class HoverProvider extends Provider implements languages.HoverProvider {
|
|
|
15
15
|
let range: IRange | undefined;
|
|
16
16
|
if ('name' in def) {
|
|
17
17
|
const globals = await this.getContext(model);
|
|
18
|
-
const value = globals.
|
|
18
|
+
const value = globals.getOrUndefined(def.name);
|
|
19
19
|
const { script, doc } = valueDoc(def.name, value, 'hint');
|
|
20
20
|
contents.push({ value: codeblock(`\0(global) ${script}`) });
|
|
21
21
|
for (const d of doc) {
|
|
22
22
|
contents.push({ value: d });
|
|
23
23
|
}
|
|
24
|
-
const describe = globals.describe
|
|
24
|
+
const describe = globals.describe(def.name);
|
|
25
25
|
if (describe) {
|
|
26
26
|
contents.push({ value: describe });
|
|
27
27
|
}
|
|
@@ -115,7 +115,7 @@ export class HoverProvider extends Provider implements languages.HoverProvider {
|
|
|
115
115
|
return undefined;
|
|
116
116
|
}
|
|
117
117
|
const vmGlobal = await this.getContext(model);
|
|
118
|
-
const value = getDeep(vmGlobal
|
|
118
|
+
const value = getDeep(vmGlobal, def.name, fields);
|
|
119
119
|
if (value == null) return undefined;
|
|
120
120
|
const lastField = fields.pop()!;
|
|
121
121
|
const { script, doc } = valueDoc(lastField, value, 'field');
|
|
@@ -66,12 +66,15 @@ export class DocumentSemanticTokensProvider extends Provider implements language
|
|
|
66
66
|
const id = model.getValueInRange(range);
|
|
67
67
|
if (id.startsWith('@')) {
|
|
68
68
|
tokenType = TokenType.CONSTANT;
|
|
69
|
-
} else if (isVmFunction(globals.get(id))) {
|
|
70
|
-
tokenType = TokenType.FUNCTION;
|
|
71
|
-
} else if (isVmModule(globals.get(id))) {
|
|
72
|
-
tokenType = TokenType.MODULE;
|
|
73
69
|
} else {
|
|
74
|
-
|
|
70
|
+
const val = globals.getOrUndefined(id);
|
|
71
|
+
if (isVmFunction(val)) {
|
|
72
|
+
tokenType = TokenType.FUNCTION;
|
|
73
|
+
} else if (isVmModule(val)) {
|
|
74
|
+
tokenType = TokenType.MODULE;
|
|
75
|
+
} else {
|
|
76
|
+
tokenType = TokenType.GLOBAL;
|
|
77
|
+
}
|
|
75
78
|
}
|
|
76
79
|
break;
|
|
77
80
|
}
|
|
@@ -51,7 +51,7 @@ export class SignatureHelpProvider extends Provider implements languages.Signatu
|
|
|
51
51
|
if ('name' in callableInfo.def.def) {
|
|
52
52
|
const { name } = callableInfo.def.def;
|
|
53
53
|
const globals = await this.getContext(model);
|
|
54
|
-
const callable = getDeep(globals
|
|
54
|
+
const callable = getDeep(globals, name, callableInfo.fields);
|
|
55
55
|
const info = getVmFunctionInfo(callable);
|
|
56
56
|
if (!info) return undefined;
|
|
57
57
|
sig = { ...fnSignature(name, info), name, summary: info.summary };
|
package/src/lsp/utils.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from '@mirascript/mirascript';
|
|
18
18
|
import { operations, serializeRecordKey, serializeString } from '@mirascript/mirascript/subtle';
|
|
19
19
|
import type { LocalDefinition } from './compile-result.js';
|
|
20
|
+
import type { MonacoContext } from './providers/base.js';
|
|
20
21
|
|
|
21
22
|
/** 参数签名 */
|
|
22
23
|
export type ParamSignature = [name: string, sig: string, doc: string];
|
|
@@ -333,8 +334,9 @@ export function valueDoc(
|
|
|
333
334
|
}
|
|
334
335
|
|
|
335
336
|
/** 获取深层属性 */
|
|
336
|
-
export function getDeep(
|
|
337
|
-
|
|
337
|
+
export function getDeep(globals: MonacoContext, name: string, path: readonly string[]): VmAny {
|
|
338
|
+
if (!globals.has(name)) return undefined;
|
|
339
|
+
let current: VmAny = globals.get(name);
|
|
338
340
|
for (const key of path) {
|
|
339
341
|
if (current == null) return current;
|
|
340
342
|
if (!operations.$Has(current, key)) return undefined;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/constants.ts", "../src/basic/language-configuration.ts", "../src/basic/tokens-provider.ts", "../src/basic/index.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|