Skip to content

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-lsp

TCP 模式

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{}

基於 MIT 許可證發佈。