LSP 与编辑器支持
OpenPine 包含完整的语言服务器协议(LSP)实现和 VS Code 扩展。
功能
LSP 支持 20+ 项功能:
| 功能 | 描述 |
|---|---|
| 诊断 | 实时错误和警告报告 |
| 补全 | 上下文感知的代码补全 |
| 签名帮助 | 函数参数提示 |
| 悬停 | 悬停时显示类型信息和文档 |
| 跳转到定义 | 跳转到函数/类型/变量定义 |
| 跳转到类型定义 | 跳转到符号的类型 |
| 查找引用 | 查找符号的所有用法 |
| 文档高亮 | 高亮符号的所有出现位置 |
| 文档符号 | 函数、类型、变量的大纲 |
| 工作区符号 | 跨文件搜索符号 |
| 重命名 | 跨项目重命名符号 |
| 文档颜色 | 颜色字面量预览 |
| 格式化 | 自动格式化 Pine Script 代码 |
| 输入时格式化 | 输入时自动格式化 |
| 语义标记 | 丰富的语法高亮 |
| 内联提示 | 内联类型和参数提示 |
| Code Lens | 函数上方的内联操作 |
| 折叠范围 | 代码块折叠 |
| 调用层次 | 传入/传出调用树 |
VS Code 扩展
安装
VS Code 扩展位于 crates/lsp/editors/vscode/。
构建并安装:
bash
cd crates/lsp/editors/vscode
npm install
npm run build
npm run package
code --install-extension openpine-0.1.0.vsix --force功能
- 通过 TextMate 语法提供语法高亮
- 上述所有 LSP 功能
- Pine Script 文件关联(
.pine文件)
运行 LSP 服务器
Stdio 模式(默认)
bash
cargo run -p openpine-lspTCP 模式
bash
cargo run -p openpine-lsp -- --tcp --port 9257使用 Analyzer API
对于编程使用,Analyzer 结构体提供对 LSP 功能的直接访问:
rust
use openpine_lsp::Analyzer;
let analyzer = Analyzer::new(loader);
let result = analyzer.analyze("script.pine", source);
// 获取诊断
let diagnostics = result.diagnostics();
// 在指定位置获取补全
let completions = result.completions_at(position);
// 跳转到定义
let definition = result.definition_at(position);
// 查找所有引用
let references = result.references_at(position, include_declaration);
// 获取文档符号
let symbols = result.document_symbols();
// 获取文档颜色
let colors = result.document_colors();Neovim 设置
使用 nvim-lspconfig 的 Neovim 配置:
lua
local lspconfig = require('lspconfig')
local configs = require('lspconfig.configs')
configs.openpine = {
default_config = {
cmd = { 'path/to/openpine-lsp' },
filetypes = { 'pine' },
root_dir = lspconfig.util.find_git_ancestor,
},
}
lspconfig.openpine.setup{}