(defvar mark-test-forms '((new-buffer "b") (insert "hello") (set-mark-command) (move-beginning-of-line))) (defun mark-test-run () (interactive) (let (deactivate-mark) (mapc 'mark-test-interpret mark-test-forms))) (defun mark-test-interpret (expr) (interactive) (let ((e (car expr))) (cond ((eq e 'insert) (insert (cadr expr))) ((eq e 'move-beginning-of-line) (move-beginning-of-line nil)) ((eq e 'new-buffer) (let ((buf (get-buffer-create (cadr expr)))) (with-current-buffer buf (erase-buffer)) (switch-to-buffer buf))) ((eq e 'set-mark-command) (let ((inhibit-message t)) (set-mark-command nil))))))