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
