From: Chong Yidong Date: Sat, 17 Jul 2010 20:21:51 +0000 (-0400) Subject: Revert 2010-07-14 change to deactivate mark; minor cleanups. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~51^2~30 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=91023c68af851d22bf72d22538276a7f23e1970c;p=emacs.git 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 --git a/lisp/ChangeLog b/lisp/ChangeLog index 70e841f6c4f..7aca9ba3ef9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/mouse.el b/lisp/mouse.el index 39c6993d973..87cca4044b8 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1027,9 +1027,7 @@ DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by ;; 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 --git a/lisp/simple.el b/lisp/simple.el index 10b8ab67ebc..43cb31b226b 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3687,7 +3687,6 @@ This function also runs `deactivate-mark-hook'." 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 @@ This function also runs `deactivate-mark-hook'." (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 @@ store it in a Lisp variable. Example: (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 @@ Display `Mark set' unless the optional second arg NOMSG is non-nil." (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 @@ Otherwise, if the region has been activated temporarily, 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)))