1.1.1 优化自动补全和悬浮显示

This commit is contained in:
睿 安
2025-09-17 22:31:31 +08:00
parent 7c838fa49c
commit fe15f52be5
17 changed files with 464 additions and 431 deletions

View File

@@ -40,7 +40,8 @@ const path = __importStar(require("path"));
// API文档解析器类
class ApiParser {
constructor() {
this.functions = [];
this.functions = []; // 普通函数,不自动填写第一个参数
this.functionEx = []; // 扩展函数,自动填写所有参数
this.classes = [];
this.constants = [];
// 获取扩展路径并设置JSON文件路径
@@ -65,6 +66,7 @@ class ApiParser {
const apiData = JSON.parse(jsonData);
// 加载函数数据
this.functions = apiData.functions || [];
this.functionEx = apiData.functionEx || [];
// 加载类数据
this.classes = apiData.classes || [];
// 加载常量数据
@@ -383,6 +385,7 @@ class ApiParser {
try {
const apiData = {
functions: this.functions,
functionEx: this.functionEx,
classes: this.classes,
constants: this.constants
};
@@ -396,13 +399,27 @@ class ApiParser {
reloadApiDocumentation() {
this.initializeApiDocumentation();
}
// 获取所有函数
// 获取所有普通函数
getFunctions() {
return this.functions;
}
// 根据名称获取函数
// 获取所有扩展函数
getFunctionEx() {
return this.functionEx;
}
// 根据名称获取函数(包括普通函数和扩展函数)
getFunctionByName(name) {
return this.functions.find(func => func.name === name);
// 先在普通函数中查找
let func = this.functions.find(func => func.name === name);
if (func) {
return func;
}
// 再在扩展函数中查找
return this.functionEx.find(func => func.name === name);
}
// 检查是否是扩展函数
isFunctionEx(name) {
return this.functionEx.some(func => func.name === name);
}
// 获取所有类
getClasses() {
@@ -425,19 +442,41 @@ class ApiParser {
return this.constants.find(constant => constant.name === name);
}
// 生成函数签名
generateFunctionSignature(func) {
const params = func.params.map(param => {
let paramStr = param.name;
if (param.optional) {
paramStr = `[${paramStr}`;
if (param.defaultValue) {
paramStr += `=${param.defaultValue}`;
generateFunctionSignature(func, isFunctionEx = false) {
// 检查是否是普通函数且有参数
if (!isFunctionEx && func.params.length > 0) {
// 对于普通函数,将第一个参数移到函数名前面
const firstParam = func.params[0];
const remainingParams = func.params.slice(1);
const params = remainingParams.map(param => {
let paramStr = param.name;
if (param.optional) {
paramStr = `[${paramStr}`;
if (param.defaultValue) {
paramStr += `=${param.defaultValue}`;
}
paramStr += ']';
}
paramStr += ']';
}
return paramStr;
}).join(', ');
return `function ${func.name}(${params})${func.returns ? `: ${func.returns.type}` : ': void'}`;
return paramStr;
}).join(', ');
const paramPart = params ? `(${params})` : '()';
return `function ${firstParam.name}.${func.name}${paramPart}${func.returns ? `: ${func.returns.type}` : ': void'}`;
}
else {
// 对于扩展函数或无参数的函数,保持原有格式
const params = func.params.map(param => {
let paramStr = param.name;
if (param.optional) {
paramStr = `[${paramStr}`;
if (param.defaultValue) {
paramStr += `=${param.defaultValue}`;
}
paramStr += ']';
}
return paramStr;
}).join(', ');
return `function ${func.name}(${params})${func.returns ? `: ${func.returns.type}` : ': void'}`;
}
}
// 生成类签名
generateClassSignature(cls) {