On Wed, Jul 01, 2009 at 08:15:21PM +0200, Alessandro Piras wrote:
Follow up: the most interesting thing about your approach is that you don't use emacs keymaps. Could you explain me how it works (a short summary is ok) ?
A simple keymap catching all events is installed (the keymap of the minor mode 'vim-key-mode'). When an event comes in the function vim:handle-key is called. This function does some housekeeping and calls the function vim:input-key which is the entry point for vim-mode's own keymap. If the event can't be handled by vim:input-key, it's pushed back to unread-command-events, the keymap of vim-key-mode is disabled and the event can be processed by Emacs as usual. Btw, keymaps of vim-mode are very similar to emacs-keymaps but contain more meta-information. But the general structure is the same. Therefore, in theory all emacs-events could be handled by vim-mode-keymaps, not only keyboard-events. I know, the documentation is poor at this time, I'll try to improve it soon :) Bye, Frank