diff --git a/src/input_handler.cc b/src/input_handler.cc index 5b60026e..ae0dbcc8 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -198,6 +198,7 @@ constexpr StringView register_doc = "%: buffer name\n" ".: selection contents\n" "#: selection index\n" + "$: selection index (zero-indexed)\n" "_: null register\n" "\": default yank/paste register\n" "@: default macro register\n" diff --git a/src/main.cc b/src/main.cc index 438a3012..40fb2b10 100644 --- a/src/main.cc +++ b/src/main.cc @@ -436,6 +436,17 @@ void register_registers() return res; })); + register_manager.add_register('$', make_dyn_reg( + "$", + [](const Context& context) { + const size_t count = context.selections().size(); + StringList res; + res.reserve(count); + for (size_t i = 0; i < count; ++i) + res.push_back(to_string((int)i)); + return res; + })); + for (size_t i = 0; i < 10; ++i) { register_manager.add_register('0'+i, make_dyn_reg( diff --git a/src/register_manager.cc b/src/register_manager.cc index 16db41ba..4642b8e9 100644 --- a/src/register_manager.cc +++ b/src/register_manager.cc @@ -67,6 +67,7 @@ static const HashMap reg_names { { "percent", '%' }, { "dot", '.' }, { "hash", '#' }, + { "dollar", '$' }, { "underscore", '_' }, { "colon", ':' } };