From: Juri Linkov Date: Mon, 13 Dec 2004 03:09:59 +0000 (+0000) Subject: * emacs-lisp/lisp.el (beginning-of-defun, end-of-defun): X-Git-Tag: ttn-vms-21-2-B4~3307 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=967e1a52ad43c7f69a685ec880254d097e417918;p=emacs.git * emacs-lisp/lisp.el (beginning-of-defun, end-of-defun): Do not push mark when mark is active in transient-mark-mode. * emacs-lisp/lisp.el (mark-sexp, mark-defun): Extend the region when mark is active in transient-mark-mode, regardless of the last command. Doc fix. * emacs-lisp/lisp.el (mark-sexp): Reverse the condition for preserving direction, to mark forward instead of backward when mark is equal to point (e.g. when C-SPC C-M-SPC is typed in t-m-m). --- diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 87b3fcff96c..090f793c700 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -73,17 +73,18 @@ move forward across N balanced expressions." "Set mark ARG sexps from point. 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." +If this command is repeated or mark is active in Transient Mark mode, +it marks the next ARG sexps after the ones already marked." (interactive "P") - (cond ((and (eq last-command this-command) (mark t)) + (cond ((or (and (eq last-command this-command) (mark t)) + (and transient-mark-mode mark-active)) (setq arg (if arg (prefix-numeric-value arg) - (if (> (mark) (point)) 1 -1))) + (if (< (mark) (point)) -1 1))) (set-mark (save-excursion - (goto-char (mark)) - (forward-sexp arg) - (point)))) + (goto-char (mark)) + (forward-sexp arg) + (point)))) (t (push-mark (save-excursion @@ -191,9 +192,11 @@ open-parenthesis, and point ends up at the beginning of the line. If variable `beginning-of-defun-function' is non-nil, its value is called as a function to find the defun's beginning." (interactive "p") - (and (eq this-command 'beginning-of-defun) - (or inhibit-mark-movement (eq last-command 'beginning-of-defun) - (push-mark))) + (or inhibit-mark-movement + (not (eq this-command 'beginning-of-defun)) + (eq last-command 'beginning-of-defun) + (and transient-mark-mode mark-active) + (push-mark)) (and (beginning-of-defun-raw arg) (progn (beginning-of-line) t))) @@ -242,9 +245,11 @@ matches the open-parenthesis that starts a defun; see function If variable `end-of-defun-function' is non-nil, its value is called as a function to find the defun's end." (interactive "p") - (and (eq this-command 'end-of-defun) - (or inhibit-mark-movement (eq last-command 'end-of-defun) - (push-mark))) + (or inhibit-mark-movement + (not (eq this-command 'end-of-defun)) + (eq last-command 'end-of-defun) + (and transient-mark-mode mark-active) + (push-mark)) (if (or (null arg) (= arg 0)) (setq arg 1)) (if end-of-defun-function (if (> arg 0) @@ -289,10 +294,11 @@ is called as a function to find the defun's end." (defun mark-defun () "Put mark at end of this defun, point at beginning. The defun marked is the one that contains point or follows point. -If this command is repeated, marks more defuns after the ones -already marked." +If this command is repeated or mark is active in Transient Mark mode, +it marks more defuns after the ones already marked." (interactive) - (cond ((and (eq last-command this-command) (mark t)) + (cond ((or (and (eq last-command this-command) (mark t)) + (and transient-mark-mode mark-active)) (set-mark (save-excursion (goto-char (mark))