Fix broken offset calculation

Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
pull/6118/merge^2
Sora 11 months ago committed by GitHub
parent 1b3c5fee17
commit a7952e284c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -265,45 +265,42 @@ pub fn render_sticky_context(
// if the definition of the function contains multiple lines
if node.has_context_end {
let (whitespace_offset, _) = visual_offset_from_block(
text,
text.line_to_byte(text.byte_to_line(node.byte_range.end)),
node.byte_range.end,
&helix_core::doc_formatter::TextFormat::default(),
&TextAnnotations::default(),
let line = text.byte_to_line(node.byte_range.end);
let line_start = text.line_to_char(line);
let anchor = text.byte_to_char(node.byte_range.end);
// TODO: we could avoid this when text rendering supports starting at
// a byte/char offset (doesn't work because of syntax highlighting atm)
let Position { col: whitespace_offset, .. } = pos_at_visual_coords(
text.slice(line_start..),
anchor - line_start,
);
let whitespace_offset = whitespace_offset.col as u16 + 1;
// calculation of the correct space on where the end of the signature
// calculation of the correct space where the end of the signature
// should be drawn at
let mut additional_area = line_context_area;
additional_area.x +=
(already_written + dots.len() as u16).saturating_sub(whitespace_offset);
additional_area.x +=(already_written + dots.len() as u16);
// render the end of the function definition
let mut renderer = TextRenderer::new(
surface,
doc,
theme,
view.offset.horizontal_offset,
whitespace_offset as u16,
additional_area,
);
new_offset.anchor = text.byte_to_char(node.byte_range.end);
)
let highlights = EditorView::doc_syntax_highlights(doc, new_offset.anchor, 1, theme);
let mut text_format = doc.text_format(additional_area.width, Some(theme));
let mut text_format = doc.text_format(additional_area.width.saturting_sub(already_written + dots.len() as u16), Some(theme));
text_format.soft_wrap = false;
render_text(
&mut renderer,
text,
new_offset,
ViewPosition { anchor, .. ViewPosition::default() },
&text_format,
&virtual_text_annotations,
highlights,
theme,
line_decoration,
translated_positions,
&mut [],
&mut [],
);
// draw the "..." with the keyword.operator style

Loading…
Cancel
Save