Mercurial > forks > helix
changeset 6760:5a70b8c5db07
feat(commands): add `selection` variable expansion (#13467)
author | RoloEdits <RoloEdits@gmail.com> |
---|---|
date | Sun, 04 May 2025 06:43:09 -0700 |
parents | f939397387e8 |
children | 472d6cf701bb |
files | book/src/command-line.md helix-view/src/expansion.rs |
diffstat | 2 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/book/src/command-line.md Sun May 04 06:35:58 2025 -0700 +++ b/book/src/command-line.md Sun May 04 06:43:09 2025 -0700 @@ -48,6 +48,7 @@ | `buffer_name` | The relative path of the currently focused document. `[scratch]` is expanded instead for scratch buffers. | | `line_ending` | A string containing the line ending of the currently focused document. For example on Unix systems this is usually a line-feed character (`\n`) but on Windows systems this may be a carriage-return plus a line-feed (`\r\n`). The line ending kind of the currently focused document can be inspected with the `:line-ending` command. | | `language` | A string containing the language name of the currently focused document.| +| `selection` | A string containing the contents of the primary selection of the currently focused document. | Aside from editor variables, the following expansions may be used:
--- a/helix-view/src/expansion.rs Sun May 04 06:35:58 2025 -0700 +++ b/helix-view/src/expansion.rs Sun May 04 06:43:09 2025 -0700 @@ -35,6 +35,8 @@ LineEnding, // The name of current buffers language as set in `languages.toml` Language, + // Primary selection + Selection, } impl Variable { @@ -44,6 +46,7 @@ Self::BufferName, Self::LineEnding, Self::Language, + Self::Selection, ]; pub const fn as_str(&self) -> &'static str { @@ -53,6 +56,7 @@ Self::BufferName => "buffer_name", Self::LineEnding => "line_ending", Self::Language => "language", + Self::Selection => "selection", } } @@ -63,6 +67,7 @@ "buffer_name" => Some(Self::BufferName), "line_ending" => Some(Self::LineEnding), "language" => Some(Self::Language), + "selection" => Some(Self::Selection), _ => None, } } @@ -224,5 +229,8 @@ Some(lang) => Cow::Owned(lang.to_owned()), None => Cow::Borrowed("text"), }), + Variable::Selection => Ok(Cow::Owned( + doc.selection(view.id).primary().fragment(text).to_string(), + )), } }