Mercurial > hg > xemacs-beta
diff lisp/select.el @ 416:ebe98a74bd68 r21-2-16
Import from CVS: tag r21-2-16
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:22:23 +0200 |
parents | da8ed4261e83 |
children | e804706bfb8c |
line wrap: on
line diff
--- a/lisp/select.el Mon Aug 13 11:21:40 2007 +0200 +++ b/lisp/select.el Mon Aug 13 11:22:23 2007 +0200 @@ -40,6 +40,11 @@ If a list is provided, the types are tried in sequence until there is a successful conversion.") +(defvar selection-is-clipboard-p nil + "Controls the selection's relationship to the clipboard. +When non-nil, any operation that sets the primary selection will also +set the clipboard.") + (defun copy-primary-selection () "Copy the selection to the Clipboard and the kill ring." (interactive) @@ -74,7 +79,17 @@ "Return the value of a Windows selection. The argument TYPE (default `PRIMARY') says which selection, and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule) -says how to convert the data." +says how to convert the data. If there is no selection an error is signalled." + (let ((text (get-selection-no-error type data-type))) + (when (not (stringp text)) + (error "Selection is not a string: %S" text)) + text)) + +(defun get-selection-no-error (&optional type data-type) + "Return the value of a Windows selection. +The argument TYPE (default `PRIMARY') says which selection, +and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule) +says how to convert the data. Returns NIL if there is no selection" (or type (setq type 'PRIMARY)) (or data-type (setq data-type selected-text-type)) (let ((text @@ -88,8 +103,6 @@ (get-selection-internal type data-type)))) (when (and (consp text) (symbolp (car text))) (setq text (cdr text))) - (when (not (stringp text)) - (error "Selection is not a string: %S" text)) text)) ;; FSFmacs calls this `x-set-selection', and reverses the @@ -127,9 +140,12 @@ valid)) (signal 'error (list "invalid selection" data))) (or type (setq type 'PRIMARY)) - (if data - (own-selection-internal type data) - (disown-selection-internal type)) + (if (null data) + (disown-selection-internal type) + (own-selection-internal type data) + (when (and (eq type 'PRIMARY) + selection-is-clipboard-p) + (own-selection-internal 'CLIPBOARD data))) (cond ((eq type 'PRIMARY) (setq primary-selection-extent (select-make-extent-for-selection