diff lisp/msw-select.el @ 221:6c0ae1f9357f r20-4b9

Import from CVS: tag r20-4b9
author cvs
date Mon, 13 Aug 2007 10:10:02 +0200
parents
children 83b3d10dcba9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/msw-select.el	Mon Aug 13 10:10:02 2007 +0200
@@ -0,0 +1,94 @@
+;;; msw-select.el --- Lisp interface to mswindows selections.
+
+;; Copyright (C) 1990, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1995 Sun Microsystems.
+
+;; Maintainer: XEmacs Development Team
+;; Keywords: extensions, dumped
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the 
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Synched up with: Not in FSF
+
+;;; Commentary:
+
+;; This file is dumped with XEmacs (when mswindows support is compiled in).
+;; #### Only copes with copying/pasting text
+
+;;; Code:
+
+;(defun mswindows-paste-clipboard ()
+;  "Insert the current contents of the Clipboard at point."
+;  (interactive "*")
+;  (setq last-command nil)
+;  (setq this-command 'yank) ; so that yank-pop works.
+; (let ((clip (mswindows-get-clipboard)))
+;    (or clip (error "there is no clipboard selection"))
+;    (push-mark)
+;    (insert clip)))
+
+(defun mswindows-paste-clipboard ()
+  "Insert the current contents of the mswindows clipboard at point,
+replacing the active selection if there is one."
+  (interactive "*")
+  (setq last-command nil)
+  (setq this-command 'yank) ; so that yank-pop works.
+  (let ((clip (mswindows-get-clipboard)) (s (mark-marker)) (e (point-marker)))
+    (or clip (error "there is no text on the clipboard"))
+    (if s
+	(if mouse-track-rectangle-p
+	    (delete-rectangle s e)
+	  (delete-region s e)))
+    (push-mark)
+    (if mouse-track-rectangle-p
+	(insert-rectangle clip)
+      (insert clip))))
+
+(defun mswindows-copy-clipboard ()
+  "Copy the selection to the mswindows clipboard and to the kill ring."
+  (interactive)
+  (mswindows-cut-copy-clipboard 'copy))
+
+(defun mswindows-cut-clipboard ()
+  "Copy the selection to the mswindows clipboard and to the kill ring,
+then delete it."
+  (interactive "*")
+  (mswindows-cut-copy-clipboard 'cut))
+
+(defun mswindows-cut-copy-clipboard (mode)
+  "Don't use this function.
+Use mswindows-cut-clipboard or mswindows-copy-clipboard instead."
+  (or (memq mode '(cut copy)) (error "unkown mode %S" mode))
+  (setq last-command nil)
+  (let ((s (mark-marker)) (e (point-marker)))
+    (if s
+	(progn
+	  (if mouse-track-rectangle-p
+	      (progn
+		(setq killed-rectangle (extract-rectangle s e))
+		(kill-new (mapconcat 'identity killed-rectangle "\n")))
+	    (copy-region-as-kill s e))
+	  (mswindows-set-clipboard (car kill-ring))
+	  (if (eq mode 'cut)
+	      (if mouse-track-rectangle-p
+		  (delete-rectangle s e)
+		(delete-region s e))
+;; mswindows apps normally leave the selection active but that feels weird here
+;;	    (setq zmacs-region-stays t)
+	    ))
+      (error "there is no selection to cut or copy"))))