style(clippy): auto-fix code style issues and unnecessary map_or allocations detected by cargo clippy
This commit is contained in:
1 parent
febd48c65d
commit
706e9ad172
9 files changed
+131
-74
No files matched your search
+69
-46
@@ -64,7 +64,7 @@ async fn is_interactive(socket_path: &str) -> bool {
|
||||
if socket_path.contains("agy-headless-nvim") {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if let Ok(output) = tokio::process::Command::new("nvim")
|
||||
.arg("--server")
|
||||
.arg(socket_path)
|
||||
@@ -169,18 +169,22 @@ static NVIM_STATE: LazyLock<Arc<std::sync::Mutex<NvimState>>> =
|
||||
LazyLock::new(|| Arc::new(std::sync::Mutex::new(NvimState::default())));
|
||||
|
||||
fn handle_nvim_notification(params: &[rmpv::Value]) {
|
||||
if params.is_empty() { return; }
|
||||
if params.is_empty() {
|
||||
return;
|
||||
}
|
||||
if let rmpv::Value::String(event) = ¶ms[0] {
|
||||
match event.as_str().unwrap_or("") {
|
||||
"CursorMoved" => {
|
||||
if params.len() > 1
|
||||
&& let rmpv::Value::Array(pos) = ¶ms[1]
|
||||
&& pos.len() >= 4
|
||||
&& let (rmpv::Value::Integer(row), rmpv::Value::Integer(col)) = (&pos[1], &pos[2]) {
|
||||
let mut state = NVIM_STATE.lock().unwrap_or_else(|e| e.into_inner());
|
||||
state.cursor = format!("Line: {}, Column: {}", row, col);
|
||||
}
|
||||
},
|
||||
&& pos.len() >= 4
|
||||
&& let (rmpv::Value::Integer(row), rmpv::Value::Integer(col)) =
|
||||
(&pos[1], &pos[2])
|
||||
{
|
||||
let mut state = NVIM_STATE.lock().unwrap_or_else(|e| e.into_inner());
|
||||
state.cursor = format!("Line: {}, Column: {}", row, col);
|
||||
}
|
||||
}
|
||||
"TextChanged" => {
|
||||
tracing::debug!("Shadow buffer text changed event received");
|
||||
}
|
||||
@@ -195,28 +199,32 @@ async fn get_nvim_connection() -> Result<mpsc::Sender<NvimRequest>, String> {
|
||||
|
||||
{
|
||||
let mut conn_lock = NVIM_CONN.lock().unwrap_or_else(|e| e.into_inner());
|
||||
if let Some(sender) = conn_lock.as_ref() {
|
||||
if !sender.is_closed() {
|
||||
let current_socket = {
|
||||
let active_lock = ACTIVE_SOCKET.lock().unwrap_or_else(|e| e.into_inner());
|
||||
active_lock.clone()
|
||||
};
|
||||
if let Some(sender) = conn_lock.as_ref()
|
||||
&& !sender.is_closed()
|
||||
{
|
||||
let current_socket = {
|
||||
let active_lock = ACTIVE_SOCKET.lock().unwrap_or_else(|e| e.into_inner());
|
||||
active_lock.clone()
|
||||
};
|
||||
|
||||
if let Some(ref interactive) = interactive_socket {
|
||||
if Some(interactive.clone()) != current_socket {
|
||||
tracing::info!("Interactive Preemption: New Neovim instance detected at {}. Disconnecting from current.", interactive);
|
||||
should_kill_headless = true;
|
||||
*conn_lock = None;
|
||||
{
|
||||
let mut active_lock2 = ACTIVE_SOCKET.lock().unwrap_or_else(|e| e.into_inner());
|
||||
*active_lock2 = None;
|
||||
}
|
||||
} else {
|
||||
return Ok(sender.clone());
|
||||
if let Some(ref interactive) = interactive_socket {
|
||||
if Some(interactive.clone()) != current_socket {
|
||||
tracing::info!(
|
||||
"Interactive Preemption: New Neovim instance detected at {}. Disconnecting from current.",
|
||||
interactive
|
||||
);
|
||||
should_kill_headless = true;
|
||||
*conn_lock = None;
|
||||
{
|
||||
let mut active_lock2 =
|
||||
ACTIVE_SOCKET.lock().unwrap_or_else(|e| e.into_inner());
|
||||
*active_lock2 = None;
|
||||
}
|
||||
} else {
|
||||
return Ok(sender.clone());
|
||||
}
|
||||
} else {
|
||||
return Ok(sender.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,7 +246,10 @@ async fn get_nvim_connection() -> Result<mpsc::Sender<NvimRequest>, String> {
|
||||
spawn_headless_nvim().await?
|
||||
};
|
||||
|
||||
tracing::info!("Establishing new persistent connection to Neovim at {}", socket_path);
|
||||
tracing::info!(
|
||||
"Establishing new persistent connection to Neovim at {}",
|
||||
socket_path
|
||||
);
|
||||
|
||||
#[cfg(windows)]
|
||||
let stream = {
|
||||
@@ -308,12 +319,14 @@ async fn get_nvim_connection() -> Result<mpsc::Sender<NvimRequest>, String> {
|
||||
if let Some((_, reply_sender)) = pending_clone2.remove(&msgid) {
|
||||
let _ = reply_sender.send(Ok(val));
|
||||
}
|
||||
} else if arr.len() >= 3 && arr[0] == rmpv::Value::Integer(2.into())
|
||||
} else if arr.len() >= 3
|
||||
&& arr[0] == rmpv::Value::Integer(2.into())
|
||||
&& let rmpv::Value::String(method) = &arr[1]
|
||||
&& method.as_str().unwrap_or("") == "mcp_event"
|
||||
&& let rmpv::Value::Array(params) = &arr[2] {
|
||||
handle_nvim_notification(params);
|
||||
}
|
||||
&& method.as_str().unwrap_or("") == "mcp_event"
|
||||
&& let rmpv::Value::Array(params) = &arr[2]
|
||||
{
|
||||
handle_nvim_notification(params);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -407,11 +420,13 @@ async fn get_nvim_connection() -> Result<mpsc::Sender<NvimRequest>, String> {
|
||||
]),
|
||||
]);
|
||||
let (reply_tx, _reply_rx) = tokio::sync::oneshot::channel();
|
||||
let _ = tx_clone.send(NvimRequest {
|
||||
msgid,
|
||||
req,
|
||||
reply: reply_tx,
|
||||
}).await;
|
||||
let _ = tx_clone
|
||||
.send(NvimRequest {
|
||||
msgid,
|
||||
req,
|
||||
reply: reply_tx,
|
||||
})
|
||||
.await;
|
||||
tracing::info!("Injected bidirectional event tracking autocmds into Neovim");
|
||||
});
|
||||
|
||||
@@ -781,7 +796,8 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
id,
|
||||
result: Some(json!({"resources": []})),
|
||||
error: None,
|
||||
}).await;
|
||||
})
|
||||
.await;
|
||||
}
|
||||
"resources/templates/list" => {
|
||||
send_response(JsonRpcResponse {
|
||||
@@ -789,7 +805,8 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
id,
|
||||
result: Some(json!({"resourceTemplates": []})),
|
||||
error: None,
|
||||
}).await;
|
||||
})
|
||||
.await;
|
||||
}
|
||||
"prompts/list" => {
|
||||
send_response(JsonRpcResponse {
|
||||
@@ -797,7 +814,8 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
id,
|
||||
result: Some(json!({"prompts": []})),
|
||||
error: None,
|
||||
}).await;
|
||||
})
|
||||
.await;
|
||||
}
|
||||
|
||||
"tools/list" => {
|
||||
@@ -1428,12 +1446,14 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
Err(e) => send_error(id, -32603, &e).await,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"nvim_read_file" => {
|
||||
if let Some(file) = args.get("file").and_then(|v| v.as_str()) {
|
||||
let start_line = args.get("start_line").and_then(|v| v.as_i64()).unwrap_or(1);
|
||||
let end_line = args.get("end_line").and_then(|v| v.as_i64()).unwrap_or(-1);
|
||||
|
||||
let start_line =
|
||||
args.get("start_line").and_then(|v| v.as_i64()).unwrap_or(1);
|
||||
let end_line =
|
||||
args.get("end_line").and_then(|v| v.as_i64()).unwrap_or(-1);
|
||||
|
||||
let escaped_file = file.replace('\\', "\\\\").replace('"', "\\\"");
|
||||
let code = format!("
|
||||
local file = \"{escaped_file}\"
|
||||
@@ -1459,14 +1479,15 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
send_error(id, -32602, "Missing 'file'").await;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"nvim_search_file" => {
|
||||
if let (Some(file), Some(pattern)) = (
|
||||
args.get("file").and_then(|v| v.as_str()),
|
||||
args.get("pattern").and_then(|v| v.as_str()),
|
||||
) {
|
||||
let escaped_file = file.replace('\\', "\\\\").replace('"', "\\\"");
|
||||
let escaped_pattern = pattern.replace('\\', "\\\\").replace('"', "\\\"");
|
||||
let escaped_pattern =
|
||||
pattern.replace('\\', "\\\\").replace('"', "\\\"");
|
||||
let code = format!("
|
||||
local file = \"{escaped_file}\"
|
||||
local pattern = \"{escaped_pattern}\"
|
||||
@@ -1545,7 +1566,9 @@ pub async fn run_mcp_loop(app_name: &str, app_version: &str) {
|
||||
let exe_path = std::env::current_exe()
|
||||
.map(|p| p.to_string_lossy().to_string())
|
||||
.unwrap_or_else(|_| "unknown".to_string());
|
||||
let socket = get_socket_path().await.unwrap_or_else(|e| format!("Error: {}", e));
|
||||
let socket = get_socket_path()
|
||||
.await
|
||||
.unwrap_or_else(|e| format!("Error: {}", e));
|
||||
let info = format!(
|
||||
"Server: {}\nVersion: {}\nOS: {}\nExecutable: {}\nBackend Socket: {}",
|
||||
app_name, app_version, os, exe_path, socket
|
||||
|
||||
Reference in new issue
Block a user