Mercurial > hg > xemacs-beta
diff lisp/msw-select.el @ 280:7df0dd720c89 r21-0b38
Import from CVS: tag r21-0b38
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:32:22 +0200 |
parents | 83b3d10dcba9 |
children | 558f606b08ae |
line wrap: on
line diff
--- a/lisp/msw-select.el Mon Aug 13 10:31:30 2007 +0200 +++ b/lisp/msw-select.el Mon Aug 13 10:32:22 2007 +0200 @@ -82,3 +82,55 @@ ;; (setq zmacs-region-stays t) )) (error "there is no selection to cut or copy")))) + +(defvar mswindows-selection-owned-p nil + "Whether we have a selection or not. +MS-Windows has no concept of ownership; don't use this.") + +(defun mswindows-own-selection (data &optional type) + "Make an MS Windows selection of type TYPE and value DATA. +The argument TYPE is ignored, and DATA specifies the contents. +DATA may be a string, +a symbol, an integer (or a cons of two integers or list of two integers). + +The selection may also be a cons of two markers pointing to the same buffer, +or an overlay. In these cases, the selection is considered to be the text +between the markers *at whatever time the selection is examined*. +Thus, editing done in the buffer after you specify the selection +can alter the effective value of the selection. + +The data may also be a vector of valid non-vector selection values. + +Interactively, the text of the region is used as the selection value." + (interactive (if (not current-prefix-arg) + (list (read-string "Store text for pasting: ")) + (list (substring (region-beginning) (region-end))))) + (or (valid-simple-selection-p data) + (and (vectorp data) + (let ((valid t) + (i (1- (length data)))) + (while (>= i 0) + (or (valid-simple-selection-p (aref data i)) + (setq valid nil)) + (setq i (1- i))) + valid)) + (signal 'error (list "invalid selection" data))) + (if data + (setq mswindows-selection-owned-p data) + (setq mswindows-selection-owned-p nil)) + (setq primary-selection-extent + (select-make-extent-for-selection + data primary-selection-extent)) + (setq zmacs-region-stays t) + data) + +(defun mswindows-disown-selection (&optional secondary-p) + "Assuming we own the selection, disown it. With an argument, discard the +secondary selection instead of the primary selection." + (setq mswindows-selection-owned-p nil)) + +(defun mswindows-selection-owner-p (&optional selection) + "Return t if current emacs process owns the given Selection. +The arg is ignored." + (not (eq mswindows-selection-owned-p nil))) +