summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2022-01-23 21:00:45 +1100
committerMaxime Coste <mawww@kakoune.org>2022-01-23 21:00:45 +1100
commitf4ff59f8b2e010813b3cb09dc757a882e7a7b73c (patch)
tree0a37ff63d38089ddd345b068efd6c5a8b51c6a32
parent9acd4e62dc485aa7e44a601a0300697f8825a98c (diff)
Restore goto case insensitiveness, refuse to map upper case
After a while it seems clear changing this is much more ergonomic and restoring it with pure config is impractical as we need to map all lower case keys.
-rw-r--r--src/commands.cc5
-rw-r--r--src/normal.cc2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/commands.cc b/src/commands.cc
index b7e2195e..fbedc529 100644
--- a/src/commands.cc
+++ b/src/commands.cc
@@ -1815,6 +1815,11 @@ const CommandDesc map_key_cmd = {
if (key.size() != 1)
throw runtime_error("only a single key can be mapped");
+ KeymapMode lower_case_only_modes[] = {KeymapMode::Goto};
+ if (key[0].codepoint().map(iswupper).value_or(true) and
+ contains(lower_case_only_modes, keymap_mode))
+ throw runtime_error("mode only supports lower case mappings");
+
KeyList mapping = parse_keys(parser[3]);
keymaps.map_key(key[0], keymap_mode, std::move(mapping),
trim_indent(parser.get_switch("docstring").value_or("")));
diff --git a/src/normal.cc b/src/normal.cc
index 40efc32d..4e94fe57 100644
--- a/src/normal.cc
+++ b/src/normal.cc
@@ -228,7 +228,7 @@ void goto_commands(Context& context, NormalParams params)
if (not cp or key == Key::Escape)
return;
auto& buffer = context.buffer();
- switch (*cp)
+ switch (to_lower(*cp))
{
case 'g':
case 'k':