change forward&backward behavior and add a with-charmap-buffer macro.