From f4ff59f8b2e010813b3cb09dc757a882e7a7b73c Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Sun, 23 Jan 2022 21:00:45 +1100 Subject: [PATCH] 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. --- src/commands.cc | 5 +++++ src/normal.cc | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) 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':