102 lines
2.6 KiB
Rust
102 lines
2.6 KiB
Rust
use schemars::JsonSchema;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
|
|
#[serde(tag = "action", rename_all = "snake_case")]
|
|
pub enum NvimBufferTool {
|
|
Read {
|
|
file: String,
|
|
start_line: Option<i64>,
|
|
end_line: Option<i64>,
|
|
},
|
|
Replace {
|
|
file: Option<String>,
|
|
start_line: Option<i64>,
|
|
end_line: Option<i64>,
|
|
replacement_content: Option<String>,
|
|
expected_content: Option<String>,
|
|
edits: Option<Vec<BufferEdit>>,
|
|
},
|
|
Save {
|
|
file: Option<String>,
|
|
},
|
|
Undo {
|
|
steps: Option<i64>,
|
|
},
|
|
Redo {
|
|
steps: Option<i64>,
|
|
},
|
|
CreateScratch {
|
|
name: Option<String>,
|
|
content: Option<String>,
|
|
},
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
|
|
pub struct BufferEdit {
|
|
pub file: String,
|
|
pub start_line: i64,
|
|
pub end_line: i64,
|
|
pub replacement_content: String,
|
|
pub expected_content: Option<String>,
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
|
|
#[serde(tag = "action", rename_all = "snake_case")]
|
|
pub enum NvimWorkspaceTool {
|
|
ListBuffers,
|
|
ListWindows,
|
|
Focus {
|
|
win_id: i64,
|
|
},
|
|
Split {
|
|
direction: Option<String>,
|
|
file: Option<String>,
|
|
buf_id: Option<i64>,
|
|
},
|
|
Cwd {
|
|
path: Option<String>,
|
|
},
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
|
|
#[serde(tag = "action", rename_all = "snake_case")]
|
|
pub enum NvimIntelligenceTool {
|
|
Hover { file: String, line: i64, col: i64 },
|
|
Definition { file: String, line: i64, col: i64 },
|
|
References { file: String, line: i64, col: i64 },
|
|
CodeAction { file: String, line: i64, col: i64 },
|
|
Rename { file: String, line: i64, col: i64, new_name: String },
|
|
Diagnostics { file: String },
|
|
Outline { file: String },
|
|
Query { file: String, query: Option<String>, preset: Option<String> },
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
|
|
#[serde(tag = "action", rename_all = "snake_case")]
|
|
pub enum NvimUiTool {
|
|
Highlight {
|
|
buf_id: Option<i64>,
|
|
start_line: i64,
|
|
end_line: Option<i64>,
|
|
highlight_group: Option<String>,
|
|
duration_ms: Option<i64>,
|
|
},
|
|
GhostText {
|
|
line: i64,
|
|
text: String,
|
|
highlight_group: Option<String>,
|
|
},
|
|
Clear {
|
|
buf_id: Option<i64>,
|
|
},
|
|
}
|
|
|
|
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
|
|
#[serde(tag = "action", rename_all = "snake_case")]
|
|
pub enum NvimExecTool {
|
|
Lua { code: String },
|
|
Vimscript { code: String },
|
|
Terminal { command: String },
|
|
}
|