@mirascript/monaco 0.1.40 → 0.1.42
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-SFU27XXU.js → chunk-QENEDDTR.js} +14 -12
- package/dist/chunk-QENEDDTR.js.map +6 -0
- package/dist/lsp/index.d.ts +2 -1
- package/dist/lsp/index.d.ts.map +1 -1
- package/dist/lsp/index.js +230 -94
- package/dist/lsp/index.js.map +3 -3
- package/dist/lsp/monaco-utils.d.ts +11 -0
- package/dist/lsp/monaco-utils.d.ts.map +1 -1
- package/dist/lsp/providers/code-action-provider.d.ts.map +1 -1
- package/dist/lsp/providers/code-lens-provider.d.ts +12 -0
- package/dist/lsp/providers/code-lens-provider.d.ts.map +1 -0
- package/dist/lsp/providers/hover-provider.d.ts.map +1 -1
- package/dist/lsp/providers/semantic-tokens-provider.d.ts.map +1 -1
- package/dist/lsp/utils.d.ts +4 -0
- package/dist/lsp/utils.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/basic/tokens-provider.ts +9 -12
- package/src/lsp/index.ts +4 -0
- package/src/lsp/monaco-utils.ts +16 -0
- package/src/lsp/providers/code-action-provider.ts +6 -8
- package/src/lsp/providers/code-lens-provider.ts +39 -0
- package/src/lsp/providers/hover-provider.ts +60 -29
- package/src/lsp/providers/semantic-tokens-provider.ts +2 -0
- package/src/lsp/utils.ts +75 -0
- package/dist/chunk-SFU27XXU.js.map +0 -6
|
@@ -40,7 +40,7 @@ function createCodeAction(
|
|
|
40
40
|
if (current === uppercase || !Object.is(context.getOrUndefined(current), context.getOrUndefined(uppercase))) {
|
|
41
41
|
return undefined;
|
|
42
42
|
}
|
|
43
|
-
action.title = '
|
|
43
|
+
action.title = '转换为大写常量';
|
|
44
44
|
action.kind = 'quickfix';
|
|
45
45
|
action.edit = edits({
|
|
46
46
|
range,
|
|
@@ -73,7 +73,7 @@ function createCodeAction(
|
|
|
73
73
|
// to "$((...))" to represent a record literal
|
|
74
74
|
fixed = `(${fixed})`;
|
|
75
75
|
}
|
|
76
|
-
action.title =
|
|
76
|
+
action.title = `转换为使用圆括号的记录字面量`;
|
|
77
77
|
action.kind = 'quickfix';
|
|
78
78
|
action.edit = edits({
|
|
79
79
|
range,
|
|
@@ -102,7 +102,7 @@ function createCodeAction(
|
|
|
102
102
|
if (!fixed) {
|
|
103
103
|
return undefined;
|
|
104
104
|
}
|
|
105
|
-
action.title =
|
|
105
|
+
action.title = `转换为 '${fixed}' 运算符`;
|
|
106
106
|
action.kind = 'quickfix';
|
|
107
107
|
action.edit = edits({
|
|
108
108
|
range: range0,
|
|
@@ -120,7 +120,7 @@ function createCodeAction(
|
|
|
120
120
|
if (fixed === current) {
|
|
121
121
|
return undefined;
|
|
122
122
|
}
|
|
123
|
-
action.title = '
|
|
123
|
+
action.title = '移除不必要的括号';
|
|
124
124
|
action.kind = 'quickfix';
|
|
125
125
|
action.edit = edits({
|
|
126
126
|
range,
|
|
@@ -164,7 +164,7 @@ function createCodeAction(
|
|
|
164
164
|
return `{ ${expr} }`;
|
|
165
165
|
};
|
|
166
166
|
const fixed = `if ${cond} ${wrapIfNeeded(thenExpr, false)} else ${wrapIfNeeded(elseExpr, true)}`;
|
|
167
|
-
action.title = '
|
|
167
|
+
action.title = '转换为 if 表达式';
|
|
168
168
|
action.kind = 'quickfix';
|
|
169
169
|
action.edit = edits({
|
|
170
170
|
range,
|
|
@@ -208,7 +208,5 @@ export class CodeActionProvider extends Provider implements languages.CodeAction
|
|
|
208
208
|
resolveCodeAction?(
|
|
209
209
|
codeAction: languages.CodeAction,
|
|
210
210
|
token: CancellationToken,
|
|
211
|
-
): languages.ProviderResult<languages.CodeAction
|
|
212
|
-
return codeAction;
|
|
213
|
-
}
|
|
211
|
+
): languages.ProviderResult<languages.CodeAction>;
|
|
214
212
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { DiagnosticCode } from '@mirascript/constants';
|
|
2
|
+
import { Range, type CancellationToken, type editor, type languages } from '../../monaco-api.js';
|
|
3
|
+
import { Provider } from './base.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Code Lens
|
|
7
|
+
*/
|
|
8
|
+
export class CodeLensProvider extends Provider implements languages.CodeLensProvider {
|
|
9
|
+
/** @inheritdoc */
|
|
10
|
+
async provideCodeLenses(
|
|
11
|
+
model: editor.ITextModel,
|
|
12
|
+
token: CancellationToken,
|
|
13
|
+
): Promise<languages.CodeLensList | undefined> {
|
|
14
|
+
const result = await this.getCompileResult(model);
|
|
15
|
+
if (!result) return undefined;
|
|
16
|
+
|
|
17
|
+
const lenses: languages.CodeLens[] = [];
|
|
18
|
+
for (const { definition, references } of result.groupedTags(model).locals) {
|
|
19
|
+
if (definition.code === DiagnosticCode.LocalFunction) {
|
|
20
|
+
lenses.push({
|
|
21
|
+
range: definition.range,
|
|
22
|
+
command: {
|
|
23
|
+
id: 'editor.action.findReferences',
|
|
24
|
+
title: `${references.length} 个引用`,
|
|
25
|
+
arguments: [model.uri, Range.getStartPosition(definition.range)],
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return { lenses };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** @inheritdoc */
|
|
34
|
+
resolveCodeLens?(
|
|
35
|
+
model: editor.ITextModel,
|
|
36
|
+
codeLens: languages.CodeLens,
|
|
37
|
+
token: CancellationToken,
|
|
38
|
+
): languages.ProviderResult<languages.CodeLens>;
|
|
39
|
+
}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import type { editor, CancellationToken, IMarkdownString, IRange, languages, Position } from '../../monaco-api.js';
|
|
2
|
-
import { Provider } from './base.js';
|
|
3
1
|
import { DiagnosticCode } from '@mirascript/constants';
|
|
4
|
-
import {
|
|
2
|
+
import { convert } from '@mirascript/mirascript/subtle';
|
|
3
|
+
import { KEYWORDS as HELP_KEYWORDS, OPERATORS as HELP_OPERATORS } from '@mirascript/help';
|
|
4
|
+
import { REG_BIN, REG_HEX, REG_NUMBER, REG_OCT } from '../../constants.js';
|
|
5
|
+
import type { editor, CancellationToken, IMarkdownString, IRange, languages, Position } from '../../monaco-api.js';
|
|
6
|
+
import { codeblock, getDeep, valueDoc, paramsList, serializeNumber, serializeInteger } from '../utils.js';
|
|
5
7
|
import { tokenAt } from '../monaco-private.js';
|
|
8
|
+
import { rangeAt } from '../monaco-utils.js';
|
|
6
9
|
import type { FieldsAccessAt, VariableAccessAt } from '../compile-result.js';
|
|
7
|
-
import {
|
|
10
|
+
import { Provider } from './base.js';
|
|
8
11
|
|
|
9
12
|
const OPERATOR_TOKENS_DESC = Object.keys(HELP_OPERATORS as Record<string, string>).sort((a, b) => b.length - a.length);
|
|
13
|
+
const REG_NUMBER_ALL_FULL = new RegExp(
|
|
14
|
+
`^(?:${REG_BIN.source}|${REG_OCT.source}|${REG_HEX.source}|${REG_NUMBER.source})$`,
|
|
15
|
+
REG_NUMBER.flags,
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const BIN_MAX = 2 ** 32 - 1;
|
|
19
|
+
const OCT_MAX = 8 ** 18 - 1;
|
|
20
|
+
const HEX_MAX = 16 ** 16 - 1;
|
|
10
21
|
|
|
11
22
|
/** 在指定位置查找操作符 */
|
|
12
23
|
function operatorAt(lineContent: string, column: number): { token: string; range: IRange } | undefined {
|
|
@@ -157,19 +168,49 @@ export class HoverProvider extends Provider implements languages.HoverProvider {
|
|
|
157
168
|
return undefined;
|
|
158
169
|
}
|
|
159
170
|
|
|
160
|
-
if (token?.text
|
|
161
|
-
|
|
162
|
-
HELP_KEYWORDS[token.text as keyof typeof HELP_KEYWORDS]
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
if (token?.text) {
|
|
172
|
+
if (token.text in HELP_KEYWORDS) {
|
|
173
|
+
const doc = HELP_KEYWORDS[token.text as keyof typeof HELP_KEYWORDS];
|
|
174
|
+
return {
|
|
175
|
+
contents: [{ value: doc }],
|
|
176
|
+
range: rangeAt(position, token),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (token.text in HELP_OPERATORS) {
|
|
181
|
+
const doc = HELP_OPERATORS[token.text as keyof typeof HELP_OPERATORS];
|
|
182
|
+
return {
|
|
183
|
+
contents: [{ value: doc }],
|
|
184
|
+
range: rangeAt(position, token),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (REG_NUMBER_ALL_FULL.test(token.text)) {
|
|
189
|
+
const num = convert.toNumber(token.text.replaceAll('_', ''), null);
|
|
190
|
+
if (num == null) return undefined;
|
|
191
|
+
const contents: string[] = [];
|
|
192
|
+
if (Number.isInteger(num)) {
|
|
193
|
+
const abs = Math.abs(num);
|
|
194
|
+
if (abs <= BIN_MAX) {
|
|
195
|
+
contents.push('\0(bin) ' + serializeInteger(num, 2));
|
|
196
|
+
}
|
|
197
|
+
if (abs <= OCT_MAX) {
|
|
198
|
+
contents.push('\0(oct) ' + serializeInteger(num, 8));
|
|
199
|
+
}
|
|
200
|
+
if (abs <= HEX_MAX) {
|
|
201
|
+
contents.push('\0(hex) ' + serializeInteger(num, 16));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (contents.length) {
|
|
205
|
+
contents.unshift(`\0(dec) ` + serializeNumber(num));
|
|
206
|
+
} else {
|
|
207
|
+
contents.push(`\0(number) ` + serializeNumber(num));
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
contents: [{ value: codeblock(contents.join('\n')) }],
|
|
211
|
+
range: rangeAt(position, token),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
173
214
|
}
|
|
174
215
|
|
|
175
216
|
const word = model.getWordAtPosition(position);
|
|
@@ -177,12 +218,7 @@ export class HoverProvider extends Provider implements languages.HoverProvider {
|
|
|
177
218
|
const doc = HELP_KEYWORDS[word.word as keyof typeof HELP_KEYWORDS];
|
|
178
219
|
return {
|
|
179
220
|
contents: [{ value: doc }],
|
|
180
|
-
range:
|
|
181
|
-
startLineNumber: position.lineNumber,
|
|
182
|
-
endLineNumber: position.lineNumber,
|
|
183
|
-
startColumn: word.startColumn,
|
|
184
|
-
endColumn: word.endColumn,
|
|
185
|
-
},
|
|
221
|
+
range: rangeAt(position, word),
|
|
186
222
|
};
|
|
187
223
|
}
|
|
188
224
|
|
|
@@ -192,12 +228,7 @@ export class HoverProvider extends Provider implements languages.HoverProvider {
|
|
|
192
228
|
const doc = HELP_OPERATORS[hit.token as keyof typeof HELP_OPERATORS];
|
|
193
229
|
return {
|
|
194
230
|
contents: [{ value: doc }],
|
|
195
|
-
range:
|
|
196
|
-
startLineNumber: position.lineNumber,
|
|
197
|
-
endLineNumber: position.lineNumber,
|
|
198
|
-
startColumn: hit.range.startColumn,
|
|
199
|
-
endColumn: hit.range.endColumn,
|
|
200
|
-
},
|
|
231
|
+
range: rangeAt(position, hit.range),
|
|
201
232
|
};
|
|
202
233
|
}
|
|
203
234
|
|
|
@@ -109,6 +109,8 @@ export class DocumentSemanticTokensProvider extends Provider implements language
|
|
|
109
109
|
tokenType = TokenType.CONSTANT;
|
|
110
110
|
break;
|
|
111
111
|
}
|
|
112
|
+
// case DiagnosticCode.RecordFieldStringName:
|
|
113
|
+
case DiagnosticCode.RecordFieldOrdinalName:
|
|
112
114
|
case DiagnosticCode.RecordFieldIdName: {
|
|
113
115
|
tokenType = TokenType.PROPERTY;
|
|
114
116
|
break;
|
package/src/lsp/utils.ts
CHANGED
|
@@ -155,6 +155,78 @@ export function codeblock(value: string): string {
|
|
|
155
155
|
return `\n${CODEBLOCK_FENCE}${lang}\n${value}\n${CODEBLOCK_FENCE}\n`;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
/** 格式化数字 */
|
|
159
|
+
function serializeIntegerImpl(num: number, base: number, prefix: string, sep: number): string {
|
|
160
|
+
let str = Math.abs(num).toString(base);
|
|
161
|
+
if (base > 10) str = str.toUpperCase();
|
|
162
|
+
const sepSize = Math.abs(sep);
|
|
163
|
+
if (sep !== 0 && str.length > sepSize) {
|
|
164
|
+
const seg = [];
|
|
165
|
+
if (sep > 0) {
|
|
166
|
+
while (str.length > sepSize) {
|
|
167
|
+
seg.unshift(str.slice(-sepSize));
|
|
168
|
+
str = str.slice(0, -sepSize);
|
|
169
|
+
}
|
|
170
|
+
if (str.length > 0) {
|
|
171
|
+
seg.unshift(str);
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
while (str.length > sepSize) {
|
|
175
|
+
seg.push(str.slice(0, sepSize));
|
|
176
|
+
str = str.slice(sepSize);
|
|
177
|
+
}
|
|
178
|
+
if (str.length > 0) {
|
|
179
|
+
seg.push(str);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
str = seg.join('_');
|
|
183
|
+
}
|
|
184
|
+
return (num < 0 ? '-' : '') + prefix + str;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** 格式化数字 */
|
|
188
|
+
export function serializeInteger(num: number, base: 2 | 8 | 16, sep = true): string {
|
|
189
|
+
const prefix = base === 2 ? '0b' : base === 8 ? '0o' : '0x';
|
|
190
|
+
const sepSize = sep ? (base === 2 ? 8 : base === 8 ? 6 : 4) : 0;
|
|
191
|
+
return serializeIntegerImpl(num, base, prefix, sepSize);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/** 格式化数字 */
|
|
195
|
+
export function serializeNumber(num: number): string {
|
|
196
|
+
if (!Number.isFinite(num)) {
|
|
197
|
+
return serialize(num);
|
|
198
|
+
}
|
|
199
|
+
const str = String(num);
|
|
200
|
+
const dot = str.indexOf('.');
|
|
201
|
+
const exp = str.indexOf('e');
|
|
202
|
+
let intPart: string;
|
|
203
|
+
let fracPart: string;
|
|
204
|
+
let expPart: string;
|
|
205
|
+
if (dot >= 0) {
|
|
206
|
+
intPart = str.slice(0, dot);
|
|
207
|
+
if (exp >= 0) {
|
|
208
|
+
fracPart = str.slice(dot + 1, exp);
|
|
209
|
+
expPart = str.slice(exp);
|
|
210
|
+
} else {
|
|
211
|
+
fracPart = str.slice(dot + 1);
|
|
212
|
+
expPart = '';
|
|
213
|
+
}
|
|
214
|
+
} else {
|
|
215
|
+
if (exp >= 0) {
|
|
216
|
+
intPart = str.slice(0, exp);
|
|
217
|
+
fracPart = '';
|
|
218
|
+
expPart = str.slice(exp);
|
|
219
|
+
} else {
|
|
220
|
+
intPart = str;
|
|
221
|
+
fracPart = '';
|
|
222
|
+
expPart = '';
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (intPart.length > 5) intPart = serializeIntegerImpl(Number(intPart), 10, '', 3);
|
|
226
|
+
if (fracPart.length > 5) fracPart = serializeIntegerImpl(Number(fracPart), 10, '', -3);
|
|
227
|
+
return intPart + (fracPart ? '.' + fracPart : '') + expPart;
|
|
228
|
+
}
|
|
229
|
+
|
|
158
230
|
/** 将值序列化为便于展示的字符串 */
|
|
159
231
|
function serializeForDisplayInner(value: VmValue, maxWidth: number): string {
|
|
160
232
|
if (maxWidth < 10) maxWidth = 10;
|
|
@@ -164,6 +236,9 @@ function serializeForDisplayInner(value: VmValue, maxWidth: number): string {
|
|
|
164
236
|
}
|
|
165
237
|
return `${serializeString(value.slice(0, maxWidth))}..`;
|
|
166
238
|
}
|
|
239
|
+
if (typeof value === 'number') {
|
|
240
|
+
return serializeNumber(value);
|
|
241
|
+
}
|
|
167
242
|
if (isVmPrimitive(value)) {
|
|
168
243
|
return serialize(value);
|
|
169
244
|
}
|
|
@@ -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
|
-
}
|