diff options
author | Seth Bromberger | 2022-07-26 06:05:12 +0000 |
---|---|---|
committer | GitHub | 2022-07-26 06:05:12 +0000 |
commit | 3dd2196e4f42b23fd30b4e028b96d5b1862603d6 (patch) | |
tree | 5214b9f213a224da2f8e0e428d86fb99d8259308 /helix-term/src/ui | |
parent | de8ade896771875482fed0a4da6c9cc62410edf5 (diff) |
add position-percentage as a statusline indicator (#3168)
* added position-pct as a statusline indicator
* removed unnecessary mutable reference
* pct -> percent
* percent -> percentage
Diffstat (limited to 'helix-term/src/ui')
-rw-r--r-- | helix-term/src/ui/statusline.rs | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs index e9e478bf..df6d4800 100644 --- a/helix-term/src/ui/statusline.rs +++ b/helix-term/src/ui/statusline.rs @@ -1,4 +1,4 @@ -use helix_core::{coords_at_pos, encoding}; +use helix_core::{coords_at_pos, encoding, Position}; use helix_view::{ document::{Mode, SCRATCH_BUFFER_NAME}, graphics::Rect, @@ -143,6 +143,7 @@ where helix_view::editor::StatusLineElement::Diagnostics => render_diagnostics, helix_view::editor::StatusLineElement::Selections => render_selections, helix_view::editor::StatusLineElement::Position => render_position, + helix_view::editor::StatusLineElement::PositionPercentage => render_position_percentage, helix_view::editor::StatusLineElement::Spacer => render_spacer, } } @@ -251,19 +252,22 @@ where ); } -fn render_position<F>(context: &mut RenderContext, write: F) -where - F: Fn(&mut RenderContext, String, Option<Style>) + Copy, -{ - let position = coords_at_pos( +fn get_position(context: &RenderContext) -> Position { + coords_at_pos( context.doc.text().slice(..), context .doc .selection(context.view.id) .primary() .cursor(context.doc.text().slice(..)), - ); + ) +} +fn render_position<F>(context: &mut RenderContext, write: F) +where + F: Fn(&mut RenderContext, String, Option<Style>) + Copy, +{ + let position = get_position(context); write( context, format!(" {}:{} ", position.row + 1, position.col + 1), @@ -271,6 +275,19 @@ where ); } +fn render_position_percentage<F>(context: &mut RenderContext, write: F) +where + F: Fn(&mut RenderContext, String, Option<Style>) + Copy, +{ + let position = get_position(context); + let maxrows = context.doc.text().len_lines(); + write( + context, + format!("{}%", (position.row + 1) * 100 / maxrows), + None, + ); +} + fn render_file_encoding<F>(context: &mut RenderContext, write: F) where F: Fn(&mut RenderContext, String, Option<Style>) + Copy, |