@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.
@@ -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 = 'Convert to uppercase constant';
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 = 'Convert record literal to parentheses';
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 = `Convert to '${fixed}' operator`;
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 = 'Remove unnecessary parentheses';
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 = 'Convert to if expression';
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 { codeblock, getDeep, valueDoc, paramsList } from '../utils.js';
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 { KEYWORDS as HELP_KEYWORDS, OPERATORS as HELP_OPERATORS } from '@mirascript/help';
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 && (token.text in HELP_KEYWORDS || token.text in HELP_OPERATORS)) {
161
- const doc =
162
- HELP_KEYWORDS[token.text as keyof typeof HELP_KEYWORDS] ??
163
- HELP_OPERATORS[token.text as keyof typeof HELP_OPERATORS];
164
- return {
165
- contents: [{ value: doc }],
166
- range: {
167
- startLineNumber: position.lineNumber,
168
- endLineNumber: position.lineNumber,
169
- startColumn: token.startColumn,
170
- endColumn: token.endColumn,
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
- }