1.1.0 悬浮提示中文字颜色显示优化
This commit is contained in:
118
dist/providers/hoverProvider.js
vendored
118
dist/providers/hoverProvider.js
vendored
@@ -61,49 +61,55 @@ class HoverProvider {
|
|||||||
const apiFunction = this.apiParser.getFunctionByName(word);
|
const apiFunction = this.apiParser.getFunctionByName(word);
|
||||||
if (apiFunction) {
|
if (apiFunction) {
|
||||||
const signature = this.apiParser.generateFunctionSignature(apiFunction);
|
const signature = this.apiParser.generateFunctionSignature(apiFunction);
|
||||||
let hoverContent = `**内置函数**: \`${signature}\`\n\n`;
|
let hoverContent = `<span style="color:#4EC9B0;">★</span> <span style="color:#569CD6;">内置函数</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${signature}</code>\n\n`;
|
||||||
hoverContent += `${apiFunction.description}\n\n`;
|
hoverContent += `<span style="color:#6A9955;">${apiFunction.description}</span>\n\n`;
|
||||||
if (apiFunction.params.length > 0) {
|
if (apiFunction.params.length > 0) {
|
||||||
hoverContent += `**参数**:\n`;
|
hoverContent += `<span style="color:#C586C0;">参数</span>:\n`;
|
||||||
apiFunction.params.forEach(param => {
|
apiFunction.params.forEach(param => {
|
||||||
hoverContent += `- \`${param.name}: ${param.type}\`${param.optional ? ' (可选)' : ''} - ${param.description}\n`;
|
hoverContent += `- <code style="color:#9CDCFE;">${param.name}</code>: <span style="color:#4EC9B0;">${param.type}</span><span style="color:#808080;">${param.optional ? ' (可选)' : ''}</span> - <span style="color:#6A9955;">${param.description}</span>\n`;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (apiFunction.returns) {
|
if (apiFunction.returns) {
|
||||||
hoverContent += `\n**返回值**: \`${apiFunction.returns.type}\` - ${apiFunction.returns.description}`;
|
hoverContent += `\n<span style="color:#C586C0;">返回值</span>: <code style="color:#4EC9B0;">${apiFunction.returns.type}</code> - <span style="color:#6A9955;">${apiFunction.returns.description}</span>`;
|
||||||
}
|
}
|
||||||
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类
|
// 检查是否是API类
|
||||||
const apiClass = this.apiParser.getClassByName(word);
|
const apiClass = this.apiParser.getClassByName(word);
|
||||||
if (apiClass) {
|
if (apiClass) {
|
||||||
const signature = this.apiParser.generateClassSignature(apiClass);
|
const signature = this.apiParser.generateClassSignature(apiClass);
|
||||||
let hoverContent = `**内置类**: \`${signature}\`\n\n`;
|
let hoverContent = `<span style="color:#4EC9B0;">★</span> <span style="color:#569CD6;">内置类</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${signature}</code>\n\n`;
|
||||||
hoverContent += `${apiClass.description}\n\n`;
|
hoverContent += `<span style="color:#6A9955;">${apiClass.description}</span>\n\n`;
|
||||||
if (apiClass.methods.length > 0) {
|
if (apiClass.methods.length > 0) {
|
||||||
hoverContent += `**方法**:\n`;
|
hoverContent += `<span style="color:#C586C0;">方法</span>:\n`;
|
||||||
apiClass.methods.forEach(method => {
|
apiClass.methods.forEach(method => {
|
||||||
const methodSignature = this.apiParser.generateMethodSignature(method);
|
const methodSignature = this.apiParser.generateMethodSignature(method);
|
||||||
hoverContent += `- \`${methodSignature}\` - ${method.description}\n`;
|
hoverContent += `- <code style="color:#DCDCAA;">${methodSignature}</code> - <span style="color:#6A9955;">${method.description}</span>\n`;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (apiClass.properties.length > 0) {
|
if (apiClass.properties.length > 0) {
|
||||||
hoverContent += `\n**属性**:\n`;
|
hoverContent += `\n<span style="color:#C586C0;">属性</span>:\n`;
|
||||||
apiClass.properties.forEach(prop => {
|
apiClass.properties.forEach(prop => {
|
||||||
const propSignature = this.apiParser.generatePropertySignature(prop);
|
const propSignature = this.apiParser.generatePropertySignature(prop);
|
||||||
hoverContent += `- \`${propSignature}\` - ${prop.description}\n`;
|
hoverContent += `- <code style="color:#9CDCFE;">${propSignature}</code> - <span style="color:#6A9955;">${prop.description}</span>\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常量
|
// 检查是否是API常量
|
||||||
const apiConstant = this.apiParser.getConstantByName(word);
|
const apiConstant = this.apiParser.getConstantByName(word);
|
||||||
if (apiConstant) {
|
if (apiConstant) {
|
||||||
let hoverContent = `**常量**: \`${apiConstant.name}\`\n\n`;
|
let hoverContent = `<span style="color:#4EC9B0;">★</span> <span style="color:#569CD6;">常量</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${apiConstant.name}</code>\n\n`;
|
||||||
hoverContent += `值: ${apiConstant.value}\n\n`;
|
hoverContent += `<span style="color:#C586C0;">值</span>: <code style="color:#B5CEA8;">${apiConstant.value}</code>\n\n`;
|
||||||
hoverContent += `${apiConstant.description}\n\n`;
|
hoverContent += `<span style="color:#6A9955;">${apiConstant.description}</span>\n\n`;
|
||||||
hoverContent += `类别: ${apiConstant.category}`;
|
hoverContent += `<span style="color:#C586C0;">类别</span>: <span style="color:#4EC9B0;">${apiConstant.category}</span>`;
|
||||||
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 functions = this.cacheManager.findFunctionsByName(word);
|
const functions = this.cacheManager.findFunctionsByName(word);
|
||||||
@@ -113,19 +119,21 @@ class HoverProvider {
|
|||||||
if (functions.length === 1) {
|
if (functions.length === 1) {
|
||||||
// 单个函数
|
// 单个函数
|
||||||
const func = functions[0];
|
const func = functions[0];
|
||||||
hoverContent = `**函数**: \`${func.signature}\`\n\n`;
|
hoverContent = `<span style="color:#569CD6;">函数</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${func.signature}</code>\n\n`;
|
||||||
hoverContent += `**文件**: ${func.filePath}\n\n`;
|
hoverContent += `<span style="color:#C586C0;">文件</span>: <span style="color:#4EC9B0;">${func.filePath}</span>\n\n`;
|
||||||
hoverContent += `**行号**: ${func.lineNumber}`;
|
hoverContent += `<span style="color:#C586C0;">行号</span>: <span style="color:#B5CEA8;">${func.lineNumber}</span>`;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// 多个同名函数
|
// 多个同名函数
|
||||||
hoverContent = `**函数**: ${word}\n\n`;
|
hoverContent = `<span style="color:#569CD6;">函数</span>: <span style="color:#D4D4D4;">${word}</span>\n\n`;
|
||||||
hoverContent += `在多个文件中定义:\n\n`;
|
hoverContent += `<span style="color:#6A9955;">在多个文件中定义:</span>\n\n`;
|
||||||
functions.forEach(func => {
|
functions.forEach(func => {
|
||||||
hoverContent += `- \`${func.signature}\` (${func.filePath}:${func.lineNumber})\n`;
|
hoverContent += `- <code style="color:#DCDCAA;">${func.signature}</code> (<span style="color:#4EC9B0;">${func.filePath}</span>:<span style="color:#B5CEA8;">${func.lineNumber}</span>)\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);
|
const keywordInfo = this.getKeywordInfo(word);
|
||||||
@@ -142,42 +150,42 @@ class HoverProvider {
|
|||||||
// 获取关键字信息
|
// 获取关键字信息
|
||||||
getKeywordInfo(word) {
|
getKeywordInfo(word) {
|
||||||
const keywordMap = {
|
const keywordMap = {
|
||||||
'if': '**条件语句**\n\n用于条件执行代码块',
|
'if': '<span style="color:#C586C0;">条件语句</span>\n\n<span style="color:#6A9955;">用于条件执行代码块</span>',
|
||||||
'else': '**条件语句**\n\n与if语句配合使用,当if条件不满足时执行',
|
'else': '<span style="color:#C586C0;">条件语句</span>\n\n<span style="color:#6A9955;">与if语句配合使用,当if条件不满足时执行</span>',
|
||||||
'while': '**循环语句**\n\n当条件为真时重复执行代码块',
|
'while': '<span style="color:#C586C0;">循环语句</span>\n\n<span style="color:#6A9955;">当条件为真时重复执行代码块</span>',
|
||||||
'for': '**循环语句**\n\n用于循环执行代码块',
|
'for': '<span style="color:#C586C0;">循环语句</span>\n\n<span style="color:#6A9955;">用于循环执行代码块</span>',
|
||||||
'foreach': '**循环语句**\n\n遍历数组或表中的每个元素',
|
'foreach': '<span style="color:#C586C0;">循环语句</span>\n\n<span style="color:#6A9955;">遍历数组或表中的每个元素</span>',
|
||||||
'function': '**函数定义**\n\n用于定义函数',
|
'function': '<span style="color:#C586C0;">函数定义</span>\n\n<span style="color:#6A9955;">用于定义函数</span>',
|
||||||
'local': '**变量声明**\n\n声明局部变量',
|
'local': '<span style="color:#C586C0;">变量声明</span>\n\n<span style="color:#6A9955;">声明局部变量</span>',
|
||||||
'return': '**返回语句**\n\n从函数中返回值',
|
'return': '<span style="color:#C586C0;">返回语句</span>\n\n<span style="color:#6A9955;">从函数中返回值</span>',
|
||||||
'class': '**类定义**\n\n用于定义类',
|
'class': '<span style="color:#C586C0;">类定义</span>\n\n<span style="color:#6A9955;">用于定义类</span>',
|
||||||
'extends': '**继承**\n\n用于指定类的父类',
|
'extends': '<span style="color:#C586C0;">继承</span>\n\n<span style="color:#6A9955;">用于指定类的父类</span>',
|
||||||
'constructor': '**构造函数**\n\n类的构造函数',
|
'constructor': '<span style="color:#C586C0;">构造函数</span>\n\n<span style="color:#6A9955;">类的构造函数</span>',
|
||||||
'null': '**空值**\n\n表示空值',
|
'null': '<span style="color:#C586C0;">空值</span>\n\n<span style="color:#6A9955;">表示空值</span>',
|
||||||
'true': '**布尔值**\n\n表示真值',
|
'true': '<span style="color:#C586C0;">布尔值</span>\n\n<span style="color:#6A9955;">表示真值</span>',
|
||||||
'false': '**布尔值**\n\n表示假值'
|
'false': '<span style="color:#C586C0;">布尔值</span>\n\n<span style="color:#6A9955;">表示假值</span>'
|
||||||
};
|
};
|
||||||
return keywordMap[word];
|
return keywordMap[word];
|
||||||
}
|
}
|
||||||
// 获取常量信息
|
// 获取常量信息
|
||||||
getConstantInfo(word) {
|
getConstantInfo(word) {
|
||||||
const constantMap = {
|
const constantMap = {
|
||||||
'PI': '**数学常量**\n\n圆周率 π ≈ 3.14159',
|
'PI': '<span style="color:#C586C0;">数学常量</span>\n\n<span style="color:#6A9955;">圆周率 π ≈ 3.14159</span>',
|
||||||
'E': '**数学常量**\n\n自然常数 e ≈ 2.71828',
|
'E': '<span style="color:#C586C0;">数学常量</span>\n\n<span style="color:#6A9955;">自然常数 e ≈ 2.71828</span>',
|
||||||
'RAND_MAX': '**随机数**\n\n随机数生成器的最大值',
|
'RAND_MAX': '<span style="color:#C586C0;">随机数</span>\n\n<span style="color:#6A9955;">随机数生成器的最大值</span>',
|
||||||
'CHAR_BIT': '**字符**\n\n一个字节的位数',
|
'CHAR_BIT': '<span style="color:#C586C0;">字符</span>\n\n<span style="color:#6A9955;">一个字节的位数</span>',
|
||||||
'CHAR_MAX': '**字符**\n\nchar类型的最大值',
|
'CHAR_MAX': '<span style="color:#C586C0;">字符</span>\n\n<span style="color:#6A9955;">char类型的最大值</span>',
|
||||||
'CHAR_MIN': '**字符**\n\nchar类型的最小值',
|
'CHAR_MIN': '<span style="color:#C586C0;">字符</span>\n\n<span style="color:#6A9955;">char类型的最小值</span>',
|
||||||
'SHRT_MAX': '**短整型**\n\nshort类型的最大值',
|
'SHRT_MAX': '<span style="color:#C586C0;">短整型</span>\n\n<span style="color:#6A9955;">short类型的最大值</span>',
|
||||||
'SHRT_MIN': '**短整型**\n\nshort类型的最小值',
|
'SHRT_MIN': '<span style="color:#C586C0;">短整型</span>\n\n<span style="color:#6A9955;">short类型的最小值</span>',
|
||||||
'INT_MAX': '**整型**\n\nint类型的最大值',
|
'INT_MAX': '<span style="color:#C586C0;">整型</span>\n\n<span style="color:#6A9955;">int类型的最大值</span>',
|
||||||
'INT_MIN': '**整型**\n\nint类型的最小值',
|
'INT_MIN': '<span style="color:#C586C0;">整型</span>\n\n<span style="color:#6A9955;">int类型的最小值</span>',
|
||||||
'LONG_MAX': '**长整型**\n\nlong类型的最大值',
|
'LONG_MAX': '<span style="color:#C586C0;">长整型</span>\n\n<span style="color:#6A9955;">long类型的最大值</span>',
|
||||||
'LONG_MIN': '**长整型**\n\nlong类型的最小值',
|
'LONG_MIN': '<span style="color:#C586C0;">长整型</span>\n\n<span style="color:#6A9955;">long类型的最小值</span>',
|
||||||
'FLT_MAX': '**浮点型**\n\nfloat类型的最大值',
|
'FLT_MAX': '<span style="color:#C586C0;">浮点型</span>\n\n<span style="color:#6A9955;">float类型的最大值</span>',
|
||||||
'FLT_MIN': '**浮点型**\n\nfloat类型的最小值',
|
'FLT_MIN': '<span style="color:#C586C0;">浮点型</span>\n\n<span style="color:#6A9955;">float类型的最小值</span>',
|
||||||
'DBL_MAX': '**双精度浮点型**\n\ndouble类型的最大值',
|
'DBL_MAX': '<span style="color:#C586C0;">双精度浮点型</span>\n\n<span style="color:#6A9955;">double类型的最大值</span>',
|
||||||
'DBL_MIN': '**双精度浮点型**\n\ndouble类型的最小值'
|
'DBL_MIN': '<span style="color:#C586C0;">双精度浮点型</span>\n\n<span style="color:#6A9955;">double类型的最小值</span>'
|
||||||
};
|
};
|
||||||
return constantMap[word];
|
return constantMap[word];
|
||||||
}
|
}
|
||||||
|
|||||||
2
dist/providers/hoverProvider.js.map
vendored
2
dist/providers/hoverProvider.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
|||||||
"name": "squirrel-nut-explorer",
|
"name": "squirrel-nut-explorer",
|
||||||
"displayName": "Squirrel NUT Explorer",
|
"displayName": "Squirrel NUT Explorer",
|
||||||
"description": "通过 pvfUtility API 浏览和编辑 NUT 文件",
|
"description": "通过 pvfUtility API 浏览和编辑 NUT 文件",
|
||||||
"version": "1.0.3",
|
"version": "1.1.0",
|
||||||
"publisher": "local",
|
"publisher": "local",
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.99.0"
|
"vscode": "^1.99.0"
|
||||||
|
|||||||
Binary file not shown.
BIN
squirrel-nut-explorer-1.1.0.vsix
Normal file
BIN
squirrel-nut-explorer-1.1.0.vsix
Normal file
Binary file not shown.
@@ -38,58 +38,64 @@ export class HoverProvider implements vscode.HoverProvider {
|
|||||||
const apiFunction = this.apiParser.getFunctionByName(word);
|
const apiFunction = this.apiParser.getFunctionByName(word);
|
||||||
if (apiFunction) {
|
if (apiFunction) {
|
||||||
const signature = this.apiParser.generateFunctionSignature(apiFunction);
|
const signature = this.apiParser.generateFunctionSignature(apiFunction);
|
||||||
let hoverContent = `**内置函数**: \`${signature}\`\n\n`;
|
let hoverContent = `<span style="color:#4EC9B0;">★</span> <span style="color:#569CD6;">内置函数</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${signature}</code>\n\n`;
|
||||||
hoverContent += `${apiFunction.description}\n\n`;
|
hoverContent += `<span style="color:#6A9955;">${apiFunction.description}</span>\n\n`;
|
||||||
|
|
||||||
if (apiFunction.params.length > 0) {
|
if (apiFunction.params.length > 0) {
|
||||||
hoverContent += `**参数**:\n`;
|
hoverContent += `<span style="color:#C586C0;">参数</span>:\n`;
|
||||||
apiFunction.params.forEach(param => {
|
apiFunction.params.forEach(param => {
|
||||||
hoverContent += `- \`${param.name}: ${param.type}\`${param.optional ? ' (可选)' : ''} - ${param.description}\n`;
|
hoverContent += `- <code style="color:#9CDCFE;">${param.name}</code>: <span style="color:#4EC9B0;">${param.type}</span><span style="color:#808080;">${param.optional ? ' (可选)' : ''}</span> - <span style="color:#6A9955;">${param.description}</span>\n`;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apiFunction.returns) {
|
if (apiFunction.returns) {
|
||||||
hoverContent += `\n**返回值**: \`${apiFunction.returns.type}\` - ${apiFunction.returns.description}`;
|
hoverContent += `\n<span style="color:#C586C0;">返回值</span>: <code style="color:#4EC9B0;">${apiFunction.returns.type}</code> - <span style="color:#6A9955;">${apiFunction.returns.description}</span>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
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类
|
// 检查是否是API类
|
||||||
const apiClass = this.apiParser.getClassByName(word);
|
const apiClass = this.apiParser.getClassByName(word);
|
||||||
if (apiClass) {
|
if (apiClass) {
|
||||||
const signature = this.apiParser.generateClassSignature(apiClass);
|
const signature = this.apiParser.generateClassSignature(apiClass);
|
||||||
let hoverContent = `**内置类**: \`${signature}\`\n\n`;
|
let hoverContent = `<span style="color:#4EC9B0;">★</span> <span style="color:#569CD6;">内置类</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${signature}</code>\n\n`;
|
||||||
hoverContent += `${apiClass.description}\n\n`;
|
hoverContent += `<span style="color:#6A9955;">${apiClass.description}</span>\n\n`;
|
||||||
|
|
||||||
if (apiClass.methods.length > 0) {
|
if (apiClass.methods.length > 0) {
|
||||||
hoverContent += `**方法**:\n`;
|
hoverContent += `<span style="color:#C586C0;">方法</span>:\n`;
|
||||||
apiClass.methods.forEach(method => {
|
apiClass.methods.forEach(method => {
|
||||||
const methodSignature = this.apiParser.generateMethodSignature(method);
|
const methodSignature = this.apiParser.generateMethodSignature(method);
|
||||||
hoverContent += `- \`${methodSignature}\` - ${method.description}\n`;
|
hoverContent += `- <code style="color:#DCDCAA;">${methodSignature}</code> - <span style="color:#6A9955;">${method.description}</span>\n`;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apiClass.properties.length > 0) {
|
if (apiClass.properties.length > 0) {
|
||||||
hoverContent += `\n**属性**:\n`;
|
hoverContent += `\n<span style="color:#C586C0;">属性</span>:\n`;
|
||||||
apiClass.properties.forEach(prop => {
|
apiClass.properties.forEach(prop => {
|
||||||
const propSignature = this.apiParser.generatePropertySignature(prop);
|
const propSignature = this.apiParser.generatePropertySignature(prop);
|
||||||
hoverContent += `- \`${propSignature}\` - ${prop.description}\n`;
|
hoverContent += `- <code style="color:#9CDCFE;">${propSignature}</code> - <span style="color:#6A9955;">${prop.description}</span>\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常量
|
// 检查是否是API常量
|
||||||
const apiConstant = this.apiParser.getConstantByName(word);
|
const apiConstant = this.apiParser.getConstantByName(word);
|
||||||
if (apiConstant) {
|
if (apiConstant) {
|
||||||
let hoverContent = `**常量**: \`${apiConstant.name}\`\n\n`;
|
let hoverContent = `<span style="color:#4EC9B0;">★</span> <span style="color:#569CD6;">常量</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${apiConstant.name}</code>\n\n`;
|
||||||
hoverContent += `值: ${apiConstant.value}\n\n`;
|
hoverContent += `<span style="color:#C586C0;">值</span>: <code style="color:#B5CEA8;">${apiConstant.value}</code>\n\n`;
|
||||||
hoverContent += `${apiConstant.description}\n\n`;
|
hoverContent += `<span style="color:#6A9955;">${apiConstant.description}</span>\n\n`;
|
||||||
hoverContent += `类别: ${apiConstant.category}`;
|
hoverContent += `<span style="color:#C586C0;">类别</span>: <span style="color:#4EC9B0;">${apiConstant.category}</span>`;
|
||||||
|
|
||||||
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) {
|
if (functions.length === 1) {
|
||||||
// 单个函数
|
// 单个函数
|
||||||
const func = functions[0];
|
const func = functions[0];
|
||||||
hoverContent = `**函数**: \`${func.signature}\`\n\n`;
|
hoverContent = `<span style="color:#569CD6;">函数</span>: <code style="background-color:#2D2D30; color:#D4D4D4;">${func.signature}</code>\n\n`;
|
||||||
hoverContent += `**文件**: ${func.filePath}\n\n`;
|
hoverContent += `<span style="color:#C586C0;">文件</span>: <span style="color:#4EC9B0;">${func.filePath}</span>\n\n`;
|
||||||
hoverContent += `**行号**: ${func.lineNumber}`;
|
hoverContent += `<span style="color:#C586C0;">行号</span>: <span style="color:#B5CEA8;">${func.lineNumber}</span>`;
|
||||||
} else {
|
} else {
|
||||||
// 多个同名函数
|
// 多个同名函数
|
||||||
hoverContent = `**函数**: ${word}\n\n`;
|
hoverContent = `<span style="color:#569CD6;">函数</span>: <span style="color:#D4D4D4;">${word}</span>\n\n`;
|
||||||
hoverContent += `在多个文件中定义:\n\n`;
|
hoverContent += `<span style="color:#6A9955;">在多个文件中定义:</span>\n\n`;
|
||||||
functions.forEach(func => {
|
functions.forEach(func => {
|
||||||
hoverContent += `- \`${func.signature}\` (${func.filePath}:${func.lineNumber})\n`;
|
hoverContent += `- <code style="color:#DCDCAA;">${func.signature}</code> (<span style="color:#4EC9B0;">${func.filePath}</span>:<span style="color:#B5CEA8;">${func.lineNumber}</span>)\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 {
|
private getKeywordInfo(word: string): string | undefined {
|
||||||
const keywordMap: { [key: string]: string } = {
|
const keywordMap: { [key: string]: string } = {
|
||||||
'if': '**条件语句**\n\n用于条件执行代码块',
|
'if': '<span style="color:#C586C0;">条件语句</span>\n\n<span style="color:#6A9955;">用于条件执行代码块</span>',
|
||||||
'else': '**条件语句**\n\n与if语句配合使用,当if条件不满足时执行',
|
'else': '<span style="color:#C586C0;">条件语句</span>\n\n<span style="color:#6A9955;">与if语句配合使用,当if条件不满足时执行</span>',
|
||||||
'while': '**循环语句**\n\n当条件为真时重复执行代码块',
|
'while': '<span style="color:#C586C0;">循环语句</span>\n\n<span style="color:#6A9955;">当条件为真时重复执行代码块</span>',
|
||||||
'for': '**循环语句**\n\n用于循环执行代码块',
|
'for': '<span style="color:#C586C0;">循环语句</span>\n\n<span style="color:#6A9955;">用于循环执行代码块</span>',
|
||||||
'foreach': '**循环语句**\n\n遍历数组或表中的每个元素',
|
'foreach': '<span style="color:#C586C0;">循环语句</span>\n\n<span style="color:#6A9955;">遍历数组或表中的每个元素</span>',
|
||||||
'function': '**函数定义**\n\n用于定义函数',
|
'function': '<span style="color:#C586C0;">函数定义</span>\n\n<span style="color:#6A9955;">用于定义函数</span>',
|
||||||
'local': '**变量声明**\n\n声明局部变量',
|
'local': '<span style="color:#C586C0;">变量声明</span>\n\n<span style="color:#6A9955;">声明局部变量</span>',
|
||||||
'return': '**返回语句**\n\n从函数中返回值',
|
'return': '<span style="color:#C586C0;">返回语句</span>\n\n<span style="color:#6A9955;">从函数中返回值</span>',
|
||||||
'class': '**类定义**\n\n用于定义类',
|
'class': '<span style="color:#C586C0;">类定义</span>\n\n<span style="color:#6A9955;">用于定义类</span>',
|
||||||
'extends': '**继承**\n\n用于指定类的父类',
|
'extends': '<span style="color:#C586C0;">继承</span>\n\n<span style="color:#6A9955;">用于指定类的父类</span>',
|
||||||
'constructor': '**构造函数**\n\n类的构造函数',
|
'constructor': '<span style="color:#C586C0;">构造函数</span>\n\n<span style="color:#6A9955;">类的构造函数</span>',
|
||||||
'null': '**空值**\n\n表示空值',
|
'null': '<span style="color:#C586C0;">空值</span>\n\n<span style="color:#6A9955;">表示空值</span>',
|
||||||
'true': '**布尔值**\n\n表示真值',
|
'true': '<span style="color:#C586C0;">布尔值</span>\n\n<span style="color:#6A9955;">表示真值</span>',
|
||||||
'false': '**布尔值**\n\n表示假值'
|
'false': '<span style="color:#C586C0;">布尔值</span>\n\n<span style="color:#6A9955;">表示假值</span>'
|
||||||
};
|
};
|
||||||
|
|
||||||
return keywordMap[word];
|
return keywordMap[word];
|
||||||
@@ -156,22 +164,22 @@ export class HoverProvider implements vscode.HoverProvider {
|
|||||||
// 获取常量信息
|
// 获取常量信息
|
||||||
private getConstantInfo(word: string): string | undefined {
|
private getConstantInfo(word: string): string | undefined {
|
||||||
const constantMap: { [key: string]: string } = {
|
const constantMap: { [key: string]: string } = {
|
||||||
'PI': '**数学常量**\n\n圆周率 π ≈ 3.14159',
|
'PI': '<span style="color:#C586C0;">数学常量</span>\n\n<span style="color:#6A9955;">圆周率 π ≈ 3.14159</span>',
|
||||||
'E': '**数学常量**\n\n自然常数 e ≈ 2.71828',
|
'E': '<span style="color:#C586C0;">数学常量</span>\n\n<span style="color:#6A9955;">自然常数 e ≈ 2.71828</span>',
|
||||||
'RAND_MAX': '**随机数**\n\n随机数生成器的最大值',
|
'RAND_MAX': '<span style="color:#C586C0;">随机数</span>\n\n<span style="color:#6A9955;">随机数生成器的最大值</span>',
|
||||||
'CHAR_BIT': '**字符**\n\n一个字节的位数',
|
'CHAR_BIT': '<span style="color:#C586C0;">字符</span>\n\n<span style="color:#6A9955;">一个字节的位数</span>',
|
||||||
'CHAR_MAX': '**字符**\n\nchar类型的最大值',
|
'CHAR_MAX': '<span style="color:#C586C0;">字符</span>\n\n<span style="color:#6A9955;">char类型的最大值</span>',
|
||||||
'CHAR_MIN': '**字符**\n\nchar类型的最小值',
|
'CHAR_MIN': '<span style="color:#C586C0;">字符</span>\n\n<span style="color:#6A9955;">char类型的最小值</span>',
|
||||||
'SHRT_MAX': '**短整型**\n\nshort类型的最大值',
|
'SHRT_MAX': '<span style="color:#C586C0;">短整型</span>\n\n<span style="color:#6A9955;">short类型的最大值</span>',
|
||||||
'SHRT_MIN': '**短整型**\n\nshort类型的最小值',
|
'SHRT_MIN': '<span style="color:#C586C0;">短整型</span>\n\n<span style="color:#6A9955;">short类型的最小值</span>',
|
||||||
'INT_MAX': '**整型**\n\nint类型的最大值',
|
'INT_MAX': '<span style="color:#C586C0;">整型</span>\n\n<span style="color:#6A9955;">int类型的最大值</span>',
|
||||||
'INT_MIN': '**整型**\n\nint类型的最小值',
|
'INT_MIN': '<span style="color:#C586C0;">整型</span>\n\n<span style="color:#6A9955;">int类型的最小值</span>',
|
||||||
'LONG_MAX': '**长整型**\n\nlong类型的最大值',
|
'LONG_MAX': '<span style="color:#C586C0;">长整型</span>\n\n<span style="color:#6A9955;">long类型的最大值</span>',
|
||||||
'LONG_MIN': '**长整型**\n\nlong类型的最小值',
|
'LONG_MIN': '<span style="color:#C586C0;">长整型</span>\n\n<span style="color:#6A9955;">long类型的最小值</span>',
|
||||||
'FLT_MAX': '**浮点型**\n\nfloat类型的最大值',
|
'FLT_MAX': '<span style="color:#C586C0;">浮点型</span>\n\n<span style="color:#6A9955;">float类型的最大值</span>',
|
||||||
'FLT_MIN': '**浮点型**\n\nfloat类型的最小值',
|
'FLT_MIN': '<span style="color:#C586C0;">浮点型</span>\n\n<span style="color:#6A9955;">float类型的最小值</span>',
|
||||||
'DBL_MAX': '**双精度浮点型**\n\ndouble类型的最大值',
|
'DBL_MAX': '<span style="color:#C586C0;">双精度浮点型</span>\n\n<span style="color:#6A9955;">double类型的最大值</span>',
|
||||||
'DBL_MIN': '**双精度浮点型**\n\ndouble类型的最小值'
|
'DBL_MIN': '<span style="color:#C586C0;">双精度浮点型</span>\n\n<span style="color:#6A9955;">double类型的最小值</span>'
|
||||||
};
|
};
|
||||||
|
|
||||||
return constantMap[word];
|
return constantMap[word];
|
||||||
|
|||||||
Reference in New Issue
Block a user