summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/usage.md2
-rw-r--r--helix-core/src/register.rs14
2 files changed, 13 insertions, 3 deletions
diff --git a/book/src/usage.md b/book/src/usage.md
index 6b7cbc41..cf7d9d48 100644
--- a/book/src/usage.md
+++ b/book/src/usage.md
@@ -23,8 +23,10 @@ If there is a selected register before invoking a change or delete command, the
| `/` | Last search |
| `:` | Last executed command |
| `"` | Last yanked text |
+| `_` | Black hole |
> There is no special register for copying to system clipboard, instead special commands and keybindings are provided. See the [keymap](keymap.md#space-mode) for the specifics.
+> The black hole register works as a no-op register, meaning no data will be written to / read from it.
## Surround
diff --git a/helix-core/src/register.rs b/helix-core/src/register.rs
index c5444eb7..b9eb497d 100644
--- a/helix-core/src/register.rs
+++ b/helix-core/src/register.rs
@@ -15,7 +15,11 @@ impl Register {
}
pub fn new_with_values(name: char, values: Vec<String>) -> Self {
- Self { name, values }
+ if name == '_' {
+ Self::new(name)
+ } else {
+ Self { name, values }
+ }
}
pub const fn name(&self) -> char {
@@ -27,11 +31,15 @@ impl Register {
}
pub fn write(&mut self, values: Vec<String>) {
- self.values = values;
+ if self.name != '_' {
+ self.values = values;
+ }
}
pub fn push(&mut self, value: String) {
- self.values.push(value);
+ if self.name != '_' {
+ self.values.push(value);
+ }
}
}