# HG changeset patch # User Stefan Monnier # Date 1097597155 0 # Node ID 8c6dae33cdc39408d3c6cdf8c1622a1bc4be4164 # Parent cadf61c7f4eb06999afa3f9d70b67e168be26ae7 (mark-sexp): Preserve direction when repeating. diff -r cadf61c7f4eb -r 8c6dae33cdc3 lisp/emacs-lisp/lisp.el --- a/lisp/emacs-lisp/lisp.el Tue Oct 12 15:47:32 2004 +0000 +++ b/lisp/emacs-lisp/lisp.el Tue Oct 12 16:05:55 2004 +0000 @@ -75,17 +75,19 @@ move to with the same argument. If this command is repeated, it marks the next ARG sexps after the ones already marked." - (interactive "p") + (interactive "P") (cond ((and (eq last-command this-command) (mark t)) + (setq arg (if arg (prefix-numeric-value arg) + (if (> (mark) (point)) 1 -1))) (set-mark (save-excursion (goto-char (mark)) - (forward-sexp (or arg 1)) + (forward-sexp arg) (point)))) (t (push-mark (save-excursion - (forward-sexp (or arg 1)) + (forward-sexp (prefix-numeric-value arg)) (point)) nil t))))