diff options
author | Dan Cardamore | 2024-03-17 22:55:49 +0000 |
---|---|---|
committer | GitHub | 2024-03-17 22:55:49 +0000 |
commit | 3890376a23e84d5bcdac31cb9d0f6913abe0fc7f (patch) | |
tree | 4df823dd99b6831c32c07d3d0837103e6d1edae4 | |
parent | e36774c2c8f967c16ce2e10f2ba074838b324ec6 (diff) |
add 'file-absolute-path' to statusline (#4535)
* feat: add 'file-abs-path' to statusline (#4434)
* cleanup implementation
* rename to be non-abbreviated names
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
-rw-r--r-- | book/src/configuration.md | 1 | ||||
-rw-r--r-- | helix-term/src/ui/statusline.rs | 17 | ||||
-rw-r--r-- | helix-view/src/editor.rs | 3 |
3 files changed, 21 insertions, 0 deletions
diff --git a/book/src/configuration.md b/book/src/configuration.md index d8793645..8857af82 100644 --- a/book/src/configuration.md +++ b/book/src/configuration.md @@ -108,6 +108,7 @@ The following statusline elements can be configured: | `mode` | The current editor mode (`mode.normal`/`mode.insert`/`mode.select`) | | `spinner` | A progress spinner indicating LSP activity | | `file-name` | The path/name of the opened file | +| `file-absolute-path` | The absolute path/name of the opened file | | `file-base-name` | The basename of the opened file | | `file-modification-indicator` | The indicator to show whether the file is modified (a `[+]` appears when there are unsaved changes) | | `file-encoding` | The encoding of the opened file if it differs from UTF-8 | diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs index 9871828e..c3464067 100644 --- a/helix-term/src/ui/statusline.rs +++ b/helix-term/src/ui/statusline.rs @@ -142,6 +142,7 @@ where helix_view::editor::StatusLineElement::Spinner => render_lsp_spinner, helix_view::editor::StatusLineElement::FileBaseName => render_file_base_name, helix_view::editor::StatusLineElement::FileName => render_file_name, + helix_view::editor::StatusLineElement::FileAbsolutePath => render_file_absolute_path, helix_view::editor::StatusLineElement::FileModificationIndicator => { render_file_modification_indicator } @@ -430,6 +431,22 @@ where write(context, title, None); } +fn render_file_absolute_path<F>(context: &mut RenderContext, write: F) +where + F: Fn(&mut RenderContext, String, Option<Style>) + Copy, +{ + let title = { + let path = context.doc.path(); + let path = path + .as_ref() + .map(|p| p.to_string_lossy()) + .unwrap_or_else(|| SCRATCH_BUFFER_NAME.into()); + format!(" {} ", path) + }; + + write(context, title, None); +} + fn render_file_modification_indicator<F>(context: &mut RenderContext, write: F) where F: Fn(&mut RenderContext, String, Option<Style>) + Copy, diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs index f46a0d6a..bad61052 100644 --- a/helix-view/src/editor.rs +++ b/helix-view/src/editor.rs @@ -487,6 +487,9 @@ pub enum StatusLineElement { /// The relative file path FileName, + /// The file absolute path + FileAbsolutePath, + // The file modification indicator FileModificationIndicator, |