fix: apply automatic clippy fixes across workspace
This commit is contained in:
1 parent
73ab5037d8
commit
5da422d23a
12 files changed
+99
-115
No files matched your search
+56
-61
@@ -55,7 +55,7 @@ pub async fn send_error(id: Value, code: i32, message: &str) {
|
||||
async fn get_socket_path() -> Result<String, String> {
|
||||
let profile =
|
||||
std::env::var("USERPROFILE").unwrap_or_else(|_| "C:\\Users\\reazul.ashraf".into());
|
||||
let path = format!("{}\\.gemini\\active_nvim.txt", profile);
|
||||
let path = format!("{profile}\\.gemini\\active_nvim.txt");
|
||||
|
||||
if let Ok(content) = tokio::fs::read_to_string(&path).await {
|
||||
let p = content.trim().to_string();
|
||||
@@ -63,10 +63,9 @@ async fn get_socket_path() -> Result<String, String> {
|
||||
if p.starts_with(r"\\.\pipe\") {
|
||||
return Ok(p);
|
||||
} else if p.starts_with("nvim.") {
|
||||
return Ok(format!(r"\\.\pipe\{}", p));
|
||||
} else {
|
||||
return Ok(p);
|
||||
return Ok(format!(r"\\.\pipe\{p}"));
|
||||
}
|
||||
return Ok(p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +75,7 @@ async fn get_socket_path() -> Result<String, String> {
|
||||
let name = entry.file_name();
|
||||
let name_str = name.to_string_lossy();
|
||||
if name_str.starts_with("nvim.") {
|
||||
return Ok(format!(r"\\.\pipe\{}", name_str));
|
||||
return Ok(format!(r"\\.\pipe\{name_str}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -196,7 +195,7 @@ async fn get_nvim_connection() -> Result<mpsc::Sender<NvimRequest>, String> {
|
||||
if let rmpv::Value::Array(ref arr) = val {
|
||||
if arr.len() >= 4 && arr[0] == rmpv::Value::Integer(1.into()) {
|
||||
let msgid = &arr[1];
|
||||
let msgid_str = format!("{:?}", msgid);
|
||||
let msgid_str = format!("{msgid:?}");
|
||||
|
||||
if let Some(reply_sender) =
|
||||
pending_clone2.lock().unwrap().remove(&msgid_str)
|
||||
@@ -283,7 +282,7 @@ async fn call_nvim(req: rmpv::Value) -> Result<rmpv::Value, String> {
|
||||
rmpv::Value::Nil
|
||||
};
|
||||
|
||||
let msgid_str = format!("{:?}", msgid);
|
||||
let msgid_str = format!("{msgid:?}");
|
||||
let tx = get_nvim_connection().await?;
|
||||
let (reply_tx, reply_rx) = oneshot::channel();
|
||||
|
||||
@@ -373,7 +372,7 @@ async fn get_nvim_cursor() -> Result<String, String> {
|
||||
if let RmpValue::Array(pos) = &arr[3] {
|
||||
if pos.len() == 2 {
|
||||
if let (RmpValue::Integer(row), RmpValue::Integer(col)) = (&pos[0], &pos[1]) {
|
||||
return Ok(format!("Line: {}, Column: {}", row, col));
|
||||
return Ok(format!("Line: {row}, Column: {col}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -419,19 +418,18 @@ async fn get_nvim_visual_selection() -> Result<String, String> {
|
||||
}
|
||||
|
||||
async fn set_nvim_diagnostics(line: i64, message: &str) -> Result<(), String> {
|
||||
let escaped_message = message.replace("\\", "\\\\").replace("\"", "\\\"");
|
||||
let escaped_message = message.replace('\\', "\\\\").replace('"', "\\\"");
|
||||
let lua_script = format!(
|
||||
r#"
|
||||
local ns = vim.api.nvim_create_namespace("gemini_diagnostics")
|
||||
local diagnostics = {{{{
|
||||
lnum = {} - 1,
|
||||
lnum = {line} - 1,
|
||||
col = 0,
|
||||
severity = vim.diagnostic.severity.WARN,
|
||||
message = "{}",
|
||||
message = "{escaped_message}",
|
||||
}}}}
|
||||
vim.diagnostic.set(ns, 0, diagnostics, {{}})
|
||||
"#,
|
||||
line, escaped_message
|
||||
"#
|
||||
);
|
||||
|
||||
use rmpv::Value as RmpValue;
|
||||
@@ -487,7 +485,7 @@ fn rmpv_to_json(val: &rmpv::Value) -> serde_json::Value {
|
||||
let key_str = if let rmpv::Value::String(s) = k {
|
||||
s.as_str().unwrap_or("").to_string()
|
||||
} else {
|
||||
format!("{:?}", k)
|
||||
format!("{k:?}")
|
||||
};
|
||||
obj.insert(key_str, rmpv_to_json(v));
|
||||
}
|
||||
@@ -514,7 +512,7 @@ async fn execute_nvim_lua(code: &str) -> Result<String, String> {
|
||||
if arr.len() > 3 {
|
||||
return Ok(serde_json::to_string_pretty(&rmpv_to_json(&arr[3])).unwrap_or_default());
|
||||
}
|
||||
return Ok("".to_string());
|
||||
return Ok(String::new());
|
||||
}
|
||||
Err("Invalid response".to_string())
|
||||
}
|
||||
@@ -549,12 +547,9 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
tracing::info!("{} MCP server started", app_name);
|
||||
let mut stdin = tokio::io::BufReader::new(tokio::io::stdin());
|
||||
loop {
|
||||
let raw_msg = match mcp_stdio::read_mcp_message(&mut stdin).await {
|
||||
Some(m) => m,
|
||||
None => {
|
||||
tracing::info!("Stdin closed, exiting loop");
|
||||
break;
|
||||
}
|
||||
let raw_msg = if let Some(m) = mcp_stdio::read_mcp_message(&mut stdin).await { m } else {
|
||||
tracing::info!("Stdin closed, exiting loop");
|
||||
break;
|
||||
};
|
||||
|
||||
let msg = match serde_json::from_str::<JsonRpcRequest>(&raw_msg) {
|
||||
@@ -586,7 +581,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
.and_then(|p| p.get("name"))
|
||||
.and_then(|n| n.as_str())
|
||||
.unwrap_or("unknown");
|
||||
format!("ToolCall[{}]", tool_name)
|
||||
format!("ToolCall[{tool_name}]")
|
||||
} else {
|
||||
msg.method.clone()
|
||||
};
|
||||
@@ -698,7 +693,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
]
|
||||
})),
|
||||
error: None,
|
||||
}).await
|
||||
}).await;
|
||||
}
|
||||
"tools/call" => {
|
||||
let params = msg.params.unwrap_or(json!({}));
|
||||
@@ -710,12 +705,12 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
"nvim_goto_line" => {
|
||||
if let (Some(file), Some(line)) = (
|
||||
args.get("file").and_then(|v| v.as_str()),
|
||||
args.get("line").and_then(|v| v.as_i64()),
|
||||
args.get("line").and_then(serde_json::Value::as_i64),
|
||||
) {
|
||||
let escaped_file = file.replace("\\", "\\\\");
|
||||
let cmd = format!("e {} | {} | normal! zz", escaped_file, line);
|
||||
let escaped_file = file.replace('\\', "\\\\");
|
||||
let cmd = format!("e {escaped_file} | {line} | normal! zz");
|
||||
match send_nvim_command(&cmd).await {
|
||||
Ok(_) => {
|
||||
Ok(()) => {
|
||||
send_text_result!(id.clone(), format!("Successfully jumped to {} line {}", file, line));
|
||||
}
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
@@ -744,11 +739,11 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
},
|
||||
"nvim_set_diagnostics" => {
|
||||
if let (Some(line), Some(message)) = (
|
||||
args.get("line").and_then(|v| v.as_i64()),
|
||||
args.get("line").and_then(serde_json::Value::as_i64),
|
||||
args.get("message").and_then(|v| v.as_str()),
|
||||
) {
|
||||
match set_nvim_diagnostics(line, message).await {
|
||||
Ok(_) => {
|
||||
Ok(()) => {
|
||||
send_text_result!(id.clone(), format!("Successfully set diagnostic on line {}", line));
|
||||
}
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
@@ -758,7 +753,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
}
|
||||
}
|
||||
"nvim_list_buffers" => {
|
||||
let lua_code = r#"
|
||||
let lua_code = r"
|
||||
local bufs = vim.api.nvim_list_bufs()
|
||||
local result = {}
|
||||
for _, buf in ipairs(bufs) do
|
||||
@@ -768,7 +763,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
end
|
||||
end
|
||||
return vim.fn.json_encode(result)
|
||||
"#;
|
||||
";
|
||||
match execute_nvim_lua(lua_code).await {
|
||||
Ok(result) => {
|
||||
send_text_result!(id.clone(), result);
|
||||
@@ -777,7 +772,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
}
|
||||
}
|
||||
"nvim_get_diagnostics" => {
|
||||
let lua_code = r#"
|
||||
let lua_code = r"
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local diagnostics = vim.diagnostic.get(bufnr)
|
||||
local result = {}
|
||||
@@ -791,7 +786,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
})
|
||||
end
|
||||
return vim.fn.json_encode(result)
|
||||
"#;
|
||||
";
|
||||
match execute_nvim_lua(lua_code).await {
|
||||
Ok(result) => {
|
||||
send_text_result!(id.clone(), result);
|
||||
@@ -801,24 +796,24 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
}
|
||||
|
||||
"nvim_open_file" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
vim.cmd('edit ' .. vim.fn.fnameescape(args.file))
|
||||
if args.filetype and args.filetype ~= '' then
|
||||
vim.bo.filetype = args.filetype
|
||||
end
|
||||
return 'Opened file ' .. args.file
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
"nvim_open_buffer" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local buf = vim.api.nvim_create_buf(true, true)
|
||||
if args.name and args.name ~= '' then
|
||||
pcall(vim.api.nvim_buf_set_name, buf, args.name)
|
||||
@@ -832,30 +827,30 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
end
|
||||
vim.api.nvim_win_set_buf(0, buf)
|
||||
return 'Opened buffer ' .. tostring(buf)
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
"nvim_close_buffer" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local buf = args.buf_id or vim.api.nvim_get_current_buf()
|
||||
local force = args.force or false
|
||||
vim.api.nvim_buf_delete(buf, {{ force = force }})
|
||||
return 'Closed buffer ' .. tostring(buf)
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
"nvim_split_window" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local cmd = args.direction == 'horizontal' and 'split' or 'vsplit'
|
||||
vim.cmd(cmd)
|
||||
if args.file and args.file ~= '' then
|
||||
@@ -864,16 +859,16 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
vim.api.nvim_win_set_buf(0, args.buf_id)
|
||||
end
|
||||
return 'Split window created'
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
"nvim_reload_buffer" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local buf = args.buf_id or vim.api.nvim_get_current_buf()
|
||||
vim.api.nvim_buf_call(buf, function()
|
||||
if args.force then
|
||||
@@ -883,7 +878,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
end
|
||||
end)
|
||||
return 'Reloaded buffer ' .. tostring(buf)
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
@@ -900,9 +895,9 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
}
|
||||
}
|
||||
"nvim_set_quickfix" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local items = args.items or {{}}
|
||||
local action = ' '
|
||||
if args.action == 'append' then action = 'a' end
|
||||
@@ -911,16 +906,16 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
vim.fn.setqflist(items, action)
|
||||
vim.cmd('copen')
|
||||
return 'Populated quickfix with ' .. tostring(#items) .. ' items'
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
"nvim_highlight_lines" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local buf = args.buf_id or vim.api.nvim_get_current_buf()
|
||||
local group = args.group or 'IncSearch'
|
||||
local ns = vim.api.nvim_create_namespace('antigravity_highlight')
|
||||
@@ -942,16 +937,16 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
end, duration)
|
||||
end
|
||||
return 'Highlighted lines ' .. tostring(args.start_line) .. ' to ' .. tostring(args.end_line)
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
"nvim_get_messages" => {
|
||||
let json_str = serde_json::to_string(args).unwrap().replace("\\", "\\\\").replace("'", "\\'");
|
||||
let json_str = serde_json::to_string(args).unwrap().replace('\\', "\\\\").replace('\'', "\\'");
|
||||
let code = format!("
|
||||
local args = vim.json.decode('{}')
|
||||
local args = vim.json.decode('{json_str}')
|
||||
local msg = vim.fn.execute('messages')
|
||||
local lines = vim.split(msg, '\\n')
|
||||
if args.tail and args.tail > 0 and #lines > args.tail then
|
||||
@@ -962,7 +957,7 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
return table.concat(tail_lines, '\\n')
|
||||
end
|
||||
return msg
|
||||
", json_str);
|
||||
");
|
||||
match execute_nvim_lua(&code).await {
|
||||
Ok(res) => send_text_result!(id.clone(), res),
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
@@ -1001,10 +996,10 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
if !id.is_null() {
|
||||
send_error(id, -32601, "Method not found").await;
|
||||
} else {
|
||||
if id.is_null() {
|
||||
// Ignore notifications silently
|
||||
} else {
|
||||
send_error(id, -32601, "Method not found").await;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1025,7 +1020,7 @@ fn init_logging(app_name: &str) -> tracing_appender::non_blocking::WorkerGuard {
|
||||
.join(".gemini/mcp_memory/logs");
|
||||
std::fs::create_dir_all(&log_dir).unwrap_or_default();
|
||||
|
||||
let file_appender = tracing_appender::rolling::daily(log_dir, format!("{}.log", app_name));
|
||||
let file_appender = tracing_appender::rolling::daily(log_dir, format!("{app_name}.log"));
|
||||
let (non_blocking, guard) = tracing_appender::non_blocking(file_appender);
|
||||
|
||||
let _ = tracing_subscriber::fmt()
|
||||
|
||||
Reference in new issue
Block a user