Ahh, I guess I should've checked the newsgroup before I tried to port it myself yesterday. Anyway, I've attached my version. I've only modified your vimpulse-surround.el minimally, most are just renaming and passing the correct arguments in the corresponding evil functions, and new surround bindings in motion state. I'm surprised it seems to be able to get all the surround functionalities working without changing any of your designs. I'm still looking forward to your port. Thank you for bringing the original vimpulse-surround and a hopefully an even better evil-surround, and thank all that bring us the wonderful evil! Best Regards On 11-08-12 11:50 AM, Timothy Harper wrote:
Just wanted to post that I switched out vimpulse for evil, and I am digging it! Great work guys! It feels more responsive, and less buggy.
I've started to extend evil to implement surround. So far I have surround region implemented, that was easy. evil-define-key works brilliantly. Change surround / delete surround is going to be a little more tricky though.
Previously, my approach was to implement custom text objects that were flagged as surrounding text objects. Then I implemented vimpulse-delete-surround-or-delete, vimpulse-change-surround-or-change, bound then to 'd' and 'c' respectively, and prompted for a text object. If the returned text object was flagged as a surround text object, I acted accordingly, otherwise forwarded on to vimpulse-delete / vimpulse-change.
I think a better approach, this time, would be to implement evil-change-maybe-surround. It would prompt for the next keystroke. If 's', then prompt for a text object and perform the operation. Otherwise, stick the key back into unread-command-events and forward to evil-change.
Does a better extension mechanism exist, or is that approach a good one in your eyes (Vegard?)
Thanks so much for bringing evil to my emacs! :)
Tim