On Mon, Feb 28, 2011 at 04:33:59PM +0100, Vegard Øye wrote: > > The other question that comes into my mind is the following. In > > vim-mode, as I told, I prevent an operator to be executed until the > > following motion has been executed. This can be done as above if the > > interactive form uses some kind of recursive edit (right?). > > I don't understand ... the motion is executed in the operator's > `interactive' specification, /before/ the operator's body. When you > press "dw", "d" calls `delete', `delete' reads "w", "w" is bound to > `forward-word', `forward-word' is executed to get buffer positions, > and the positions are passed to the operator's arguments. Then the > operator's body is executed. Are we talking about the same thing?
It's just the difference to how vim-mode combines motions and operators. In vim-mode operator-pending is just a state as any other state, insert, normal or visual. When an operator is executed, the command's body is not executed immediately. Instead it is remembered for later use, then vim-mode switches to operator-pending mode and gives the control completely back to Emacs. When a motion is executed in operator-pending mode the stored operator is finally executed along with the motion. Similar things happen when a register is selected. In this case the register is stored and then vim-mode returns to normal mode and proceeds as usual. So vim-mode never uses interactive stuff, that's all. But I like the idea of using interactive extensively. Little question: do you really use Emacs's default forward-word? I ask because it behaves differently than Vim's. > > And I have a further question. We must certainly specify some > > additional properties for commands, e.g., some commands are > > repeatable while others are not repeatable, some should preserve > > visual-mode (e.g., several window and scrolling commands which are > > not really motions - they cannot be used with an operator and > > sometimes don't even change point) while others disable visual-mode > > (most editing commands). How do we specify theses properties? > > I prefer to use keyword arguments: > > (vimpulse-define-operator vimpulse-indent (beg end) > "Indent text." > :repeat nil > :whole-lines t > (indent-region beg end nil)) Sounds okay. In fact, this was the old style I used in earlier versions ;) Bye, Frank _______________________________________________ implementations-list mailing list [email protected] https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
