diff --git a/src/glide/browser/base/content/browser-commands.mts b/src/glide/browser/base/content/browser-commands.mts index 3e8cc60..450babf 100644 --- a/src/glide/browser/base/content/browser-commands.mts +++ b/src/glide/browser/base/content/browser-commands.mts @@ -166,7 +166,11 @@ class GlideCommandsClass { return; } - const labels = Strings.generate_prefix_free_codes(Hinting.ALPHABET, hints.length, Hinting.ALPHABET_COST_MAP); + const hint_keys = GlideBrowser.api.keymaps.list("hint").map((k) => k.lhs); + const hint_alphabet = hint_keys.length + ? Hinting.ALPHABET.filter((k) => !hint_keys.includes(k)) + : Hinting.ALPHABET; + const labels = Strings.generate_prefix_free_codes(hint_alphabet, hints.length, Hinting.ALPHABET_COST_MAP); for (let i = 0; i < hints.length; i++) { const hint = hints[i]!; diff --git a/src/glide/browser/base/content/test/hints/browser_hints.ts b/src/glide/browser/base/content/test/hints/browser_hints.ts index ef0fc57..0a56b4b 100644 --- a/src/glide/browser/base/content/test/hints/browser_hints.ts +++ b/src/glide/browser/base/content/test/hints/browser_hints.ts @@ -230,3 +230,20 @@ add_task(async function test_expandable_content_can_be_hinted() { is(is_open, true, "
content should be open after activating the hint"); }); }); + +add_task(async function test_hint_keymaps_are_ignored() { + await GlideTestUtils.reload_config(function _() { + glide.keymaps.set("hint", "f", "keys "); + glide.keymaps.set("normal", "j", "config_edit"); + }); + + await BrowserTestUtils.withNewTab(FILE, async _browser => { + await keys("f"); + await wait_for_hints(); + const hints = GlideCommands.get_active_hints(); + notok(hints.find(hint => hint.label === "f"), "'f' is hidden when mapped in hint mode"); + ok(hints.find(hint => hint.label === "j"), "'j' is not mapped in hint mode"); + + await keys(""); + }); +});