# Squirrel NUT Explorer 功能说明

## 已实现的功能

### 1. 基础功能
- 通过 pvfUtility API 浏览和编辑 NUT 文件
- 支持连接到本地运行的 pvfUtility 服务
- 自动加载所有 NUT 文件内容
- 支持文件保存和刷新

### 2. 代码自动完成功能
- **基础自动完成**：提供关键字、API函数、类、常量的基本自动完成
- **跨文件完成**：能够识别其他已加载的 NUT 文件中定义的函数
- **变量完成**：提供当前文档中已声明的局部变量自动完成
- **点号完成**：支持对象属性和方法的自动完成（如 string.len, array.append 等）

### 3. 悬停信息功能
- **库函数信息显示**：显示内置函数的参数、返回值和描述
- **类信息显示**：显示内置类的方法和属性信息
- **常量信息显示**：显示内置常量的值和描述
- **跨文件自定义函数信息**：显示其他文件中定义的函数的参数和位置信息

### 4. 定义跳转功能
- **跨文件跳转**：支持在所有已加载的 NUT 文件中查找函数定义并跳转
- **多重定义支持**：当存在同名函数时，提供所有可能的定义位置供选择

### 5. 函数签名帮助
- **参数提示**：在函数调用时显示函数的参数列表
- **当前参数高亮**：高亮显示当前正在输入的参数
- **内置函数支持**：支持内置函数的签名帮助
- **自定义函数支持**：支持用户定义函数的签名帮助

### 6. 输入时格式化
- **括号触发格式化**：输入 ")" 时格式化当前行
- **分号触发格式化**：输入 ";" 时格式化当前行
- **大括号触发格式化**：输入 "}" 时格式化整个代码块
- **Squirrel语法优化**：针对Squirrel语言特性进行格式化优化

### 7. 代码格式化
- **缩进标准化**：统一代码缩进风格
- **空格规范化**：在操作符周围添加适当空格
- **换行管理**：合理安排代码换行
- **括号处理**：自动调整大括号位置和缩进

### 8. 代码错误检测
- **语法错误检测**：检测常见的语法错误，如拼写错误的关键字
- **未闭合字符串检测**：检测未正确闭合的字符串
- **未闭合括号检测**：检测未正确闭合的括号
- **逻辑错误提示**：提示可能的逻辑错误，如在条件语句中使用赋值操作符
- **快速修复**：提供拼写错误的快速修复功能

### 9. API文档解析
- **内置函数文档**：解析和管理Squirrel语言的内置函数文档
- **类文档**：解析和管理内置类的文档
- **常量文档**：解析和管理内置常量的文档
- **动态生成**：根据文档动态生成自动完成项和悬停信息

### 10. 语法定义支持
- **语法高亮**：支持关键字、字符串、注释、数字、操作符等的语法高亮
- **代码折叠**：支持基于大括号的代码折叠
- **自动闭合**：支持括号、引号的自动闭合
- **智能缩进**：根据代码结构自动调整缩进

## 缓存机制
- **函数缓存**：缓存所有已解析的函数信息，提高性能
- **持久化缓存**：在整个VS Code会话期间保持缓存有效
- **增量更新**：在保存文件时自动更新对应文件的缓存
- **重复函数处理**：正确处理同名函数，提供所有定义位置供选择

## 性能优化
- **批量处理**：文件按批次处理，避免内存溢出
- **并行处理**：批次内的文件并行处理，提高效率
- **增量更新**：仅在文件保存时更新对应文件的缓存
- **防重复提取**：防止同时进行多次提取操作
- **性能监控**：监控提取性能，为优化提供数据支持

## 使用方法
1. 确保 pvfUtility 服务正在运行
2. 在 VS Code 中打开 Squirrel NUT Explorer
3. 点击"连接到 pvfUtility"按钮
4. 连接成功后，所有功能将自动启用
5. 编辑和保存文件时，相关缓存会自动更新