From 171d28d2bdefa59ebada9eee13ef7e5cbdf0c0af Mon Sep 17 00:00:00 2001 From: Pascal Kuthe Date: Sat, 11 Mar 2023 03:34:43 +0100 Subject: [PATCH] indent snippets to line indent instead of completion start (#6263) --- helix-lsp/src/lib.rs | 16 ++++++---------- helix-term/src/ui/completion.rs | 1 + 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/helix-lsp/src/lib.rs b/helix-lsp/src/lib.rs index 1463ccb3c..e31df59f4 100644 --- a/helix-lsp/src/lib.rs +++ b/helix-lsp/src/lib.rs @@ -345,6 +345,7 @@ pub mod util { line_ending: &str, include_placeholder: bool, tab_width: usize, + indent_width: usize, ) -> Transaction { let text = doc.slice(..); @@ -374,19 +375,14 @@ pub mod util { let mapped_replacement_end = (replacement_end as i128 + off) as usize; let line_idx = mapped_doc.char_to_line(mapped_replacement_start); - let pos_on_line = mapped_replacement_start - mapped_doc.line_to_char(line_idx); - - // we only care about the actual offset here (not virtual text/softwrap) - // so it's ok to use the deprecated function here - #[allow(deprecated)] - let width = helix_core::visual_coords_at_pos( + let indent_level = helix_core::indent::indent_level_for_line( mapped_doc.line(line_idx), - pos_on_line, tab_width, - ) - .col; + indent_width, + ) * indent_width; + let newline_with_offset = format!( - "{line_ending}{blank:width$}", + "{line_ending}{blank:indent_level$}", line_ending = line_ending, blank = "" ); diff --git a/helix-term/src/ui/completion.rs b/helix-term/src/ui/completion.rs index 6303793b4..da6b5ddcb 100644 --- a/helix-term/src/ui/completion.rs +++ b/helix-term/src/ui/completion.rs @@ -182,6 +182,7 @@ impl Completion { doc.line_ending.as_str(), include_placeholder, doc.tab_width(), + doc.indent_width(), ), Err(err) => { log::error!(