summaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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':