on master help sign in
Render current line:col.
d692390Blaž Hrastnik
helix-term/src/ui/editor.rs+19−3
@@ -7,6 +7,7 @@ use crate::{
7};
7};
8
8
9use helix_core::{
9use helix_core::{
10+ coords_at_pos,
10 syntax::{self, HighlightEvent},
11 syntax::{self, HighlightEvent},
11 Position, Range,
12 Position, Range,
12};
13};
@@ -87,7 +88,7 @@ impl EditorView {
87 view.area.width,
88 view.area.width,
88 1,
89 1,
89 );
90 );
90− self.render_statusline(doc, area, surface, theme, is_focused);
91+ self.render_statusline(doc, view, area, surface, theme, is_focused);
91
92
92 // render status
93 // render status
93 if let Some(status_msg) = &self.status_msg {
94 if let Some(status_msg) = &self.status_msg {
@@ -411,6 +412,7 @@ impl EditorView {
411 pub fn render_statusline(
412 pub fn render_statusline(
412 &self,
413 &self,
413 doc: &Document,
414 doc: &Document,
415+ view: &View,
414 viewport: Rect,
416 viewport: Rect,
415 surface: &mut Surface,
417 surface: &mut Surface,
416 theme: &Theme,
418 theme: &Theme,
@@ -449,10 +451,24 @@ impl EditorView {
449 );
451 );
450 }
452 }
451
453
452− surface.set_string(
454+ surface.set_stringn(
453− viewport.x + viewport.width.saturating_sub(10),
455+ viewport.x + viewport.width.saturating_sub(15),
454 viewport.y,
456 viewport.y,
455 format!("{}", doc.diagnostics.len()),
457 format!("{}", doc.diagnostics.len()),
458+ 4,
459+ text_color,
460+ );
461+
462+ // render line:col
463+ let pos = coords_at_pos(doc.text().slice(..), doc.selection(view.id).cursor());
464+
465+ let text = format!("{}:{}", pos.row + 1, pos.col + 1); // convert to 1-indexing
466+ let len = text.len();
467+
468+ surface.set_string(
469+ viewport.x + viewport.width.saturating_sub(len as u16 + 1),
470+ viewport.y,
471+ text,
456 text_color,
472 text_color,
457 );
473 );
458 }
474 }