+2010-07-17 Chong Yidong <cyd@stupidchicken.com>
+
+ * 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 <michael.albinus@gmx.de>
* net/tramp.el (tramp-get-ls-command-with-dired): Make test for
;; 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.
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)
(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!
(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
(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")))))
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)))