I've only recently noticed something rather useful for me:
viper-mode
's support for the ex command set, implemented in the viper-ex
package 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-ex
function to a key in any Emacs mode and use commands like .,$s/wrong/right/g
there. 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-:
(require 'viper-ex)
(require 'viper-keym)
(require 'viper-cmd)
(require 'linum)
(define-key global-map (kbd "C-:") 'viper-ex)
(global-linum-mode)
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.