Hi all,

  I've been thinking about the problem of page-mode keymaps making
standard bindings unaccessible.  For example, page-modes may define keys
like 'f' and 'g' as fallthrough keys for a web app, shadowing bindings
which are important for basic navigation.  The user is stuck having to use
'M-x follow', or turn off the page-mode, etc.  It's a vexing problem
without a clear perfect solution.  Some page-modes highlight the problem
by binding alternative keys like 'C-c f' in their keymaps.  However this
cannot be considered a serious solution because it is a horrible break of
modularity, the alternative key sets are incomplete and need independent
maintenance, and it also stomps on the convention of reserving C-c
<lower-case-letter> bindings for the user.  So I would like the start the
discussion for how to solve this problem once and for all.  Here are some
possibilities I've considered:

1) Have a key that toggles page-modes.

  This is is sort of a throw-the-baby-out-with-the-bathwater idea that
isn't so good in practice, because it would disable an entire page-mode
instead of just the keymaps.  Also isn't forward-compatible with the idea
of splitting up page-modes.


2) C-z

  The whole point of tackling this problem is one of convenience, and as I
was going over our keymaps looking for a combo that is both free and
convenient, the only key that fit the profile was C-z.. So here are two
ideas about what it would do:

2.1) C-z disables page-mode keymaps for the following sequence.

  Page-mode keymaps would be marked with a property, for lack of a better
working name, I will call "annoying".  When the user hits C-z, annoying
keymaps are removed from the keymap stack for the following sequence.  So
to reach the standard binding for 'follow' in gmail-mode, say, the user
would hit 'C-z f'.


2.2) C-z disables fallthroughs for the following sequence.

  This idea is a variant on the previous one, but the difference is that
instead of disabling particular keymaps, it would disable all fallthrough
bindings within the entire keymap stack, for one following sequence.
Under this design, page-modes are still allowed to shadow standard
bindings with _commands_, though doing so would be discouraged by
convention.  Since the problem at hand is about how Conkeror interacts
with web apps, and the mechanism of that interaction is fallthrough
bindings, it seems like a reasonable idea.


3) Overloaded C-q

  This is a wacky idea, and I doubt it's practical, but I'll mention it
anyway.  C-q already invokes quote-next-mode.  Quote-next-mode would be
modified so that instead of turning _any_ key into a fallthrough, it would
reverse the fallthrough-edness of any key.  If followed by a command key,
that key would fall through.  If followed by a fallthrough key, it would
search for a command binding deeper in the keymap stack.  Probably too
confusing to be practical.


Anyone have other ideas, or opinions on those I've outlined?  Anyone not
like the choice of C-z?  There are not too many keys to choose from, and
the location of Z on a qwerty keyboard makes it a natural choice.

-- 
John Foerch
_______________________________________________
Conkeror mailing list
[email protected]
https://www.mozdev.org/mailman/listinfo/conkeror

Reply via email to