diff --git a/dist/providers/hoverProvider.js b/dist/providers/hoverProvider.js
index 9422982..b6e09fa 100644
--- a/dist/providers/hoverProvider.js
+++ b/dist/providers/hoverProvider.js
@@ -61,49 +61,55 @@ class HoverProvider {
const apiFunction = this.apiParser.getFunctionByName(word);
if (apiFunction) {
const signature = this.apiParser.generateFunctionSignature(apiFunction);
- let hoverContent = `**内置函数**: \`${signature}\`\n\n`;
- hoverContent += `${apiFunction.description}\n\n`;
+ let hoverContent = `★ 内置函数: ${signature}\n\n`;
+ hoverContent += `${apiFunction.description}\n\n`;
if (apiFunction.params.length > 0) {
- hoverContent += `**参数**:\n`;
+ hoverContent += `参数:\n`;
apiFunction.params.forEach(param => {
- hoverContent += `- \`${param.name}: ${param.type}\`${param.optional ? ' (可选)' : ''} - ${param.description}\n`;
+ hoverContent += `- ${param.name}: ${param.type}${param.optional ? ' (可选)' : ''} - ${param.description}\n`;
});
}
if (apiFunction.returns) {
- hoverContent += `\n**返回值**: \`${apiFunction.returns.type}\` - ${apiFunction.returns.description}`;
+ hoverContent += `\n返回值: ${apiFunction.returns.type} - ${apiFunction.returns.description}`;
}
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 检查是否是API类
const apiClass = this.apiParser.getClassByName(word);
if (apiClass) {
const signature = this.apiParser.generateClassSignature(apiClass);
- let hoverContent = `**内置类**: \`${signature}\`\n\n`;
- hoverContent += `${apiClass.description}\n\n`;
+ let hoverContent = `★ 内置类: ${signature}\n\n`;
+ hoverContent += `${apiClass.description}\n\n`;
if (apiClass.methods.length > 0) {
- hoverContent += `**方法**:\n`;
+ hoverContent += `方法:\n`;
apiClass.methods.forEach(method => {
const methodSignature = this.apiParser.generateMethodSignature(method);
- hoverContent += `- \`${methodSignature}\` - ${method.description}\n`;
+ hoverContent += `- ${methodSignature} - ${method.description}\n`;
});
}
if (apiClass.properties.length > 0) {
- hoverContent += `\n**属性**:\n`;
+ hoverContent += `\n属性:\n`;
apiClass.properties.forEach(prop => {
const propSignature = this.apiParser.generatePropertySignature(prop);
- hoverContent += `- \`${propSignature}\` - ${prop.description}\n`;
+ hoverContent += `- ${propSignature} - ${prop.description}\n`;
});
}
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 检查是否是API常量
const apiConstant = this.apiParser.getConstantByName(word);
if (apiConstant) {
- let hoverContent = `**常量**: \`${apiConstant.name}\`\n\n`;
- hoverContent += `值: ${apiConstant.value}\n\n`;
- hoverContent += `${apiConstant.description}\n\n`;
- hoverContent += `类别: ${apiConstant.category}`;
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ let hoverContent = `★ 常量: ${apiConstant.name}\n\n`;
+ hoverContent += `值: ${apiConstant.value}\n\n`;
+ hoverContent += `${apiConstant.description}\n\n`;
+ hoverContent += `类别: ${apiConstant.category}`;
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 查找函数信息
const functions = this.cacheManager.findFunctionsByName(word);
@@ -113,19 +119,21 @@ class HoverProvider {
if (functions.length === 1) {
// 单个函数
const func = functions[0];
- hoverContent = `**函数**: \`${func.signature}\`\n\n`;
- hoverContent += `**文件**: ${func.filePath}\n\n`;
- hoverContent += `**行号**: ${func.lineNumber}`;
+ hoverContent = `函数: ${func.signature}\n\n`;
+ hoverContent += `文件: ${func.filePath}\n\n`;
+ hoverContent += `行号: ${func.lineNumber}`;
}
else {
// 多个同名函数
- hoverContent = `**函数**: ${word}\n\n`;
- hoverContent += `在多个文件中定义:\n\n`;
+ hoverContent = `函数: ${word}\n\n`;
+ hoverContent += `在多个文件中定义:\n\n`;
functions.forEach(func => {
- hoverContent += `- \`${func.signature}\` (${func.filePath}:${func.lineNumber})\n`;
+ hoverContent += `- ${func.signature} (${func.filePath}:${func.lineNumber})\n`;
});
}
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 检查是否是关键字
const keywordInfo = this.getKeywordInfo(word);
@@ -142,42 +150,42 @@ class HoverProvider {
// 获取关键字信息
getKeywordInfo(word) {
const keywordMap = {
- 'if': '**条件语句**\n\n用于条件执行代码块',
- 'else': '**条件语句**\n\n与if语句配合使用,当if条件不满足时执行',
- 'while': '**循环语句**\n\n当条件为真时重复执行代码块',
- 'for': '**循环语句**\n\n用于循环执行代码块',
- 'foreach': '**循环语句**\n\n遍历数组或表中的每个元素',
- 'function': '**函数定义**\n\n用于定义函数',
- 'local': '**变量声明**\n\n声明局部变量',
- 'return': '**返回语句**\n\n从函数中返回值',
- 'class': '**类定义**\n\n用于定义类',
- 'extends': '**继承**\n\n用于指定类的父类',
- 'constructor': '**构造函数**\n\n类的构造函数',
- 'null': '**空值**\n\n表示空值',
- 'true': '**布尔值**\n\n表示真值',
- 'false': '**布尔值**\n\n表示假值'
+ 'if': '条件语句\n\n用于条件执行代码块',
+ 'else': '条件语句\n\n与if语句配合使用,当if条件不满足时执行',
+ 'while': '循环语句\n\n当条件为真时重复执行代码块',
+ 'for': '循环语句\n\n用于循环执行代码块',
+ 'foreach': '循环语句\n\n遍历数组或表中的每个元素',
+ 'function': '函数定义\n\n用于定义函数',
+ 'local': '变量声明\n\n声明局部变量',
+ 'return': '返回语句\n\n从函数中返回值',
+ 'class': '类定义\n\n用于定义类',
+ 'extends': '继承\n\n用于指定类的父类',
+ 'constructor': '构造函数\n\n类的构造函数',
+ 'null': '空值\n\n表示空值',
+ 'true': '布尔值\n\n表示真值',
+ 'false': '布尔值\n\n表示假值'
};
return keywordMap[word];
}
// 获取常量信息
getConstantInfo(word) {
const constantMap = {
- 'PI': '**数学常量**\n\n圆周率 π ≈ 3.14159',
- 'E': '**数学常量**\n\n自然常数 e ≈ 2.71828',
- 'RAND_MAX': '**随机数**\n\n随机数生成器的最大值',
- 'CHAR_BIT': '**字符**\n\n一个字节的位数',
- 'CHAR_MAX': '**字符**\n\nchar类型的最大值',
- 'CHAR_MIN': '**字符**\n\nchar类型的最小值',
- 'SHRT_MAX': '**短整型**\n\nshort类型的最大值',
- 'SHRT_MIN': '**短整型**\n\nshort类型的最小值',
- 'INT_MAX': '**整型**\n\nint类型的最大值',
- 'INT_MIN': '**整型**\n\nint类型的最小值',
- 'LONG_MAX': '**长整型**\n\nlong类型的最大值',
- 'LONG_MIN': '**长整型**\n\nlong类型的最小值',
- 'FLT_MAX': '**浮点型**\n\nfloat类型的最大值',
- 'FLT_MIN': '**浮点型**\n\nfloat类型的最小值',
- 'DBL_MAX': '**双精度浮点型**\n\ndouble类型的最大值',
- 'DBL_MIN': '**双精度浮点型**\n\ndouble类型的最小值'
+ 'PI': '数学常量\n\n圆周率 π ≈ 3.14159',
+ 'E': '数学常量\n\n自然常数 e ≈ 2.71828',
+ 'RAND_MAX': '随机数\n\n随机数生成器的最大值',
+ 'CHAR_BIT': '字符\n\n一个字节的位数',
+ 'CHAR_MAX': '字符\n\nchar类型的最大值',
+ 'CHAR_MIN': '字符\n\nchar类型的最小值',
+ 'SHRT_MAX': '短整型\n\nshort类型的最大值',
+ 'SHRT_MIN': '短整型\n\nshort类型的最小值',
+ 'INT_MAX': '整型\n\nint类型的最大值',
+ 'INT_MIN': '整型\n\nint类型的最小值',
+ 'LONG_MAX': '长整型\n\nlong类型的最大值',
+ 'LONG_MIN': '长整型\n\nlong类型的最小值',
+ 'FLT_MAX': '浮点型\n\nfloat类型的最大值',
+ 'FLT_MIN': '浮点型\n\nfloat类型的最小值',
+ 'DBL_MAX': '双精度浮点型\n\ndouble类型的最大值',
+ 'DBL_MIN': '双精度浮点型\n\ndouble类型的最小值'
};
return constantMap[word];
}
diff --git a/dist/providers/hoverProvider.js.map b/dist/providers/hoverProvider.js.map
index 38c19ad..7f2e867 100644
--- a/dist/providers/hoverProvider.js.map
+++ b/dist/providers/hoverProvider.js.map
@@ -1 +1 @@
-{"version":3,"file":"hoverProvider.js","sourceRoot":"","sources":["../../src/providers/hoverProvider.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"hoverProvider.js","sourceRoot":"","sources":["../../src/providers/hoverProvider.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/package.json b/package.json
index 98fee96..20f5837 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "squirrel-nut-explorer",
"displayName": "Squirrel NUT Explorer",
"description": "通过 pvfUtility API 浏览和编辑 NUT 文件",
- "version": "1.0.3",
+ "version": "1.1.0",
"publisher": "local",
"engines": {
"vscode": "^1.99.0"
diff --git a/squirrel-nut-explorer-1.0.3.vsix b/squirrel-nut-explorer-1.0.3.vsix
index 901296d..6a4b9ba 100644
Binary files a/squirrel-nut-explorer-1.0.3.vsix and b/squirrel-nut-explorer-1.0.3.vsix differ
diff --git a/squirrel-nut-explorer-1.1.0.vsix b/squirrel-nut-explorer-1.1.0.vsix
new file mode 100644
index 0000000..6197982
Binary files /dev/null and b/squirrel-nut-explorer-1.1.0.vsix differ
diff --git a/src/providers/hoverProvider.ts b/src/providers/hoverProvider.ts
index 0dbdaf3..c993df1 100644
--- a/src/providers/hoverProvider.ts
+++ b/src/providers/hoverProvider.ts
@@ -38,58 +38,64 @@ export class HoverProvider implements vscode.HoverProvider {
const apiFunction = this.apiParser.getFunctionByName(word);
if (apiFunction) {
const signature = this.apiParser.generateFunctionSignature(apiFunction);
- let hoverContent = `**内置函数**: \`${signature}\`\n\n`;
- hoverContent += `${apiFunction.description}\n\n`;
+ let hoverContent = `★ 内置函数: ${signature}\n\n`;
+ hoverContent += `${apiFunction.description}\n\n`;
if (apiFunction.params.length > 0) {
- hoverContent += `**参数**:\n`;
+ hoverContent += `参数:\n`;
apiFunction.params.forEach(param => {
- hoverContent += `- \`${param.name}: ${param.type}\`${param.optional ? ' (可选)' : ''} - ${param.description}\n`;
+ hoverContent += `- ${param.name}: ${param.type}${param.optional ? ' (可选)' : ''} - ${param.description}\n`;
});
}
if (apiFunction.returns) {
- hoverContent += `\n**返回值**: \`${apiFunction.returns.type}\` - ${apiFunction.returns.description}`;
+ hoverContent += `\n返回值: ${apiFunction.returns.type} - ${apiFunction.returns.description}`;
}
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 检查是否是API类
const apiClass = this.apiParser.getClassByName(word);
if (apiClass) {
const signature = this.apiParser.generateClassSignature(apiClass);
- let hoverContent = `**内置类**: \`${signature}\`\n\n`;
- hoverContent += `${apiClass.description}\n\n`;
+ let hoverContent = `★ 内置类: ${signature}\n\n`;
+ hoverContent += `${apiClass.description}\n\n`;
if (apiClass.methods.length > 0) {
- hoverContent += `**方法**:\n`;
+ hoverContent += `方法:\n`;
apiClass.methods.forEach(method => {
const methodSignature = this.apiParser.generateMethodSignature(method);
- hoverContent += `- \`${methodSignature}\` - ${method.description}\n`;
+ hoverContent += `- ${methodSignature} - ${method.description}\n`;
});
}
if (apiClass.properties.length > 0) {
- hoverContent += `\n**属性**:\n`;
+ hoverContent += `\n属性:\n`;
apiClass.properties.forEach(prop => {
const propSignature = this.apiParser.generatePropertySignature(prop);
- hoverContent += `- \`${propSignature}\` - ${prop.description}\n`;
+ hoverContent += `- ${propSignature} - ${prop.description}\n`;
});
}
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 检查是否是API常量
const apiConstant = this.apiParser.getConstantByName(word);
if (apiConstant) {
- let hoverContent = `**常量**: \`${apiConstant.name}\`\n\n`;
- hoverContent += `值: ${apiConstant.value}\n\n`;
- hoverContent += `${apiConstant.description}\n\n`;
- hoverContent += `类别: ${apiConstant.category}`;
+ let hoverContent = `★ 常量: ${apiConstant.name}\n\n`;
+ hoverContent += `值: ${apiConstant.value}\n\n`;
+ hoverContent += `${apiConstant.description}\n\n`;
+ hoverContent += `类别: ${apiConstant.category}`;
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 查找函数信息
@@ -101,19 +107,21 @@ export class HoverProvider implements vscode.HoverProvider {
if (functions.length === 1) {
// 单个函数
const func = functions[0];
- hoverContent = `**函数**: \`${func.signature}\`\n\n`;
- hoverContent += `**文件**: ${func.filePath}\n\n`;
- hoverContent += `**行号**: ${func.lineNumber}`;
+ hoverContent = `函数: ${func.signature}\n\n`;
+ hoverContent += `文件: ${func.filePath}\n\n`;
+ hoverContent += `行号: ${func.lineNumber}`;
} else {
// 多个同名函数
- hoverContent = `**函数**: ${word}\n\n`;
- hoverContent += `在多个文件中定义:\n\n`;
+ hoverContent = `函数: ${word}\n\n`;
+ hoverContent += `在多个文件中定义:\n\n`;
functions.forEach(func => {
- hoverContent += `- \`${func.signature}\` (${func.filePath}:${func.lineNumber})\n`;
+ hoverContent += `- ${func.signature} (${func.filePath}:${func.lineNumber})\n`;
});
}
- return new vscode.Hover(new vscode.MarkdownString(hoverContent), range);
+ const markdownString = new vscode.MarkdownString(hoverContent);
+ markdownString.isTrusted = true;
+ return new vscode.Hover(markdownString, range);
}
// 检查是否是关键字
@@ -134,20 +142,20 @@ export class HoverProvider implements vscode.HoverProvider {
// 获取关键字信息
private getKeywordInfo(word: string): string | undefined {
const keywordMap: { [key: string]: string } = {
- 'if': '**条件语句**\n\n用于条件执行代码块',
- 'else': '**条件语句**\n\n与if语句配合使用,当if条件不满足时执行',
- 'while': '**循环语句**\n\n当条件为真时重复执行代码块',
- 'for': '**循环语句**\n\n用于循环执行代码块',
- 'foreach': '**循环语句**\n\n遍历数组或表中的每个元素',
- 'function': '**函数定义**\n\n用于定义函数',
- 'local': '**变量声明**\n\n声明局部变量',
- 'return': '**返回语句**\n\n从函数中返回值',
- 'class': '**类定义**\n\n用于定义类',
- 'extends': '**继承**\n\n用于指定类的父类',
- 'constructor': '**构造函数**\n\n类的构造函数',
- 'null': '**空值**\n\n表示空值',
- 'true': '**布尔值**\n\n表示真值',
- 'false': '**布尔值**\n\n表示假值'
+ 'if': '条件语句\n\n用于条件执行代码块',
+ 'else': '条件语句\n\n与if语句配合使用,当if条件不满足时执行',
+ 'while': '循环语句\n\n当条件为真时重复执行代码块',
+ 'for': '循环语句\n\n用于循环执行代码块',
+ 'foreach': '循环语句\n\n遍历数组或表中的每个元素',
+ 'function': '函数定义\n\n用于定义函数',
+ 'local': '变量声明\n\n声明局部变量',
+ 'return': '返回语句\n\n从函数中返回值',
+ 'class': '类定义\n\n用于定义类',
+ 'extends': '继承\n\n用于指定类的父类',
+ 'constructor': '构造函数\n\n类的构造函数',
+ 'null': '空值\n\n表示空值',
+ 'true': '布尔值\n\n表示真值',
+ 'false': '布尔值\n\n表示假值'
};
return keywordMap[word];
@@ -156,22 +164,22 @@ export class HoverProvider implements vscode.HoverProvider {
// 获取常量信息
private getConstantInfo(word: string): string | undefined {
const constantMap: { [key: string]: string } = {
- 'PI': '**数学常量**\n\n圆周率 π ≈ 3.14159',
- 'E': '**数学常量**\n\n自然常数 e ≈ 2.71828',
- 'RAND_MAX': '**随机数**\n\n随机数生成器的最大值',
- 'CHAR_BIT': '**字符**\n\n一个字节的位数',
- 'CHAR_MAX': '**字符**\n\nchar类型的最大值',
- 'CHAR_MIN': '**字符**\n\nchar类型的最小值',
- 'SHRT_MAX': '**短整型**\n\nshort类型的最大值',
- 'SHRT_MIN': '**短整型**\n\nshort类型的最小值',
- 'INT_MAX': '**整型**\n\nint类型的最大值',
- 'INT_MIN': '**整型**\n\nint类型的最小值',
- 'LONG_MAX': '**长整型**\n\nlong类型的最大值',
- 'LONG_MIN': '**长整型**\n\nlong类型的最小值',
- 'FLT_MAX': '**浮点型**\n\nfloat类型的最大值',
- 'FLT_MIN': '**浮点型**\n\nfloat类型的最小值',
- 'DBL_MAX': '**双精度浮点型**\n\ndouble类型的最大值',
- 'DBL_MIN': '**双精度浮点型**\n\ndouble类型的最小值'
+ 'PI': '数学常量\n\n圆周率 π ≈ 3.14159',
+ 'E': '数学常量\n\n自然常数 e ≈ 2.71828',
+ 'RAND_MAX': '随机数\n\n随机数生成器的最大值',
+ 'CHAR_BIT': '字符\n\n一个字节的位数',
+ 'CHAR_MAX': '字符\n\nchar类型的最大值',
+ 'CHAR_MIN': '字符\n\nchar类型的最小值',
+ 'SHRT_MAX': '短整型\n\nshort类型的最大值',
+ 'SHRT_MIN': '短整型\n\nshort类型的最小值',
+ 'INT_MAX': '整型\n\nint类型的最大值',
+ 'INT_MIN': '整型\n\nint类型的最小值',
+ 'LONG_MAX': '长整型\n\nlong类型的最大值',
+ 'LONG_MIN': '长整型\n\nlong类型的最小值',
+ 'FLT_MAX': '浮点型\n\nfloat类型的最大值',
+ 'FLT_MIN': '浮点型\n\nfloat类型的最小值',
+ 'DBL_MAX': '双精度浮点型\n\ndouble类型的最大值',
+ 'DBL_MIN': '双精度浮点型\n\ndouble类型的最小值'
};
return constantMap[word];