]> code.delx.au - gnu-emacs/blobdiff - lisp/term/x-win.el
Fix coding tag.
[gnu-emacs] / lisp / term / x-win.el
index 8c183db6dea6e6d33fabbbb4401625f1ddbde2cb..acbb3161a15e6cf2dd2f25697b1b1f1c8531dced 100644 (file)
@@ -1,7 +1,7 @@
 ;;; x-win.el --- parse relevant switches and set up for X  -*-coding: iso-2022-7bit;-*-
 
 ;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Author: FSF
 ;; Keywords: terminals, i18n
   (setq initial-frame-alist (cons (cons 'name x-resource-name)
                                  initial-frame-alist)))
 
+;; Handle the --parent-id option.
+(defun x-handle-parent-id (switch)
+  (or (consp x-invocation-args)
+      (error "%s: missing argument to `%s' option" (invocation-name) switch))
+  (setq initial-frame-alist (cons
+                             (cons 'parent-id
+                                   (string-to-number (car x-invocation-args)))
+                             initial-frame-alist)
+        x-invocation-args (cdr x-invocation-args)))
+
 (defvar x-display-name nil
   "The name of the X display on which Emacs was started.
 
@@ -1228,30 +1238,7 @@ XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
   "Return the appropriate value of `system-key-alist' for VENDOR.
 VENDOR is a string containing the name of the X Server's vendor,
 as returned by `x-server-vendor'."
-  ;; Fixme: Drop Apollo now?
-  (cond ((string-equal vendor "Apollo Computer Inc.")
-        '((65280 . linedel)
-          (65281 . chardel)
-          (65282 . copy)
-          (65283 . cut)
-          (65284 . paste)
-          (65285 . move)
-          (65286 . grow)
-          (65287 . cmd)
-          (65288 . shell)
-          (65289 . leftbar)
-          (65290 . rightbar)
-          (65291 . leftbox)
-          (65292 . rightbox)
-          (65293 . upbox)
-          (65294 . downbox)
-          (65295 . pop)
-          (65296 . read)
-          (65297 . edit)
-          (65298 . save)
-          (65299 . exit)
-          (65300 . repeat)))
-       ((or (string-equal vendor "Hewlett-Packard Incorporated")
+  (cond ((or (string-equal vendor "Hewlett-Packard Incorporated")
             (string-equal vendor "Hewlett-Packard Company"))
         '((  168 . mute-acute)
           (  169 . mute-grave)
@@ -1289,9 +1276,10 @@ as returned by `x-server-vendor'."
         ;; This is used by DEC's X server.
         '((65280 . remove)))))
 
+;; Latin-1
 (let ((i 160))
   (while (< i 256)
-    (puthash i (make-char 'latin-iso8859-1 i) x-keysym-table)
+    (puthash i i x-keysym-table)
     (setq i (1+ i))))
 
 ;; Table from Kuhn's proposed additions to the `KEYSYM Encoding'
@@ -1419,70 +1407,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)
@@ -1730,11 +1718,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)
@@ -1745,56 +1733,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)
@@ -1804,93 +1792,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
@@ -2105,7 +2093,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)
@@ -2173,140 +2161,72 @@ This is in addition to, but in preference to, the primary selection."
   :type 'boolean
   :group 'killing)
 
