diff --git a/Cargo.lock b/Cargo.lock index bafd204..6dfe424 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1566,7 +1566,7 @@ dependencies = [ [[package]] name = "lsp-ai" -version = "0.4.1" +version = "0.5.1" dependencies = [ "anyhow", "assert_cmd", diff --git a/crates/lsp-ai/Cargo.toml b/crates/lsp-ai/Cargo.toml index 3dc7377..e2f1222 100644 --- a/crates/lsp-ai/Cargo.toml +++ b/crates/lsp-ai/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lsp-ai" -version = "0.5.0" +version = "0.5.1" description.workspace = true repository.workspace = true diff --git a/crates/lsp-ai/src/transformer_worker.rs b/crates/lsp-ai/src/transformer_worker.rs index 0662e26..d52e3e3 100644 --- a/crates/lsp-ai/src/transformer_worker.rs +++ b/crates/lsp-ai/src/transformer_worker.rs @@ -421,8 +421,12 @@ async fn do_code_action_resolve( )))?; let file_text = rx.await?; - let (messages_text, text_edit_line) = if chat.trigger == "" { - (file_text.as_str(), file_text.lines().count() + 1) + let (messages_text, text_edit_line, text_edit_char) = if chat.trigger == "" { + ( + file_text.as_str(), + file_text.lines().count(), + file_text.lines().last().unwrap_or("").chars().count(), + ) } else { let mut split = file_text.split(&chat.trigger); let text_edit_line = split @@ -435,7 +439,8 @@ async fn do_code_action_resolve( .context("trigger not found when resolving chat code action")?; ( messages_text, - text_edit_line + messages_text.lines().count() + 1, + text_edit_line + messages_text.lines().count(), + messages_text.lines().last().unwrap_or("").chars().count(), ) }; @@ -515,8 +520,8 @@ async fn do_code_action_resolve( let edit = TextEdit::new( Range::new( - Position::new(text_edit_line as u32, 0), - Position::new(text_edit_line as u32, 0), + Position::new(text_edit_line as u32, text_edit_char as u32), + Position::new(text_edit_line as u32, text_edit_char as u32), ), response.insert_text.clone(), );