# HG changeset patch # User Chong Yidong # Date 1279398111 14400 # Node ID 406b2d52ff00557d46a65c715f49c4c172f6a223 # Parent 56176400910f979e39fc8c4d0c13b298c2475e33 Revert 2010-07-14 change to deactivate mark; minor cleanups. * mouse.el (mouse-drag-track): Use select-active-region. * simple.el (select-active-region): New function. (push-mark-command, set-mark, activate-mark) (handle-shift-selection): Use it. (deactivate-mark): Don't check for size of region. diff -r 56176400910f -r 406b2d52ff00 lisp/ChangeLog --- a/lisp/ChangeLog Sat Jul 17 14:34:44 2010 -0400 +++ b/lisp/ChangeLog Sat Jul 17 16:21:51 2010 -0400 @@ -1,3 +1,12 @@ +2010-07-17 Chong Yidong + + * simple.el (select-active-region): New function. + (push-mark-command, set-mark, activate-mark) + (handle-shift-selection): Use it. + (deactivate-mark): Don't check for size of region. + + * mouse.el (mouse-drag-track): Use select-active-region. + 2010-07-17 Michael Albinus * net/tramp.el (tramp-get-ls-command-with-dired): Make test for diff -r 56176400910f -r 406b2d52ff00 lisp/mouse.el --- a/lisp/mouse.el Sat Jul 17 14:34:44 2010 -0400 +++ b/lisp/mouse.el Sat Jul 17 16:21:51 2010 -0400 @@ -1027,9 +1027,7 @@ ;; For `select-active-regions' non-nil, ensure that ;; further alterations of the region (e.g. via ;; shift-selection) continue to update PRIMARY. - (and select-active-regions - (display-selections-p) - (x-set-selection 'PRIMARY (current-buffer)))) + (select-active-region)) ;; If point hasn't moved, run the binding of the ;; terminating up-event. diff -r 56176400910f -r 406b2d52ff00 lisp/simple.el --- a/lisp/simple.el Sat Jul 17 14:34:44 2010 -0400 +++ b/lisp/simple.el Sat Jul 17 16:21:51 2010 -0400 @@ -3687,7 +3687,6 @@ mark-active (display-selections-p) (x-selection-owner-p 'PRIMARY) - (not (eq (region-beginning) (region-end))) (x-set-selection 'PRIMARY (buffer-substring-no-properties (region-beginning) (region-end)))) (if (and (null force) @@ -3708,9 +3707,13 @@ (setq mark-active t) (unless transient-mark-mode (setq transient-mark-mode 'lambda)) - (when (and select-active-regions - (display-selections-p)) - (x-set-selection 'PRIMARY (current-buffer))))) + (select-active-region))) + +(defsubst select-active-region () + "Set the PRIMARY X selection if `select-active-regions' is non-nil." + (and select-active-regions + (display-selections-p) + (x-set-selection 'PRIMARY (current-buffer)))) (defun set-mark (pos) "Set this buffer's mark to POS. Don't use this function! @@ -3733,9 +3736,7 @@ (progn (setq mark-active t) (run-hooks 'activate-mark-hook) - (when (and select-active-regions - (display-selections-p)) - (x-set-selection 'PRIMARY (current-buffer))) + (select-active-region) (set-marker (mark-marker) pos (current-buffer))) ;; Normally we never clear mark-active except in Transient Mark mode. ;; But when we actually clear out the mark value too, we must @@ -3819,8 +3820,7 @@ (push-mark nil nomsg t) (setq mark-active t) (run-hooks 'activate-mark-hook) - (and select-active-regions (display-selections-p) - (x-set-selection 'PRIMARY (current-buffer))) + (select-active-region) (unless nomsg (message "Mark activated"))))) @@ -4008,9 +4008,12 @@ deactivate it, and restore the variable `transient-mark-mode' to its earlier value." (cond ((and shift-select-mode this-command-keys-shift-translated) - (unless (and mark-active - (eq (car-safe transient-mark-mode) 'only)) - (setq transient-mark-mode + (if (and mark-active + (eq (car-safe transient-mark-mode) 'only)) + ;; Another program may have grabbed the selection; make + ;; sure we get it back now. + (select-active-region) + (setq transient-mark-mode (cons 'only (unless (eq transient-mark-mode 'lambda) transient-mark-mode)))