From 3610d3c96272affc89eb64f50d801aeabf54dd34 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 12 Oct 2004 16:05:55 +0000 Subject: [PATCH] (mark-sexp): Preserve direction when repeating. --- lisp/emacs-lisp/lisp.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 63d9f759ceb..87b3fcff96c 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -75,17 +75,19 @@ The place mark goes is the same place \\[forward-sexp] would 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)))) -- 2.39.5