Sync to HEAD
[bpt/emacs.git] / lisp / term / x-win.el
index 735d21c..0745246 100644 (file)
@@ -76,6 +76,7 @@
 (require 'select)
 (require 'menu-bar)
 (require 'fontset)
+(require 'x-dnd)
 
 (defvar x-invocation-args)
 
@@ -1390,70 +1391,70 @@ as returned by `x-server-vendor'."
        ;; Kana: Fixme: needs conversion to Japanese charset -- seems
        ;; to require jisx0213, for which the Unicode translation
        ;; isn't clear.
-       (#x47e . ?\e$,1s>\e(B)
-       (#x4a1 . ?\e$,2=B\e(B)
-       (#x4a2 . ?\\e$,2=L\e(B)
-       (#x4a3 . ?\\e$,2=M\e(B)
-       (#x4a4 . ?\e$,2=A\e(B)
-       (#x4a5 . ?\e$,2?{\e(B)
-       (#x4a6 . ?\e$,2?r\e(B)
-       (#x4a7 . ?\e$,2?!\e(B)
-       (#x4a8 . ?\e$,2?#\e(B)
-       (#x4a9 . ?\e$,2?%\e(B)
-       (#x4aa . ?\e$,2?'\e(B)
-       (#x4ab . ?\e$,2?)\e(B)
-       (#x4ac . ?\e$,2?c\e(B)
-       (#x4ad . ?\e$,2?e\e(B)
-       (#x4ae . ?\e$,2?g\e(B)
-       (#x4af . ?\e$,2?C\e(B)
-       (#x4b0 . ?\e$,2?|\e(B)
-       (#x4b1 . ?\e$,2?"\e(B)
-       (#x4b2 . ?\e$,2?$\e(B)
-       (#x4b3 . ?\e$,2?&\e(B)
-       (#x4b4 . ?\e$,2?(\e(B)
-       (#x4b5 . ?\e$,2?*\e(B)
-       (#x4b6 . ?\e$,2?+\e(B)
-       (#x4b7 . ?\e$,2?-\e(B)
-       (#x4b8 . ?\e$,2?/\e(B)
-       (#x4b9 . ?\e$,2?1\e(B)
-       (#x4ba . ?\e$,2?3\e(B)
-       (#x4bb . ?\e$,2?5\e(B)
-       (#x4bc . ?\e$,2?7\e(B)
-       (#x4bd . ?\e$,2?9\e(B)
-       (#x4be . ?\e$,2?;\e(B)
-       (#x4bf . ?\e$,2?=\e(B)
-       (#x4c0 . ?\e$,2??\e(B)
-       (#x4c1 . ?\e$,2?A\e(B)
-       (#x4c2 . ?\e$,2?D\e(B)
-       (#x4c3 . ?\e$,2?F\e(B)
-       (#x4c4 . ?\e$,2?H\e(B)
-       (#x4c5 . ?\e$,2?J\e(B)
-       (#x4c6 . ?\e$,2?K\e(B)
-       (#x4c7 . ?\e$,2?L\e(B)
-       (#x4c8 . ?\e$,2?M\e(B)
-       (#x4c9 . ?\e$,2?N\e(B)
-       (#x4ca . ?\e$,2?O\e(B)
-       (#x4cb . ?\e$,2?R\e(B)
-       (#x4cc . ?\e$,2?U\e(B)
-       (#x4cd . ?\e$,2?X\e(B)
-       (#x4ce . ?\e$,2?[\e(B)
-       (#x4cf . ?\e$,2?^\e(B)
-       (#x4d0 . ?\e$,2?_\e(B)
-       (#x4d1 . ?\e$,2?`\e(B)
-       (#x4d2 . ?\e$,2?a\e(B)
-       (#x4d3 . ?\e$,2?b\e(B)
-       (#x4d4 . ?\e$,2?d\e(B)
-       (#x4d5 . ?\e$,2?f\e(B)
-       (#x4d6 . ?\e$,2?h\e(B)
-       (#x4d7 . ?\e$,2?i\e(B)
-       (#x4d8 . ?\e$,2?j\e(B)
-       (#x4d9 . ?\e$,2?k\e(B)
-       (#x4da . ?\e$,2?l\e(B)
-       (#x4db . ?\e$,2?m\e(B)
-       (#x4dc . ?\e$,2?o\e(B)
-       (#x4dd . ?\e$,2?s\e(B)
-       (#x4de . ?\e$,2>{\e(B)
-       (#x4df . ?\e$,2>|\e(B)
+       (#x47e . ?\e(J~\e(B)
+       (#x4a1 . ?\e$A!#\e(B)
+       (#x4a2 . ?\\e$A!8\e(B)
+       (#x4a3 . ?\\e$A!9\e(B)
+       (#x4a4 . ?\e$A!"\e(B)
+       (#x4a5 . ?\e$A!$\e(B)
+       (#x4a6 . ?\e$A%r\e(B)
+       (#x4a7 . ?\e$A%!\e(B)
+       (#x4a8 . ?\e$A%#\e(B)
+       (#x4a9 . ?\e$A%%\e(B)
+       (#x4aa . ?\e$A%'\e(B)
+       (#x4ab . ?\e$A%)\e(B)
+       (#x4ac . ?\e$A%c\e(B)
+       (#x4ad . ?\e$A%e\e(B)
+       (#x4ae . ?\e$A%g\e(B)
+       (#x4af . ?\e$A%C\e(B)
+       (#x4b0 . ?\e$B!<\e(B)
+       (#x4b1 . ?\e$A%"\e(B)
+       (#x4b2 . ?\e$A%$\e(B)
+       (#x4b3 . ?\e$A%&\e(B)
+       (#x4b4 . ?\e$A%(\e(B)
+       (#x4b5 . ?\e$A%*\e(B)
+       (#x4b6 . ?\e$A%+\e(B)
+       (#x4b7 . ?\e$A%-\e(B)
+       (#x4b8 . ?\e$A%/\e(B)
+       (#x4b9 . ?\e$A%1\e(B)
+       (#x4ba . ?\e$A%3\e(B)
+       (#x4bb . ?\e$A%5\e(B)
+       (#x4bc . ?\e$A%7\e(B)
+       (#x4bd . ?\e$A%9\e(B)
+       (#x4be . ?\e$A%;\e(B)
+       (#x4bf . ?\e$A%=\e(B)
+       (#x4c0 . ?\e$A%?\e(B)
+       (#x4c1 . ?\e$A%A\e(B)
+       (#x4c2 . ?\e$A%D\e(B)
+       (#x4c3 . ?\e$A%F\e(B)
+       (#x4c4 . ?\e$A%H\e(B)
+       (#x4c5 . ?\e$A%J\e(B)
+       (#x4c6 . ?\e$A%K\e(B)
+       (#x4c7 . ?\e$A%L\e(B)
+       (#x4c8 . ?\e$A%M\e(B)
+       (#x4c9 . ?\e$A%N\e(B)
+       (#x4ca . ?\e$A%O\e(B)
+       (#x4cb . ?\e$A%R\e(B)
+       (#x4cc . ?\e$A%U\e(B)
+       (#x4cd . ?\e$A%X\e(B)
+       (#x4ce . ?\e$A%[\e(B)
+       (#x4cf . ?\e$A%^\e(B)
+       (#x4d0 . ?\e$A%_\e(B)
+       (#x4d1 . ?\e$A%`\e(B)
+       (#x4d2 . ?\e$A%a\e(B)
+       (#x4d3 . ?\e$A%b\e(B)
+       (#x4d4 . ?\e$A%d\e(B)
+       (#x4d5 . ?\e$A%f\e(B)
+       (#x4d6 . ?\e$A%h\e(B)
+       (#x4d7 . ?\e$A%i\e(B)
+       (#x4d8 . ?\e$A%j\e(B)
+       (#x4d9 . ?\e$A%k\e(B)
+       (#x4da . ?\e$A%l\e(B)
+       (#x4db . ?\e$A%m\e(B)
+       (#x4dc . ?\e$A%o\e(B)
+       (#x4dd . ?\e$A%s\e(B)
+       (#x4de . ?\e$B!+\e(B)
+       (#x4df . ?\e$B!,\e(B)
        ;; Arabic
        (#x5ac . ?\e,G,\e(B)
        (#x5bb . ?\e,G;\e(B)
@@ -1671,11 +1672,11 @@ as returned by `x-server-vendor'."
        (#x7f9 . ?\e,Fy\e(B)
         ;; Technical
        (#x8a1 . ?\e$,1|W\e(B)
-       (#x8a2 . ?\e$,2 ,\e(B)
-       (#x8a3 . ?\e$,2  \e(B)
+       (#x8a2 . ?\e$A)0\e(B)
+       (#x8a3 . ?\e$A)$\e(B)
        (#x8a4 . ?\e$,1{ \e(B)
        (#x8a5 . ?\e$,1{!\e(B)
-       (#x8a6 . ?\e$,2 "\e(B)
+       (#x8a6 . ?\e$A)&\e(B)
        (#x8a7 . ?\e$,1|A\e(B)
        (#x8a8 . ?\e$,1|C\e(B)
        (#x8a9 . ?\e$,1|D\e(B)
@@ -1686,56 +1687,56 @@ as returned by `x-server-vendor'."
        (#x8ae . ?\e$,1|@\e(B)
        (#x8af . ?\e$,1|H\e(B)
        (#x8b0 . ?\e$,1|L\e(B)
-       (#x8bc . ?\e$,1y$\e(B)
-       (#x8bd . ?\e$,1y \e(B)
-       (#x8be . ?\e$,1y%\e(B)
-       (#x8bf . ?\e$,1xK\e(B)
-       (#x8c0 . ?\e$,1xT\e(B)
-       (#x8c1 . ?\e$,1x=\e(B)
-       (#x8c2 . ?\e$,1x>\e(B)
-       (#x8c5 . ?\e$,1x'\e(B)
-       (#x8c8 . ?\e$,1x\\e(B)
-       (#x8c9 . ?\e$,1xc\e(B)
-       (#x8cd . ?\e$,1wT\e(B)
-       (#x8ce . ?\e$,1wR\e(B)
-       (#x8cf . ?\e$,1y!\e(B)
-       (#x8d6 . ?\e$,1x:\e(B)
-       (#x8da . ?\e$,1yB\e(B)
-       (#x8db . ?\e$,1yC\e(B)
-       (#x8dc . ?\e$,1xI\e(B)
-       (#x8dd . ?\e$,1xJ\e(B)
-       (#x8de . ?\e$,1xG\e(B)
-       (#x8df . ?\e$,1xH\e(B)
-       (#x8ef . ?\e$,1x"\e(B)
+       (#x8bc . ?\e$A!\\e(B)
+       (#x8bd . ?\e$A!Y\e(B)
+       (#x8be . ?\e$A!]\e(B)
+       (#x8bf . ?\e$A!R\e(B)
+       (#x8c0 . ?\e$A!`\e(B)
+       (#x8c1 . ?\e$A!X\e(B)
+       (#x8c2 . ?\e$A!^\e(B)
+       (#x8c5 . ?\e$B"`\e(B)
+       (#x8c8 . ?\e$(G"D\e(B)
+       (#x8c9 . ?\e$(O"l\e(B)
+       (#x8cd . ?\e$B"N\e(B)
+       (#x8ce . ?\e$B"M\e(B)
+       (#x8cf . ?\e$A!T\e(B)
+       (#x8d6 . ?\e$A!L\e(B)
+       (#x8da . ?\e$B">\e(B)
+       (#x8db . ?\e$B"?\e(B)
+       (#x8dc . ?\e$A!I\e(B)
+       (#x8dd . ?\e$A!H\e(B)
+       (#x8de . ?\e$A!D\e(B)
+       (#x8df . ?\e$A!E\e(B)
+       (#x8ef . ?\e$B"_\e(B)
        (#x8f6 . ?\e$,1!R\e(B)
-       (#x8fb . ?\e$,1vp\e(B)
-       (#x8fc . ?\e$,1vq\e(B)
-       (#x8fd . ?\e$,1vr\e(B)
-       (#x8fe . ?\e$,1vs\e(B)
+       (#x8fb . ?\e$A!{\e(B)
+       (#x8fc . ?\e$A!|\e(B)
+       (#x8fd . ?\e$A!z\e(B)
+       (#x8fe . ?\e$A!}\e(B)
        ;; Special
-       (#x9e0 . ?\e$,2"&\e(B)
-       (#x9e1 . ?\e$,2!R\e(B)
-       (#x9e2 . ?\e$,1}I\e(B)
-       (#x9e3 . ?\e$,1}L\e(B)
-       (#x9e4 . ?\e$,1}M\e(B)
-       (#x9e5 . ?\e$,1}J\e(B)
+       (#x9e0 . ?\e$A!t\e(B)
+       (#x9e1 . ?\e$(C"F\e(B)
+       (#x9e2 . ?\e$(GB*\e(B)
+       (#x9e3 . ?\e$(GB-\e(B)
+       (#x9e4 . ?\e$(GB.\e(B)
+       (#x9e5 . ?\e$(GB+\e(B)
        (#x9e8 . ?\e$,1}d\e(B)
-       (#x9e9 . ?\e$,1}K\e(B)
-       (#x9ea . ?\e$,2 8\e(B)
-       (#x9eb . ?\e$,2 0\e(B)
-       (#x9ec . ?\e$,2 ,\e(B)
-       (#x9ed . ?\e$,2 4\e(B)
-       (#x9ee . ?\e$,2 \\e(B)
+       (#x9e9 . ?\e$(GB,\e(B)
+       (#x9ea . ?\e$A)<\e(B)
+       (#x9eb . ?\e$A)4\e(B)
+       (#x9ec . ?\e$A)0\e(B)
+       (#x9ed . ?\e$A)8\e(B)
+       (#x9ee . ?\e$A)`\e(B)
        (#x9ef . ?\e$,1|Z\e(B)
        (#x9f0 . ?\e$,1|[\e(B)
-       (#x9f1 . ?\e$,2  \e(B)
+       (#x9f1 . ?\e$A)$\e(B)
        (#x9f2 . ?\e$,1|\\e(B)
        (#x9f3 . ?\e$,1|]\e(B)
-       (#x9f4 . ?\e$,2 <\e(B)
-       (#x9f5 . ?\e$,2 D\e(B)
-       (#x9f6 . ?\e$,2 T\e(B)
-       (#x9f7 . ?\e$,2 L\e(B)
-       (#x9f8 . ?\e$,2 "\e(B)
+       (#x9f4 . ?\e$A)@\e(B)
+       (#x9f5 . ?\e$A)H\e(B)
+       (#x9f6 . ?\e$A)X\e(B)
+       (#x9f7 . ?\e$A)P\e(B)
+       (#x9f8 . ?\e$A)&\e(B)
        ;; Publishing
        (#xaa1 . ?\e$,1rc\e(B)
        (#xaa2 . ?\e$,1rb\e(B)
@@ -1745,93 +1746,93 @@ as returned by `x-server-vendor'."
        (#xaa6 . ?\e$,1rh\e(B)
        (#xaa7 . ?\e$,1ri\e(B)
        (#xaa8 . ?\e$,1rj\e(B)
-       (#xaa9 . ?\e$,1rt\e(B)
-       (#xaaa . ?\e$,1rs\e(B)
-       (#xaae . ?\e$,1s&\e(B)
-       (#xaaf . ?\e$,1s%\e(B)
-       (#xab0 . ?\e$,1v3\e(B)
-       (#xab1 . ?\e$,1v4\e(B)
-       (#xab2 . ?\e$,1v5\e(B)
+       (#xaa9 . ?\e$(G!7\e(B)
+       (#xaaa . ?\e$(G!9\e(B)
+       (#xaae . ?\e$A!-\e(B)
+       (#xaaf . ?\e$(G!-\e(B)
+       (#xab0 . ?\e$(O'x\e(B)
+       (#xab1 . ?\e$(O'y\e(B)
+       (#xab2 . ?\e$(O'z\e(B)
        (#xab3 . ?\e$,1v6\e(B)
        (#xab4 . ?\e$,1v7\e(B)
        (#xab5 . ?\e$,1v8\e(B)
        (#xab6 . ?\e$,1v9\e(B)
        (#xab7 . ?\e$,1v:\e(B)
-       (#xab8 . ?\e$,1uE\e(B)
+       (#xab8 . ?\e$(G""\e(B)
        (#xabb . ?\e$,1rr\e(B)
        (#xabc . ?\e$,1{)\e(B)
        (#xabe . ?\e$,1{*\e(B)
-       (#xac3 . ?\e$,1v;\e(B)
-       (#xac4 . ?\e$,1v<\e(B)
-       (#xac5 . ?\e$,1v=\e(B)
-       (#xac6 . ?\e$,1v>\e(B)
-       (#xac9 . ?\e$,1ub\e(B)
+       (#xac3 . ?\e$(C({\e(B)
+       (#xac4 . ?\e$(C(|\e(B)
+       (#xac5 . ?\e$(C(}\e(B)
+       (#xac6 . ?\e$(C(~\e(B)
+       (#xac9 . ?\e$(D"o\e(B)
        (#xaca . ?\e$,2"s\e(B)
-       (#xacc . ?\e$,2"!\e(B)
-       (#xacd . ?\e$,2!w\e(B)
-       (#xace . ?\e$,2"+\e(B)
+       (#xacc . ?\e$(O##\e(B)
+       (#xacd . ?\e$(O#!\e(B)
+       (#xace . ?\e$A!p\e(B)
        (#xacf . ?\e$,2!o\e(B)
-       (#xad0 . ?\e$,1rx\e(B)
-       (#xad1 . ?\e$,1ry\e(B)
-       (#xad2 . ?\e$,1r|\e(B)
-       (#xad3 . ?\e$,1r}\e(B)
+       (#xad0 . ?\e,F!\e(B)
+       (#xad1 . ?\e,F"\e(B)
+       (#xad2 . ?\e,Y4\e(B)
+       (#xad3 . ?\e,Y!\e(B)
        (#xad4 . ?\e$,1u^\e(B)
-       (#xad6 . ?\e$,1s2\e(B)
-       (#xad7 . ?\e$,1s3\e(B)
+       (#xad6 . ?\e$A!d\e(B)
+       (#xad7 . ?\e$A!e\e(B)
        (#xad9 . ?\e$,2%]\e(B)
        (#xadb . ?\e$,2!l\e(B)
-       (#xadc . ?\e$,2" \e(B)
-       (#xadd . ?\e$,2!v\e(B)
-       (#xade . ?\e$,2"/\e(B)
+       (#xadc . ?\e$(O#$\e(B)
+       (#xadd . ?\e$(O#"\e(B)
+       (#xade . ?\e$A!q\e(B)
        (#xadf . ?\e$,2!n\e(B)
-       (#xae0 . ?\e$,2"F\e(B)
+       (#xae0 . ?\e$(O#?\e(B)
        (#xae1 . ?\e$,2!k\e(B)
        (#xae2 . ?\e$,2!m\e(B)
-       (#xae3 . ?\e$,2!s\e(B)
-       (#xae4 . ?\e$,2!}\e(B)
-       (#xae5 . ?\e$,2"f\e(B)
-       (#xae6 . ?\e$,1s"\e(B)
+       (#xae3 . ?\e$A!w\e(B)
+       (#xae4 . ?\e$(G!}\e(B)
+       (#xae5 . ?\e$A!n\e(B)
+       (#xae6 . ?\e$(O#@\e(B)
        (#xae7 . ?\e$,2!j\e(B)
-       (#xae8 . ?\e$,2!r\e(B)
-       (#xae9 . ?\e$,2!|\e(B)
-       (#xaea . ?\e$,2"|\e(B)
-       (#xaeb . ?\e$,2"~\e(B)
-       (#xaec . ?\e$,2#c\e(B)
-       (#xaed . ?\e$,2#f\e(B)
-       (#xaee . ?\e$,2#e\e(B)
+       (#xae8 . ?\e$A!x\e(B)
+       (#xae9 . ?\e$(G!~\e(B)
+       (#xaea . ?\e$(C"P\e(B)
+       (#xaeb . ?\e$(O-~\e(B)
+       (#xaec . ?\e$(O&@\e(B)
+       (#xaed . ?\e$(O&<\e(B)
+       (#xaee . ?\e$(O&>\e(B)
        (#xaf0 . ?\e$,2%`\e(B)
-       (#xaf1 . ?\e$,1s \e(B)
-       (#xaf2 . ?\e$,1s!\e(B)
-       (#xaf3 . ?\e$,2%S\e(B)
+       (#xaf1 . ?\e$B"w\e(B)
+       (#xaf2 . ?\e$B"x\e(B)
+       (#xaf3 . ?\e$(O'{\e(B)
        (#xaf4 . ?\e$,2%W\e(B)
-       (#xaf5 . ?\e$,2#o\e(B)
-       (#xaf6 . ?\e$,2#m\e(B)
-       (#xaf7 . ?\e$,2#B\e(B)
-       (#xaf8 . ?\e$,2#@\e(B)
-       (#xaf9 . ?\e$,2"n\e(B)
+       (#xaf5 . ?\e$B"t\e(B)
+       (#xaf6 . ?\e$B"u\e(B)
+       (#xaf7 . ?\e$A!a\e(B)
+       (#xaf8 . ?\e$A!b\e(B)
+       (#xaf9 . ?\e$(O&g\e(B)
        (#xafa . ?\e$,1zu\e(B)
        (#xafb . ?\e$,1uW\e(B)
        (#xafc . ?\e$,1s8\e(B)
        (#xafd . ?\e$,1rz\e(B)
-       (#xafe . ?\e$,1r~\e(B)
+       (#xafe . ?\e,Y%\e(B)
        ;; APL
        (#xba3 . ?<)
        (#xba6 . ?>)
-       (#xba8 . ?\e$,1xH\e(B)
-       (#xba9 . ?\e$,1xG\e(B)
+       (#xba8 . ?\e$A!E\e(B)
+       (#xba9 . ?\e$A!D\e(B)
        (#xbc0 . ?\e,A/\e(B)
-       (#xbc2 . ?\e$,1ye\e(B)
-       (#xbc3 . ?\e$,1xI\e(B)
+       (#xbc2 . ?\e$A!M\e(B)
+       (#xbc3 . ?\e$A!I\e(B)
        (#xbc4 . ?\e$,1zj\e(B)
        (#xbc6 . ?_)
        (#xbca . ?\e$,1x8\e(B)
        (#xbcc . ?\e$,1|5\e(B)
        (#xbce . ?\e$,1yd\e(B)
-       (#xbcf . ?\e$,2"+\e(B)
+       (#xbcf . ?\e$A!p\e(B)
        (#xbd3 . ?\e$,1zh\e(B)
-       (#xbd6 . ?\e$,1xJ\e(B)
-       (#xbd8 . ?\e$,1yC\e(B)
-       (#xbda . ?\e$,1yB\e(B)
+       (#xbd6 . ?\e$A!H\e(B)
+       (#xbd8 . ?\e$B"?\e(B)
+       (#xbda . ?\e$B">\e(B)
        (#xbdc . ?\e$,1yb\e(B)
        (#xbfc . ?\e$,1yc\e(B)
        ;; Hebrew
@@ -2046,7 +2047,7 @@ as returned by `x-server-vendor'."
        ;; Latin-9
        (#x13bc . ?\e,b<\e(B)
        (#x13bd . ?\e,b=\e(B)
-       (#x13be . ?\e,b>\e(B)
+       (#x13be . ?\e,_/\e(B)
        ;; Currency
        (#x20a0 . ?\e$,1t@\e(B)
        (#x20a1 . ?\e$,1tA\e(B)
@@ -2178,13 +2179,11 @@ order until succeed.")
        char)
     (if (/= len-utf8 len-ctext)
        (if (> len-utf8 len-ctext) utf8 ctext)
-      (while (< i len-utf8)
-       (setq char (aref ctext i))
-       (if (and (< char 128) (/= char (aref utf8 i)))
-           (setq selected utf8
-                 i len-utf8)
-         (setq i (1+ i))))
-      selected)))
+      (let ((result (compare-strings utf8 0 len-utf8 ctext 0 len-ctext)))
+       (if (or (eq result t)
+               (>= (aref ctext (1- (abs result))) 128))
+           ctext
+         utf8)))))
 
 (defun x-selection-value (type)
   (let (text)
@@ -2366,12 +2365,6 @@ order until succeed.")
 ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
 (create-fontset-from-x-resource)
 
-;; Sun expects the menu bar cut and paste commands to use the clipboard.
-;; This has ,? to match both on Sunos and on Solaris.
-(if (string-match "Sun Microsystems,? Inc\\."
-                 (x-server-vendor))
-    (menu-bar-enable-clipboard))
-
 ;; Apply a geometry resource to the initial frame.  Put it at the end
 ;; of the alist, so that anything specified on the command line takes
 ;; precedence.
@@ -2437,4 +2430,27 @@ order until succeed.")
 ;; Turn on support for mouse wheels.
 (mouse-wheel-mode 1)
 
+
+;; Enable CLIPBOARD copy/paste through menu bar commands.
+(menu-bar-enable-clipboard)
+
+;; Override Paste so it looks at CLIPBOARD first.
+(defun x-clipboard-yank ()
+  "Insert the clipboard contents, or the last stretch of killed text."
+  (interactive)
+  (let ((clipboard-text (x-get-selection 'CLIPBOARD))
+       (x-select-enable-clipboard t))
+    (if (and clipboard-text (> (length clipboard-text) 0))
+       (kill-new clipboard-text))
+    (yank)))
+
+(define-key menu-bar-edit-menu [paste]
+  (cons "Paste" (cons "Paste text from clipboard or kill ring"
+                     'x-clipboard-yank)))
+
+;; Initiate drag and drop
+(add-hook 'after-make-frame-functions 'x-dnd-init-frame)
+(global-set-key [drag-n-drop] 'x-dnd-handle-drag-n-drop-event)
+
+;;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78
 ;;; x-win.el ends here