Hello
I have written a plugin[1] for Vim that enables relative line numbers for pending operations. Unfortunately it's kinda messy to get to 'know' when an operation is pending and when it is executed. You have to remap every operator-command to call your specific plugin function (something like: nnoremap d :call MyFunc()<CR>d). Of course this leads to the problem that you cannot use more than one plugin that needs to know when you are in operation-pending mode. Additionally you somehow need to remap operations that come from other plugins.
A much more elegant solution would be to have an event to be called when an operation is pending. I've looked at the Vim code and added the following three autocommands:
- OperationPending: is executed when an operation is called which needs a motion.
- OperationExecuted: is executed after the pending operation was executed (i.e. a motion or a second keystroke like yy, dd etc. is passed).
- OperationCleared: is executed after every command that doesn't enter operation-pending-mode. (executed after OperationExecuted)
I hope you see the reasoning behind my request and add my patch to Vim.
I haven't found any hint about your preferred patch format, so I just attached the 'hg diff' output.
Best regards,
Mohammed
Because a pending operation triggers OperationExecuted only when the operation is really executed.
E.g. place your cursor on the first line and hit dk. This will leave operation pending mode but won't execute the operation. Additionally actions like hitting <Esc> or <C-c> or just leaving the buffer won't execute the operation, either.