A proof-of-concept implementation is on the key-groups branch on git://github.com/oscarfv/magit.git
(this is the first time I publish something through git/github, I hope everything is right) So far only the `log' functionality is present. Now `l' is bound to a function that displays a list of commands and options. Yes, it provides options too because otherwise implementing a command for every possible combination is unfeasible, so the idea is to provide a few commands for the most used features and a set of options for customizing the commands. This way, "log all" does not need a specific command: you turn on the "All" option and the use the log command of you choice (one-line, log, grep, etc) It's quick too: one-line log all is 'l a l' I implemented a --relative option, just for demonstrating how a non-boolean option is set, but it seems that either --relative is buggy or I don't understand how it works. "log grep" seems broken on Windows too. If this looks right, I'll proceed to code cleanup and updating the documentation, but I'm not sure how much actual functionality to integrate on the new method. `Push', for instance, right now is just one command which does the basic thing, but there are lots of potential there for adding a few more commands and several options. Same for handling of remotes (which could be integrated into the fetch/pull area), making patches, etc.
