@@ -1,4 +1,4 @@
1−use helix_core::{coords_at_pos, encoding};
1+use helix_core::{coords_at_pos, encoding, Position};
2use helix_view::{
2use helix_view::{
3 document::{Mode, SCRATCH_BUFFER_NAME},
3 document::{Mode, SCRATCH_BUFFER_NAME},
4 graphics::Rect,
4 graphics::Rect,
@@ -143,6 +143,7 @@ where
143 helix_view::editor::StatusLineElement::Diagnostics => render_diagnostics,
143 helix_view::editor::StatusLineElement::Diagnostics => render_diagnostics,
144 helix_view::editor::StatusLineElement::Selections => render_selections,
144 helix_view::editor::StatusLineElement::Selections => render_selections,
145 helix_view::editor::StatusLineElement::Position => render_position,
145 helix_view::editor::StatusLineElement::Position => render_position,
146+ helix_view::editor::StatusLineElement::PositionPercentage => render_position_percentage,
146 helix_view::editor::StatusLineElement::Spacer => render_spacer,
147 helix_view::editor::StatusLineElement::Spacer => render_spacer,
@@ -251,19 +252,22 @@ where
254−fn render_position<F>(context: &mut RenderContext, write: F)
255+fn get_position(context: &RenderContext) -> Position {
256− F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
258− let position = coords_at_pos(
256+ coords_at_pos(
259 context.doc.text().slice(..),
257 context.doc.text().slice(..),
262 .selection(context.view.id)
260 .selection(context.view.id)
263 .primary()
261 .primary()
264 .cursor(context.doc.text().slice(..)),
262 .cursor(context.doc.text().slice(..)),
266+fn render_position<F>(context: &mut RenderContext, write: F)
268+ F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
270+ let position = get_position(context);
269 format!(" {}:{} ", position.row + 1, position.col + 1),
273 format!(" {}:{} ", position.row + 1, position.col + 1),
@@ -271,6 +275,19 @@ where
278+fn render_position_percentage<F>(context: &mut RenderContext, write: F)
280+ F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
282+ let position = get_position(context);
283+ let maxrows = context.doc.text().len_lines();
286+ format!("{}%", (position.row + 1) * 100 / maxrows),
274fn render_file_encoding<F>(context: &mut RenderContext, write: F)
291fn render_file_encoding<F>(context: &mut RenderContext, write: F)
276 F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
293 F: Fn(&mut RenderContext, String, Option<Style>) + Copy,