http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00403.html
* window.c (keys_of_window): Rebind `C-v' from `scroll-up' to
`scroll-up-command' and `M-v' from `scroll-down' to
`scroll-down-command'.
* tutorial.el (tutorial--default-keys): Rebind `C-v' to
`scroll-up-command' and `M-v' to `scroll-down-command'.
* emulation/cua-rect.el (cua--init-rectangles):
* forms.el (forms--change-commands):
* image-mode.el (image-mode-map):
Remap scroll-down-command and scroll-up-command
in addition to scroll-down and scroll-up.
(cua-rectangle-modifier-key): ... this. New defcustom. Can now
select either meta, hyper, or super modifier for rectangle commands.
(cua--rectangle-modifier-key): New defvar.
(cua--M/H-key): Use it. Remove special case for 'space.
(cua--init-keymaps): Initialize it from cua-rectangle-modifier-key
on X, to meta otherwise. Always bind C-return to toggle
rectangle. Pass ?\s instead of 'space to cua--M/H-key.
* emulation/cua-rect.el (cua-help-for-rectangle): Use
cua--rectangle-modifier-key. Handle super modifier too.
(cua--init-rectangles): Always bind C-return to toggle rectangle.
Pass ?\s instead of 'space to cua--M/H-key and cua--rect-M/H-key.
(cua--rect-undo, cua--tidy-undo-lists, cua--rectangle-on-off): Remove.
(cua--rect-undo-set-point): New var.
(cua--rectangle-undo-boundary): Setup undo apply entry.
(cua--rect-undo-handler): New function for rectangle undo.
(cua--rect-start-position, cua--rect-end-position): Add.
(cua--rectangle-post-command): Call cua--rectangle-set-corners
for restored rectangle. Set point if cua--rect-undo-set-point.
highlight overlays; allow using RET when cursor is over a button.
(cua--highlight-rectangle): Use it.
(cua--rectangle-set-corners): Don't move backwards at eol.
(cua--forward-line): Don't move into void after eob.
point is set (and displayed) inside rectangle.
(cua--rectangle-operation): Fix for highlight of empty lines.
(cua--highlight-rectangle): Fix highlight for tabs.
Position cursor at left/right edge of rectangle using new `cursor'
property on overlay strings.
(cua--indent-rectangle): Don't tabify.
(cua-rotate-rectangle): Ignore that point has moved.
(cua--rectangle-virtual-edges): New defun.
(cua--rectangle-get-corners): Remove optional PAD arg.
(cua--rectangle-set-corners): Never do padding.
(cua--forward-line): Remove optional PAD arg. Simplify.
(cua-resize-rectangle-right, cua-resize-rectangle-left)
(cua-resize-rectangle-down, cua-resize-rectangle-up):
(cua-resize-rectangle-bot, cua-resize-rectangle-top)
(cua-resize-rectangle-page-up, cua-resize-rectangle-page-down)
(cua--rectangle-move): Never do padding. Simplify.
(cua--tabify-start): New defun.
(cua--rectangle-operation): Add tabify arg. All callers changed.
(cua--pad-rectangle): Remove.
(cua--delete-rectangle): Handle delete with virtual edges.
(cua--extract-rectangle): Add spaces if rectangle has virtual edges.
(cua--insert-rectangle): Handle insert at virtual column.
Perform auto-tabify if necessary.
(cua--activate-rectangle): Remove optional FORCE arg.
Never do padding. Simplify.
(cua--highlight-rectangle): Enhance for virtual edges.
(cua-toggle-rectangle-padding): Remove command.
(cua-toggle-rectangle-virtual-edges): New command.
(cua-sequence-rectangle): Add optional TABIFY arg. Callers changed.
(cua--rectangle-post-command): Don't force rectangle padding.
(cua--init-rectangles): Bind M-p to cua-toggle-rectangle-virtual-edges.
(cua-upcase-rectangle, cua-downcase-rectangle): Use it.
(cua-upcase-initials-rectangle, cua-capitalize-rectangle):
New commands (suggested by Jordan Breeding)..