+(defcustom x-select-enable-primary t
+  "Non-nil means cutting and pasting uses the primary selection."
+  :type 'boolean
+  :group 'killing)
+
 (defun x-select-text (text &optional push)
   "Make TEXT, a string, the primary X selection.
 Also, set the value of X cut buffer 0, for backward compatibility
 with older X applications.
 gildea@stop.mail-abuse.org says it's not desirable to put kills
 in the clipboard."
-  ;; Don't send the cut buffer too much text.
-  ;; It becomes slow, and if really big it causes errors.
-  (cond ((>= (length text) x-cut-buffer-max)
-        (x-set-cut-buffer "" push)
-        (setq x-last-selected-text-cut ""
-              x-last-selected-text-cut-encoded ""))
-       (t
-        (setq x-last-selected-text-cut text
-              x-last-cut-buffer-coding 'iso-latin-1
-              x-last-selected-text-cut-encoded
-              ;; ICCCM says cut buffer always contain ISO-Latin-1
-              (encode-coding-string text 'iso-latin-1))
-        (x-set-cut-buffer x-last-selected-text-cut-encoded push)))
-  (x-set-selection 'PRIMARY text)
-  (setq x-last-selected-text-primary text)
-  (when x-select-enable-clipboard
-    (x-set-selection 'CLIPBOARD text)
-    (setq x-last-selected-text-clipboard text))
-  )
+  ;; With multi-tty, this function may be called from a tty frame.
+  (when (eq (framep (selected-frame)) 'x)
+    ;; Don't send the cut buffer too much text.
+    ;; It becomes slow, and if really big it causes errors.
+    (cond ((>= (length text) x-cut-buffer-max)
+           (x-set-cut-buffer "" push)
+           (setq x-last-selected-text-cut ""
+                 x-last-selected-text-cut-encoded ""))
+          (t
+           (setq x-last-selected-text-cut text
+                 x-last-cut-buffer-coding 'iso-latin-1
+                 x-last-selected-text-cut-encoded
+                 ;; ICCCM says cut buffer always contain ISO-Latin-1
+                 (encode-coding-string text 'iso-latin-1))
+           (x-set-cut-buffer x-last-selected-text-cut-encoded push)))
+    (when x-select-enable-primary
+      (x-set-selection 'PRIMARY text)
+      (setq x-last-selected-text-primary text))
+    (when x-select-enable-clipboard
+      (x-set-selection 'CLIPBOARD text)
+      (setq x-last-selected-text-clipboard text))))
 
 (defvar x-select-request-type nil
   "*Data type request for X selection.
-The value is nil, one of the following data types, or a list of them:
+The value is one of the following data types, a list of them, or nil:
   `COMPOUND_TEXT', `UTF8_STRING', `STRING', `TEXT'
 
-If the value is nil, try `COMPOUND_TEXT' and `UTF8_STRING', and
-use the more appropriate result.  If both fail, try `STRING', and
-then `TEXT'.
-
 If the value is one of the above symbols, try only the specified
 type.
 
 If the value is a list of them, try each of them in the specified
-order until succeed.")
+order until succeed.
 
-;; Helper function for x-selection-value.  Select UTF8 or CTEXT
-;; whichever is more appropriate.  Here, we use this heurisitcs.
-;;
-;;   (1) If their lengthes are different, select the longer one.  This
-;;   is because an X client may just cut off unsupported characters.
-;;
-;;   (2) Otherwise, if they are different at Nth character, and that
-;;   of UTF8 is a Latin character and that of CTEXT belongs to a CJK
-;;   character set, select UTF8.  Also select UTF8 if the Nth
-;;   character of UTF8 is non-ASCII where as that of CTEXT is ASCII.
-;;   This is because an X client may replace unsupported characters
-;;   with some ASCII character (typically ` ' or `?') in CTEXT.
-;;
-;;   (3) Otherwise, select CTEXT.  This is because legacy charsets are
-;;   better for the current Emacs, especially when the selection owner
-;;   is also Emacs.
-
-(defun x-select-utf8-or-ctext (utf8 ctext)
-  (let ((len-utf8 (length utf8))
-       (len-ctext (length ctext))
-       (selected ctext)
-       (i 0)
-       char)
-    (if (/= len-utf8 len-ctext)
-       (if (> len-utf8 len-ctext) utf8 ctext)
-      (let ((result (compare-strings utf8 0 len-utf8 ctext 0 len-ctext)))
-       (if (eq result t)
-           ctext
-         (let ((utf8-char (aref utf8 (1- (abs result))))
-               (ctext-char (aref ctext (1- (abs result)))))
-           (if (or (and (aref (char-category-set utf8-char) ?l)
-                        (aref (char-category-set ctext-char) ?C))
-                   (and (>= utf8-char 128)
-                        (< ctext-char  128)))
-               utf8
-             ctext)))))))
+The value nil is the same as this list:
+  \(UTF8_STRING COMPOUND_TEXT STRING)
+")
 
 ;; Get a selection value of type TYPE by calling x-get-selection with
-;; an appropiate DATA-TYPE argument decidd by `x-select-request-type'.
+;; an appropiate DATA-TYPE argument decided by `x-select-request-type'.
 ;; The return value is already decoded.  If x-get-selection causes an
 ;; error, this function return nil.
 
 (defun x-selection-value (type)
-  (let (text)
-    (cond ((null x-select-request-type)
-          (let (utf8 ctext utf8-coding)
-            ;; We try both UTF8_STRING and COMPOUND_TEXT, and choose
-            ;; the more appropriate one.  If both fail, try STRING.
-
-            ;; At first try UTF8_STRING.
-            (setq utf8 (condition-case nil
-                           (x-get-selection type 'UTF8_STRING)
-                         (error nil))
-                  utf8-coding last-coding-system-used)
-            (if utf8
-                ;; If it is a local selection, or it contains only
-                ;; ASCII characers, choose it.
-                (if (or (not (get-text-property 0 'foreign-selection utf8))
-                        (= (length utf8) (string-bytes utf8)))
-                    (setq text utf8)))
-            ;; If not yet decided, try COMPOUND_TEXT.
-            (if (not text)
-                (if (setq ctext (condition-case nil
-                                    (x-get-selection type 'COMPOUND_TEXT)
-                                  (error nil)))
-                    ;; If UTF8_STRING was also successful, choose the
-                    ;; more appropriate one from UTF8 and CTEXT.
-                    (if utf8
-                        (setq text (x-select-utf8-or-ctext utf8 ctext))
-                      ;; Othewise, choose CTEXT.
-                      (setq text ctext))
-                  (setq text utf8)))
-            ;; If not yet decided, try STRING.
-            (or text
-                (setq text (condition-case nil
-                               (x-get-selection type 'STRING)
-                             (error nil))))
-            (if (eq text utf8)
-                (setq last-coding-system-used utf8-coding))))
-
-         ((consp x-select-request-type)
-          (let ((tail x-select-request-type))
-            (while (and tail (not text))
-              (condition-case nil
-                  (setq text (x-get-selection type (car tail)))
-                (error nil))
-              (setq tail (cdr tail)))))
-
-         (t
-          (condition-case nil
-              (setq text (x-get-selection type x-select-request-type))
-            (error nil))))
-
+  (let ((request-type (or x-select-request-type
+                         '(UTF8_STRING COMPOUND_TEXT STRING)))
+       text)
+    (if (consp request-type)
+       (while (and request-type (not text))
+         (condition-case nil
+             (setq text (x-get-selection type (car request-type)))
+           (error nil))
+         (setq request-type (cdr request-type)))
+      (condition-case nil
+         (setq text (x-get-selection type request-type))
+       (error nil)))
     (if text
        (remove-text-properties 0 (length text) '(foreign-selection nil) text))
     text))
@@ -2318,99 +2238,104 @@ order until succeed.")
 ;; it returns nil the second time.  This is so that a single
 ;; selection won't be added to the kill ring over and over.
 (defun x-cut-buffer-or-selection-value ()
-  (let (clip-text primary-text cut-text)
-    (when x-select-enable-clipboard
-      (setq clip-text (x-selection-value 'CLIPBOARD))
-      (if (string= clip-text "") (setq clip-text nil))
-
-      ;; Check the CLIPBOARD selection for 'newness', is it different
+  ;; With multi-tty, this function may be called from a tty frame.
+  (when (eq (framep (selected-frame)) 'x)
+    (let (clip-text primary-text cut-text)
+      (when x-select-enable-clipboard
+        (setq clip-text (x-selection-value 'CLIPBOARD))
+        (if (string= clip-text "") (setq clip-text nil))
+
+        ;; Check the CLIPBOARD selection for 'newness', is it different
+        ;; from what we remebered them to be last time we did a
+        ;; cut/paste operation.
+        (setq clip-text
+              (cond ;; check clipboard
+               ((or (not clip-text) (string= clip-text ""))
+                (setq x-last-selected-text-clipboard nil))
+               ((eq      clip-text x-last-selected-text-clipboard) nil)
+               ((string= clip-text x-last-selected-text-clipboard)
+                ;; Record the newer string,
+                ;; so subsequent calls can use the `eq' test.
+                (setq x-last-selected-text-clipboard clip-text)
+                nil)
+               (t (setq x-last-selected-text-clipboard clip-text)))))
+
+      (when x-select-enable-primary
+       (setq primary-text (x-selection-value 'PRIMARY))
+       ;; Check the PRIMARY selection for 'newness', is it different
+       ;; from what we remebered them to be last time we did a
+       ;; cut/paste operation.
+       (setq primary-text
+             (cond ;; check primary selection
+              ((or (not primary-text) (string= primary-text ""))
+               (setq x-last-selected-text-primary nil))
+              ((eq      primary-text x-last-selected-text-primary) nil)
+              ((string= primary-text x-last-selected-text-primary)
+               ;; Record the newer string,
+               ;; so subsequent calls can use the `eq' test.
+               (setq x-last-selected-text-primary primary-text)
+               nil)
+              (t
+               (setq x-last-selected-text-primary primary-text)))))
+
+      (setq cut-text (x-get-cut-buffer 0))
+
+      ;; Check the x cut buffer for 'newness', is it different
       ;; from what we remebered them to be last time we did a
       ;; cut/paste operation.
-      (setq clip-text
-           (cond;; check clipboard
-            ((or (not clip-text) (string= clip-text ""))
-             (setq x-last-selected-text-clipboard nil))
-            ((eq      clip-text x-last-selected-text-clipboard) nil)
-            ((string= clip-text x-last-selected-text-clipboard)
-             ;; Record the newer string,
-             ;; so subsequent calls can use the `eq' test.
-             (setq x-last-selected-text-clipboard clip-text)
-             nil)
-            (t
-             (setq x-last-selected-text-clipboard clip-text))))
-      )
-
-    (setq primary-text (x-selection-value 'PRIMARY))
-    ;; Check the PRIMARY selection for 'newness', is it different
-    ;; from what we remebered them to be last time we did a
-    ;; cut/paste operation.
-    (setq primary-text
-         (cond;; check primary selection
-          ((or (not primary-text) (string= primary-text ""))
-           (setq x-last-selected-text-primary nil))
-          ((eq      primary-text x-last-selected-text-primary) nil)
-          ((string= primary-text x-last-selected-text-primary)
-           ;; Record the newer string,
-           ;; so subsequent calls can use the `eq' test.
-           (setq x-last-selected-text-primary primary-text)
-           nil)
-          (t
-           (setq x-last-selected-text-primary primary-text))))
-
-    (setq cut-text (x-get-cut-buffer 0))
-
-    ;; Check the x cut buffer for 'newness', is it different
-    ;; from what we remebered them to be last time we did a
-    ;; cut/paste operation.
-    (setq cut-text
-         (let ((next-coding (or next-selection-coding-system 'iso-latin-1)))
-           (cond;; check cut buffer
-            ((or (not cut-text) (string= cut-text ""))
-             (setq x-last-selected-text-cut nil))
-            ;; This short cut doesn't work because x-get-cut-buffer
-            ;; always returns a newly created string.
-            ;; ((eq      cut-text x-last-selected-text-cut) nil)
-            ((and (string= cut-text x-last-selected-text-cut-encoded)
-                  (eq x-last-cut-buffer-coding next-coding))
-             ;; See the comment above.  No need of this recording.
-             ;; Record the newer string,
-             ;; so subsequent calls can use the `eq' test.
-             ;; (setq x-last-selected-text-cut cut-text)
-             nil)
-            (t
-             (setq x-last-selected-text-cut-encoded cut-text
-                 x-last-cut-buffer-coding next-coding
-                 x-last-selected-text-cut
-                 ;; ICCCM says cut buffer always contain ISO-Latin-1, but
-                 ;; use next-selection-coding-system if not nil.
-                 (decode-coding-string
-                  cut-text next-coding))))))
-
-    ;; As we have done one selection, clear this now.
-    (setq next-selection-coding-system nil)
-
-    ;; At this point we have recorded the current values for the
-    ;; selection from clipboard (if we are supposed to) primary,
-    ;; and cut buffer.  So return the first one that has changed
-    ;; (which is the first non-null one).
-    ;;
-    ;; NOTE: There will be cases where more than one of these has
-    ;; changed and the new values differ.  This indicates that
-    ;; something like the following has happened since the last time
-    ;; we looked at the selections: Application X set all the
-    ;; selections, then Application Y set only one or two of them (say
-    ;; just the cut-buffer).  In this case since we don't have
-    ;; timestamps there is no way to know what the 'correct' value to
-    ;; return is.  The nice thing to do would be to tell the user we
-    ;; saw multiple possible selections and ask the user which was the
-    ;; one they wanted.
-    ;; This code is still a big improvement because now the user can
-    ;; futz with the current selection and get emacs to pay attention
-    ;; to the cut buffer again (previously as soon as clipboard or
-    ;; primary had been set the cut buffer would essentially never be
-    ;; checked again).
-    (or clip-text primary-text cut-text)
-    ))
+      (setq cut-text
+            (let ((next-coding (or next-selection-coding-system 'iso-latin-1)))
+              (cond ;; check cut buffer
+               ((or (not cut-text) (string= cut-text ""))
+                (setq x-last-selected-text-cut nil))
+               ;; This short cut doesn't work because x-get-cut-buffer
+               ;; always returns a newly created string.
+               ;; ((eq      cut-text x-last-selected-text-cut) nil)
+               ((and (string= cut-text x-last-selected-text-cut-encoded)
+                     (eq x-last-cut-buffer-coding next-coding))
+                ;; See the comment above.  No need of this recording.
+                ;; Record the newer string,
+                ;; so subsequent calls can use the `eq' test.
+                ;; (setq x-last-selected-text-cut cut-text)
+                nil)
+               (t
+                (setq x-last-selected-text-cut-encoded cut-text
+                      x-last-cut-buffer-coding next-coding
+                      x-last-selected-text-cut
+                      ;; ICCCM says cut buffer always contain ISO-Latin-1, but
+                      ;; use next-selection-coding-system if not nil.
+                      (decode-coding-string
+                       cut-text next-coding))))))
+
+      ;; As we have done one selection, clear this now.
+      (setq next-selection-coding-system nil)
+
+      ;; At this point we have recorded the current values for the
+      ;; selection from clipboard (if we are supposed to) primary,
+      ;; and cut buffer.  So return the first one that has changed
+      ;; (which is the first non-null one).
+      ;;
+      ;; NOTE: There will be cases where more than one of these has
+      ;; changed and the new values differ.  This indicates that
+      ;; something like the following has happened since the last time
+      ;; we looked at the selections: Application X set all the
+      ;; selections, then Application Y set only one or two of them (say
+      ;; just the cut-buffer).  In this case since we don't have
+      ;; timestamps there is no way to know what the 'correct' value to
+      ;; return is.  The nice thing to do would be to tell the user we
+      ;; saw multiple possible selections and ask the user which was the
+      ;; one they wanted.
+      ;; This code is still a big improvement because now the user can
+      ;; futz with the current selection and get emacs to pay attention
+      ;; to the cut buffer again (previously as soon as clipboard or
+      ;; primary had been set the cut buffer would essentially never be
+      ;; checked again).
+      (or clip-text primary-text cut-text)
+      )))
+
+;; Arrange for the kill and yank functions to set and check the clipboard.
+(setq interprogram-cut-function 'x-select-text)
+(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
 
 (defun x-clipboard-yank ()
   "Insert the clipboard contents, or the last stretch of killed text."
@@ -2468,28 +2393,6 @@ order until succeed.")
   ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
   (create-fontset-from-x-resource)
 
-  ;; Try to create a fontset from a font specification which comes
-  ;; from initial-frame-alist, default-frame-alist, or X resource.
-  ;; A font specification in command line argument (i.e. -fn XXXX)
-  ;; should be already in default-frame-alist as a `font'
-  ;; parameter.  However, any font specifications in site-start
-  ;; library, user's init file (.emacs), and default.el are not
-  ;; yet handled here.
-
-  (let ((font (or (cdr (assq 'font initial-frame-alist))
-                 (cdr (assq 'font default-frame-alist))
-                 (x-get-resource "font" "Font")))
-       xlfd-fields resolved-name)
-    (if (and font
-            (not (query-fontset font))
-            (setq resolved-name (x-resolve-font-name font))
-            (setq xlfd-fields (x-decompose-font-name font)))
-       (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
-           (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
-         ;; Create a fontset from FONT.  The fontset name is
-         ;; generated from FONT.
-         (create-fontset-from-ascii-font font resolved-name "startup"))))
-
   ;; Set scroll bar mode to right if set by X resources. Default is left.
   (if (equal (x-get-resource "verticalScrollBars" "ScrollBars") "right")
       (customize-set-variable 'scroll-bar-mode 'right))
@@ -2667,74 +2570,20 @@ If you don't want stock icons, set the variable to nil."
 
 (defun x-gtk-map-stock (file)
   "Map icon with file name FILE to a Gtk+ stock name, using `x-gtk-stock-map'."
-  (let* ((file-sans (file-name-sans-extension file))
-        (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans)
-                  (match-string 1 file-sans)))
-        (value))
-    (mapc (lambda (elem)
-           (let ((assoc (if (symbolp elem) (symbol-value elem) elem)))
-             (or value (setq value (assoc-string (or key file-sans) assoc)))))
-           icon-map-list)
-    (and value (cdr value))))
+  (if (stringp file)
+      (let* ((file-sans (file-name-sans-extension file))
+            (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans)
+                      (match-string 1 file-sans)))
+            (value))
+       (mapc (lambda (elem)
+               (let ((assoc (if (symbolp elem) (symbol-value elem) elem)))
+                 (or value (setq value (assoc-string (or key file-sans)
+                                                     assoc)))))
+             icon-map-list)
+       (and value (cdr value)))
+    nil))
 
 (provide 'x-win)
 
-(defcustom x-gtk-stock-map
-  '(
-    ("etc/images/new" . "gtk-new")
-    ("etc/images/open" . "gtk-open")
-    ("etc/images/diropen" . "n:system-file-manager")
-    ("etc/images/close" . "gtk-close")
-    ("etc/images/save" . "gtk-save")
-    ("etc/images/saveas" . "gtk-save-as")
-    ("etc/images/undo" . "gtk-undo")
-    ("etc/images/cut" . "gtk-cut")
-    ("etc/images/copy" . "gtk-copy")
-    ("etc/images/paste" . "gtk-paste")
-    ("etc/images/search" . "gtk-find")
-    ("etc/images/print" . "gtk-print")
-    ("etc/images/preferences" . "gtk-preferences")
-    ("etc/images/help" . "gtk-help")
-    ("etc/images/left-arrow" . "gtk-go-back")
-    ("etc/images/right-arrow" . "gtk-go-forward")
-    ("etc/images/home" . "gtk-home")
-    ("etc/images/jump-to" . "gtk-jump-to")
-    ("etc/images/index" . "gtk-index")
-    ("etc/images/search" . "gtk-find")
-    ("etc/images/exit" . "gtk-quit"))
-  "How icons for tool bars are mapped to Gtk+ stock items.
-Emacs must be compiled with the Gtk+ toolkit for this to have any effect.
-A value that begins with n: denotes a named icon instead of a stock icon."
-  :version "22.2"
-  :type 'alist
-  :group 'x)
-
-(defvar icon-map-list nil
-  "*A list of alists that maps icon file names to stock/named icons.
-The alists are searched in the order they appear.  The first match is used.
-The keys in the alists are file names without extension and with two directory
-components.  For example, to map /usr/share/emacs/22.1.1/etc/images/open.xpm
-to stock item gtk-open, use:
-
-  (\"etc/images/open\" . \"gtk-open\")
-
-Themes also have named icons.  To map to one of those, use n: before the name:
-
-  (\"etc/images/diropen\" . \"n:system-file-manager\")
-
-The list elements are either the symbol name for the alist or the alist itself.")
-
-(defun x-gtk-map-stock (file)
-  "Map icon with file name FILE to a Gtk+ stock name, using `x-gtk-stock-map'."
-  (let* ((file-sans (file-name-sans-extension file))
-        (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans)
-                  (match-string 1 file-sans)))
-        (value))
-    (mapc (lambda (elem)
-           (let ((assoc (if (symbolp elem) (symbol-value elem) elem)))
-             (or value (setq value (assoc-string (or key file-sans) assoc)))))
-           icon-map-list)
-    (and value (cdr value))))
-
 ;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78
 ;;; x-win.el ends here