Mercurial > emacs
changeset 93236:e550714b0fde
(activate-mark): New function.
(set-mark-command): Use it with region-active-p to clean up the code.
(exchange-point-and-mark): Invert the meaning of C-u when
transient-mark-mode is active.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 26 Mar 2008 03:40:40 +0000 |
parents | 4525730eae72 |
children | 0f4b8a3dc49e |
files | lisp/ChangeLog lisp/simple.el |
diffstat | 2 files changed, 30 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed Mar 26 03:34:07 2008 +0000 +++ b/lisp/ChangeLog Wed Mar 26 03:40:40 2008 +0000 @@ -1,5 +1,10 @@ 2008-03-26 Stefan Monnier <monnier@iro.umontreal.ca> + * simple.el (activate-mark): New function. + (set-mark-command): Use it with region-active-p to clean up the code. + (exchange-point-and-mark): Invert the meaning of C-u when + transient-mark-mode is active. + * dired-aux.el (dired-create-files): Use dolist. * bindings.el (mode-line-change-eol): Use with-selected-window.
--- a/lisp/simple.el Wed Mar 26 03:34:07 2008 +0000 +++ b/lisp/simple.el Wed Mar 26 03:40:40 2008 +0000 @@ -3347,6 +3347,13 @@ (setq mark-active nil) (run-hooks 'deactivate-mark-hook)))) +(defun activate-mark () + "Activate the mark." + (when (mark t) + (setq mark-active t) + (unless transient-mark-mode + (setq transient-mark-mode 'lambda)))) + (defcustom select-active-regions nil "If non-nil, an active region automatically becomes the window selection." :type 'boolean @@ -3520,13 +3527,13 @@ (arg (setq this-command 'pop-to-mark-command) (pop-to-mark-command)) - ((and (eq last-command 'set-mark-command) - mark-active (null transient-mark-mode)) - (setq transient-mark-mode 'lambda) - (message "Transient-mark-mode temporarily enabled")) - ((and (eq last-command 'set-mark-command) - transient-mark-mode) - (deactivate-mark)) + ((eq last-command 'set-mark-command) + (if (region-active-p) + (progn + (deactivate-mark) + (message "Mark deactivated")) + (activate-mark) + (message "Mark activated"))) (t (push-mark-command nil)))) @@ -3580,18 +3587,17 @@ and it reactivates the mark. With prefix arg, `transient-mark-mode' is enabled temporarily." (interactive "P") - (if arg - (if mark-active - (if (null transient-mark-mode) - (setq transient-mark-mode 'lambda)) - (setq arg nil))) - (unless arg - (let ((omark (mark t))) - (if (null omark) - (error "No mark set in this buffer")) - (set-mark (point)) - (goto-char omark) - nil))) + (deactivate-mark) + (let ((omark (mark t))) + (if (null omark) + (error "No mark set in this buffer")) + (set-mark (point)) + (goto-char omark) + (if (or (and arg (region-active-p)) ; (xor arg (not (region-active-p))) + (not (or arg (region-active-p)))) + (deactivate-mark) + (activate-mark)) + nil)) (define-minor-mode transient-mark-mode "Toggle Transient Mark mode.