I've only recently noticed something rather useful for me:
viper-mode's support for the ex command set, implemented in the
viper-expackage as a part of the Viper vi-emulation package, is mostly orthogonal to the rest of Viper, meaning the Viper implementation of ex can be used without activating Viper mode. Hence you can bind the
viper-exfunction to a key in any Emacs mode and use commands like
.,$s/wrong/right/gthere. It is quite straightforward to use this to support vi-like macros, which are sometimes quite a bit briefer than their Elisp equivalents.
To get started, you need to import the
viper-ex package, which defines the
viper-ex interactive command, and which has some dependencies on the rest of Viper, ones which could be pruned without much difficulty. The ex commands are more pleasant with line numbering. The following Elisp will configure this, with
viper-ex bound to C-:
(define-key global-map (kbd "C-:") 'viper-ex)
Note that several modes, like Org-mode, clobber C-: and so would need their maps redefined to use this.
Advogato's new libxml2-based text handler
This is new, I think. It seems to have fewer glitches than the old code, so kudos to StevenRainwater for getting this done.