summaryrefslogtreecommitdiff
path: root/src/normal.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-09-26 23:32:07 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-09-26 23:32:07 +0100
commitfcb37cc7541cfa2152f8c0aed6eda177bc9770a6 (patch)
treefcc05344434344010401c62928e889289a5a43bd /src/normal.cc
parent1e0ec182c166da505ad1404fcbf80240a3797ae4 (diff)
Pass count to all object selectors
Diffstat (limited to 'src/normal.cc')
-rw-r--r--src/normal.cc20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/normal.cc b/src/normal.cc
index 3d1d05ce..e1564bca 100644
--- a/src/normal.cc
+++ b/src/normal.cc
@@ -933,9 +933,9 @@ void select_object(Context& context, NormalParams params)
whole ? "" : (flags & ObjectFlags::ToBegin ? " begin" : " end"));
};
- const int level = params.count <= 0 ? 0 : params.count - 1;
+ const int count = params.count <= 0 ? 0 : params.count - 1;
on_next_key_with_autoinfo(context, KeymapMode::Object,
- [level](Key key, Context& context) {
+ [count](Key key, Context& context) {
auto cp = key.codepoint().value_or((Codepoint)-1);
if (cp == -1)
return;
@@ -943,7 +943,7 @@ void select_object(Context& context, NormalParams params)
static constexpr struct
{
Codepoint key;
- Selection (*func)(const Buffer&, const Selection&, ObjectFlags);
+ Selection (*func)(const Buffer&, const Selection&, int, ObjectFlags);
} selectors[] = {
{ 'w', select_word<Word> },
{ 'W', select_word<WORD> },
@@ -952,16 +952,14 @@ void select_object(Context& context, NormalParams params)
{ ' ', select_whitespaces },
{ 'i', select_indent },
{ 'n', select_number },
+ { 'u', select_argument },
};
for (auto& sel : selectors)
{
if (cp == sel.key)
- return select<mode>(context, std::bind(sel.func, _1, _2, flags));
+ return select<mode>(context, std::bind(sel.func, _1, _2, count, flags));
}
- if (cp == 'u')
- return select<mode>(context, std::bind(select_argument, _1, _2, level, flags));
-
if (cp == ':')
{
const bool info = show_auto_info_ifn(
@@ -971,7 +969,7 @@ void select_object(Context& context, NormalParams params)
context.input_handler().prompt(
"object desc:", "", get_face("Prompt"),
PromptFlags::None, complete_nothing,
- [level,info](StringView cmdline, PromptEvent event, Context& context) {
+ [count,info](StringView cmdline, PromptEvent event, Context& context) {
if (event != PromptEvent::Change)
hide_auto_info_ifn(context, info);
if (event != PromptEvent::Validate)
@@ -982,7 +980,7 @@ void select_object(Context& context, NormalParams params)
throw runtime_error{"desc parsing failed, expected <open>,<close>"};
return select<mode>(context, std::bind(select_surrounding, _1, _2,
- params[0], params[1], level, flags));
+ params[0], params[1], count, flags));
});
}
@@ -1007,7 +1005,7 @@ void select_object(Context& context, NormalParams params)
(sur.name != 0 and sur.name == cp))
return select<mode>(context, std::bind(select_surrounding, _1, _2,
sur.opening, sur.closing,
- level, flags));
+ count, flags));
}
if (is_punctuation(cp))
@@ -1015,7 +1013,7 @@ void select_object(Context& context, NormalParams params)
auto utf8cp = to_string(cp);
return select<mode>(context, std::bind(select_surrounding, _1, _2,
utf8cp, utf8cp,
- level, flags));
+ count, flags));
}
}, get_title(),
"b,(,): parenthesis block\n"