id,summary,reporter,owner,description,type,status,priority,milestone,version,resolution,keywords,cc
99,Define key bindings in terms of commands rather than other keys,korpios,judah,"Right now, haskeline defines key bindings in terms of other keys; this is quite confusing compared to other key binding system which define bindings in terms of particular commands.

For instance, if a user wanted `meta-j` to go back one character, haskeline expects you to define it in terms of `ctrl-b` rather than a command like `backward-char`.  Furthermore, the current system actually changes the meaning of your bindings depending on which binding style you are using; `ctrl-r` may suddenly change meaning from ""search backwards"" to ""redo"" if you switch from emacs to vi style.

It would be much easier to define a non-trivial `~/.haskeline` file like so:
{{{
bind: ctrl-r backward-char
bind: ctrl-s forward-char
bind: ctrl-b backward-search
bind: ctrl-f forward-search
}}}
...than the current case:
{{{
bind: ctrl-r ctrl-b
bind: ctrl-s ctrl-f
bind: ctrl-b ctrl-r
bind: ctrl-f ctrl-s
}}}
It is immediately clear what the former is doing, and not at all clear what the latter is.  I certainly wouldn't want to puzzle out a `~/.haskeline` file with several dozen bindings as the system currently stands.",enhancement,assigned,major,,,,,korpios@…
