Add declarations for builds without X.
[bpt/emacs.git] / lisp / term / x-win.el
index 66c5a27..1cfdeaf 100644 (file)
@@ -1,17 +1,17 @@
 ;;; 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.
+;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;;   2008 Free Software Foundation, Inc.
 
 ;; Author: FSF
 ;; Keywords: terminals, i18n
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs 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 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -19,9 +19,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 (defvar x-session-id)
 (defvar x-session-previous-id)
 
-(defvar x-command-line-resources nil)
-
-;; Handler for switches of the form "-switch value" or "-switch".
-(defun x-handle-switch (switch)
-  (let ((aelt (assoc switch command-line-x-option-alist)))
-    (if aelt
-       (let ((param (nth 3 aelt))
-             (value (nth 4 aelt)))
-         (if value
-             (setq default-frame-alist
-                   (cons (cons param value)
-                         default-frame-alist))
-           (setq default-frame-alist
-                 (cons (cons param
-                             (car x-invocation-args))
-                       default-frame-alist)
-                 x-invocation-args (cdr x-invocation-args)))))))
-
-;; Handler for switches of the form "-switch n"
-(defun x-handle-numeric-switch (switch)
-  (let ((aelt (assoc switch command-line-x-option-alist)))
-    (if aelt
-       (let ((param (nth 3 aelt)))
-         (setq default-frame-alist
-               (cons (cons param
-                           (string-to-number (car x-invocation-args)))
-                     default-frame-alist)
-               x-invocation-args
-               (cdr x-invocation-args))))))
-
-;; Handle options that apply to initial frame only
-(defun x-handle-initial-switch (switch)
-  (let ((aelt (assoc switch command-line-x-option-alist)))
-    (if aelt
-       (let ((param (nth 3 aelt))
-             (value (nth 4 aelt)))
-         (if value
-             (setq initial-frame-alist
-                   (cons (cons param value)
-                         initial-frame-alist))
-           (setq initial-frame-alist
-                 (cons (cons param
-                             (car x-invocation-args))
-                       initial-frame-alist)
-                 x-invocation-args (cdr x-invocation-args)))))))
-
 (defun x-handle-no-bitmap-icon (switch)
   (setq default-frame-alist (cons '(icon-type) default-frame-alist)))
 
-;; Make -iconic apply only to the initial frame!
-(defun x-handle-iconic (switch)
-  (setq initial-frame-alist
-       (cons '(visibility . icon) initial-frame-alist)))
-
-;; Handle the -xrm option.
-(defun x-handle-xrm-switch (switch)
-  (unless (consp x-invocation-args)
-    (error "%s: missing argument to `%s' option" (invocation-name) switch))
-  (setq x-command-line-resources
-       (if (null x-command-line-resources)
-           (car x-invocation-args)
-         (concat x-command-line-resources "\n" (car x-invocation-args))))
-  (setq x-invocation-args (cdr x-invocation-args)))
-
-;; Handle the geometry option
-(defun x-handle-geometry (switch)
-  (let* ((geo (x-parse-geometry (car x-invocation-args)))
-        (left (assq 'left geo))
-        (top (assq 'top geo))
-        (height (assq 'height geo))
-        (width (assq 'width geo)))
-    (if (or height width)
-       (setq default-frame-alist
-             (append default-frame-alist
-                     '((user-size . t))
-                     (if height (list height))
-                     (if width (list width)))
-             initial-frame-alist
-             (append initial-frame-alist
-                     '((user-size . t))
-                     (if height (list height))
-                     (if width (list width)))))
-    (if (or left top)
-       (setq initial-frame-alist
-             (append initial-frame-alist
-                     '((user-position . t))
-                     (if left (list left))
-                     (if top (list top)))))
-    (setq x-invocation-args (cdr x-invocation-args))))
-
-;; Handle the -name option.  Set the variable x-resource-name
-;; to the option's operand; set the name of
-;; the initial frame, too.
-(defun x-handle-name-switch (switch)
+;; 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 x-resource-name (car x-invocation-args)
-       x-invocation-args (cdr x-invocation-args))
-  (setq initial-frame-alist (cons (cons 'name x-resource-name)
-                                 initial-frame-alist)))
-
-(defvar x-display-name nil
-  "The name of the X display on which Emacs was started.
-
-For the X display name of individual frames, see the `display'
-frame parameter.")
-
-(defun x-handle-display (switch)
-  "Handle -display DISPLAY option."
-  (setq x-display-name (car x-invocation-args)
-       x-invocation-args (cdr x-invocation-args))
-  ;; Make subshell programs see the same DISPLAY value Emacs really uses.
-  ;; Note that this isn't completely correct, since Emacs can use
-  ;; multiple displays.  However, there is no way to tell an already
-  ;; running subshell which display the user is currently typing on.
-  (setenv "DISPLAY" x-display-name))
-
-(defun x-handle-args (args)
-  "Process the X-related command line options in ARGS.
-This is done before the user's startup file is loaded.  They are copied to
-`x-invocation-args', from which the X-related things are extracted, first
-the switch (e.g., \"-fg\") in the following code, and possible values
-\(e.g., \"black\") in the option handler code (e.g., x-handle-switch).
-This function returns ARGS minus the arguments that have been processed."
-  ;; We use ARGS to accumulate the args that we don't handle here, to return.
-  (setq x-invocation-args args
-       args nil)
-  (while (and x-invocation-args
-             (not (equal (car x-invocation-args) "--")))
-    (let* ((this-switch (car x-invocation-args))
-          (orig-this-switch this-switch)
-          completion argval aelt handler)
-      (setq x-invocation-args (cdr x-invocation-args))
-      ;; Check for long options with attached arguments
-      ;; and separate out the attached option argument into argval.
-      (if (string-match "^--[^=]*=" this-switch)
-         (setq argval (substring this-switch (match-end 0))
-               this-switch (substring this-switch 0 (1- (match-end 0)))))
-      ;; Complete names of long options.
-      (if (string-match "^--" this-switch)
-         (progn
-           (setq completion (try-completion this-switch command-line-x-option-alist))
-           (if (eq completion t)
-               ;; Exact match for long option.
-               nil
-             (if (stringp completion)
-                 (let ((elt (assoc completion command-line-x-option-alist)))
-                   ;; Check for abbreviated long option.
-                   (or elt
-                       (error "Option `%s' is ambiguous" this-switch))
-                   (setq this-switch completion))))))
-      (setq aelt (assoc this-switch command-line-x-option-alist))
-      (if aelt (setq handler (nth 2 aelt)))
-      (if handler
-         (if argval
-             (let ((x-invocation-args
-                    (cons argval x-invocation-args)))
-               (funcall handler this-switch))
-           (funcall handler this-switch))
-       (setq args (cons orig-this-switch args)))))
-  (nconc (nreverse args) x-invocation-args))
+  (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)))
 
 ;; Handle the --smid switch.  This is used by the session manager
 ;; to give us back our session id we had on the previous run.
@@ -402,765 +251,9 @@ exists."
 (defconst x-pointer-watch 150)
 (defconst x-pointer-xterm 152)
 (defconst x-pointer-invisible 255)
-\f
-;;
-;; Available colors
-;;
 
-(defvar x-colors '("LightGreen"
-                  "light green"
-                  "DarkRed"
-                  "dark red"
-                  "DarkMagenta"
-                  "dark magenta"
-                  "DarkCyan"
-                  "dark cyan"
-                  "DarkBlue"
-                  "dark blue"
-                  "DarkGray"
-                  "dark gray"
-                  "DarkGrey"
-                  "dark grey"
-                  "grey100"
-                  "gray100"
-                  "grey99"
-                  "gray99"
-                  "grey98"
-                  "gray98"
-                  "grey97"
-                  "gray97"
-                  "grey96"
-                  "gray96"
-                  "grey95"
-                  "gray95"
-                  "grey94"
-                  "gray94"
-                  "grey93"
-                  "gray93"
-                  "grey92"
-                  "gray92"
-                  "grey91"
-                  "gray91"
-                  "grey90"
-                  "gray90"
-                  "grey89"
-                  "gray89"
-                  "grey88"
-                  "gray88"
-                  "grey87"
-                  "gray87"
-                  "grey86"
-                  "gray86"
-                  "grey85"
-                  "gray85"
-                  "grey84"
-                  "gray84"
-                  "grey83"
-                  "gray83"
-                  "grey82"
-                  "gray82"
-                  "grey81"
-                  "gray81"
-                  "grey80"
-                  "gray80"
-                  "grey79"
-                  "gray79"
-                  "grey78"
-                  "gray78"
-                  "grey77"
-                  "gray77"
-                  "grey76"
-                  "gray76"
-                  "grey75"
-                  "gray75"
-                  "grey74"
-                  "gray74"
-                  "grey73"
-                  "gray73"
-                  "grey72"
-                  "gray72"
-                  "grey71"
-                  "gray71"
-                  "grey70"
-                  "gray70"
-                  "grey69"
-                  "gray69"
-                  "grey68"
-                  "gray68"
-                  "grey67"
-                  "gray67"
-                  "grey66"
-                  "gray66"
-                  "grey65"
-                  "gray65"
-                  "grey64"
-                  "gray64"
-                  "grey63"
-                  "gray63"
-                  "grey62"
-                  "gray62"
-                  "grey61"
-                  "gray61"
-                  "grey60"
-                  "gray60"
-                  "grey59"
-                  "gray59"
-                  "grey58"
-                  "gray58"
-                  "grey57"
-                  "gray57"
-                  "grey56"
-                  "gray56"
-                  "grey55"
-                  "gray55"
-                  "grey54"
-                  "gray54"
-                  "grey53"
-                  "gray53"
-                  "grey52"
-                  "gray52"
-                  "grey51"
-                  "gray51"
-                  "grey50"
-                  "gray50"
-                  "grey49"
-                  "gray49"
-                  "grey48"
-                  "gray48"
-                  "grey47"
-                  "gray47"
-                  "grey46"
-                  "gray46"
-                  "grey45"
-                  "gray45"
-                  "grey44"
-                  "gray44"
-                  "grey43"
-                  "gray43"
-                  "grey42"
-                  "gray42"
-                  "grey41"
-                  "gray41"
-                  "grey40"
-                  "gray40"
-                  "grey39"
-                  "gray39"
-                  "grey38"
-                  "gray38"
-                  "grey37"
-                  "gray37"
-                  "grey36"
-                  "gray36"
-                  "grey35"
-                  "gray35"
-                  "grey34"
-                  "gray34"
-                  "grey33"
-                  "gray33"
-                  "grey32"
-                  "gray32"
-                  "grey31"
-                  "gray31"
-                  "grey30"
-                  "gray30"
-                  "grey29"
-                  "gray29"
-                  "grey28"
-                  "gray28"
-                  "grey27"
-                  "gray27"
-                  "grey26"
-                  "gray26"
-                  "grey25"
-                  "gray25"
-                  "grey24"
-                  "gray24"
-                  "grey23"
-                  "gray23"
-                  "grey22"
-                  "gray22"
-                  "grey21"
-                  "gray21"
-                  "grey20"
-                  "gray20"
-                  "grey19"
-                  "gray19"
-                  "grey18"
-                  "gray18"
-                  "grey17"
-                  "gray17"
-                  "grey16"
-                  "gray16"
-                  "grey15"
-                  "gray15"
-                  "grey14"
-                  "gray14"
-                  "grey13"
-                  "gray13"
-                  "grey12"
-                  "gray12"
-                  "grey11"
-                  "gray11"
-                  "grey10"
-                  "gray10"
-                  "grey9"
-                  "gray9"
-                  "grey8"
-                  "gray8"
-                  "grey7"
-                  "gray7"
-                  "grey6"
-                  "gray6"
-                  "grey5"
-                  "gray5"
-                  "grey4"
-                  "gray4"
-                  "grey3"
-                  "gray3"
-                  "grey2"
-                  "gray2"
-                  "grey1"
-                  "gray1"
-                  "grey0"
-                  "gray0"
-                  "thistle4"
-                  "thistle3"
-                  "thistle2"
-                  "thistle1"
-                  "MediumPurple4"
-                  "MediumPurple3"
-                  "MediumPurple2"
-                  "MediumPurple1"
-                  "purple4"
-                  "purple3"
-                  "purple2"
-                  "purple1"
-                  "DarkOrchid4"
-                  "DarkOrchid3"
-                  "DarkOrchid2"
-                  "DarkOrchid1"
-                  "MediumOrchid4"
-                  "MediumOrchid3"
-                  "MediumOrchid2"
-                  "MediumOrchid1"
-                  "plum4"
-                  "plum3"
-                  "plum2"
-                  "plum1"
-                  "orchid4"
-                  "orchid3"
-                  "orchid2"
-                  "orchid1"
-                  "magenta4"
-                  "magenta3"
-                  "magenta2"
-                  "magenta1"
-                  "VioletRed4"
-                  "VioletRed3"
-                  "VioletRed2"
-                  "VioletRed1"
-                  "maroon4"
-                  "maroon3"
-                  "maroon2"
-                  "maroon1"
-                  "PaleVioletRed4"
-                  "PaleVioletRed3"
-                  "PaleVioletRed2"
-                  "PaleVioletRed1"
-                  "LightPink4"
-                  "LightPink3"
-                  "LightPink2"
-                  "LightPink1"
-                  "pink4"
-                  "pink3"
-                  "pink2"
-                  "pink1"
-                  "HotPink4"
-                  "HotPink3"
-                  "HotPink2"
-                  "HotPink1"
-                  "DeepPink4"
-                  "DeepPink3"
-                  "DeepPink2"
-                  "DeepPink1"
-                  "red4"
-                  "red3"
-                  "red2"
-                  "red1"
-                  "OrangeRed4"
-                  "OrangeRed3"
-                  "OrangeRed2"
-                  "OrangeRed1"
-                  "tomato4"
-                  "tomato3"
-                  "tomato2"
-                  "tomato1"
-                  "coral4"
-                  "coral3"
-                  "coral2"
-                  "coral1"
-                  "DarkOrange4"
-                  "DarkOrange3"
-                  "DarkOrange2"
-                  "DarkOrange1"
-                  "orange4"
-                  "orange3"
-                  "orange2"
-                  "orange1"
-                  "LightSalmon4"
-                  "LightSalmon3"
-                  "LightSalmon2"
-                  "LightSalmon1"
-                  "salmon4"
-                  "salmon3"
-                  "salmon2"
-                  "salmon1"
-                  "brown4"
-                  "brown3"
-                  "brown2"
-                  "brown1"
-                  "firebrick4"
-                  "firebrick3"
-                  "firebrick2"
-                  "firebrick1"
-                  "chocolate4"
-                  "chocolate3"
-                  "chocolate2"
-                  "chocolate1"
-                  "tan4"
-                  "tan3"
-                  "tan2"
-                  "tan1"
-                  "wheat4"
-                  "wheat3"
-                  "wheat2"
-                  "wheat1"
-                  "burlywood4"
-                  "burlywood3"
-                  "burlywood2"
-                  "burlywood1"
-                  "sienna4"
-                  "sienna3"
-                  "sienna2"
-                  "sienna1"
-                  "IndianRed4"
-                  "IndianRed3"
-                  "IndianRed2"
-                  "IndianRed1"
-                  "RosyBrown4"
-                  "RosyBrown3"
-                  "RosyBrown2"
-                  "RosyBrown1"
-                  "DarkGoldenrod4"
-                  "DarkGoldenrod3"
-                  "DarkGoldenrod2"
-                  "DarkGoldenrod1"
-                  "goldenrod4"
-                  "goldenrod3"
-                  "goldenrod2"
-                  "goldenrod1"
-                  "gold4"
-                  "gold3"
-                  "gold2"
-                  "gold1"
-                  "yellow4"
-                  "yellow3"
-                  "yellow2"
-                  "yellow1"
-                  "LightYellow4"
-                  "LightYellow3"
-                  "LightYellow2"
-                  "LightYellow1"
-                  "LightGoldenrod4"
-                  "LightGoldenrod3"
-                  "LightGoldenrod2"
-                  "LightGoldenrod1"
-                  "khaki4"
-                  "khaki3"
-                  "khaki2"
-                  "khaki1"
-                  "DarkOliveGreen4"
-                  "DarkOliveGreen3"
-                  "DarkOliveGreen2"
-                  "DarkOliveGreen1"
-                  "OliveDrab4"
-                  "OliveDrab3"
-                  "OliveDrab2"
-                  "OliveDrab1"
-                  "chartreuse4"
-                  "chartreuse3"
-                  "chartreuse2"
-                  "chartreuse1"
-                  "green4"
-                  "green3"
-                  "green2"
-                  "green1"
-                  "SpringGreen4"
-                  "SpringGreen3"
-                  "SpringGreen2"
-                  "SpringGreen1"
-                  "PaleGreen4"
-                  "PaleGreen3"
-                  "PaleGreen2"
-                  "PaleGreen1"
-                  "SeaGreen4"
-                  "SeaGreen3"
-                  "SeaGreen2"
-                  "SeaGreen1"
-                  "DarkSeaGreen4"
-                  "DarkSeaGreen3"
-                  "DarkSeaGreen2"
-                  "DarkSeaGreen1"
-                  "aquamarine4"
-                  "aquamarine3"
-                  "aquamarine2"
-                  "aquamarine1"
-                  "DarkSlateGray4"
-                  "DarkSlateGray3"
-                  "DarkSlateGray2"
-                  "DarkSlateGray1"
-                  "cyan4"
-                  "cyan3"
-                  "cyan2"
-                  "cyan1"
-                  "turquoise4"
-                  "turquoise3"
-                  "turquoise2"
-                  "turquoise1"
-                  "CadetBlue4"
-                  "CadetBlue3"
-                  "CadetBlue2"
-                  "CadetBlue1"
-                  "PaleTurquoise4"
-                  "PaleTurquoise3"
-                  "PaleTurquoise2"
-                  "PaleTurquoise1"
-                  "LightCyan4"
-                  "LightCyan3"
-                  "LightCyan2"
-                  "LightCyan1"
-                  "LightBlue4"
-                  "LightBlue3"
-                  "LightBlue2"
-                  "LightBlue1"
-                  "LightSteelBlue4"
-                  "LightSteelBlue3"
-                  "LightSteelBlue2"
-                  "LightSteelBlue1"
-                  "SlateGray4"
-                  "SlateGray3"
-                  "SlateGray2"
-                  "SlateGray1"
-                  "LightSkyBlue4"
-                  "LightSkyBlue3"
-                  "LightSkyBlue2"
-                  "LightSkyBlue1"
-                  "SkyBlue4"
-                  "SkyBlue3"
-                  "SkyBlue2"
-                  "SkyBlue1"
-                  "DeepSkyBlue4"
-                  "DeepSkyBlue3"
-                  "DeepSkyBlue2"
-                  "DeepSkyBlue1"
-                  "SteelBlue4"
-                  "SteelBlue3"
-                  "SteelBlue2"
-                  "SteelBlue1"
-                  "DodgerBlue4"
-                  "DodgerBlue3"
-                  "DodgerBlue2"
-                  "DodgerBlue1"
-                  "blue4"
-                  "blue3"
-                  "blue2"
-                  "blue1"
-                  "RoyalBlue4"
-                  "RoyalBlue3"
-                  "RoyalBlue2"
-                  "RoyalBlue1"
-                  "SlateBlue4"
-                  "SlateBlue3"
-                  "SlateBlue2"
-                  "SlateBlue1"
-                  "azure4"
-                  "azure3"
-                  "azure2"
-                  "azure1"
-                  "MistyRose4"
-                  "MistyRose3"
-                  "MistyRose2"
-                  "MistyRose1"
-                  "LavenderBlush4"
-                  "LavenderBlush3"
-                  "LavenderBlush2"
-                  "LavenderBlush1"
-                  "honeydew4"
-                  "honeydew3"
-                  "honeydew2"
-                  "honeydew1"
-                  "ivory4"
-                  "ivory3"
-                  "ivory2"
-                  "ivory1"
-                  "cornsilk4"
-                  "cornsilk3"
-                  "cornsilk2"
-                  "cornsilk1"
-                  "LemonChiffon4"
-                  "LemonChiffon3"
-                  "LemonChiffon2"
-                  "LemonChiffon1"
-                  "NavajoWhite4"
-                  "NavajoWhite3"
-                  "NavajoWhite2"
-                  "NavajoWhite1"
-                  "PeachPuff4"
-                  "PeachPuff3"
-                  "PeachPuff2"
-                  "PeachPuff1"
-                  "bisque4"
-                  "bisque3"
-                  "bisque2"
-                  "bisque1"
-                  "AntiqueWhite4"
-                  "AntiqueWhite3"
-                  "AntiqueWhite2"
-                  "AntiqueWhite1"
-                  "seashell4"
-                  "seashell3"
-                  "seashell2"
-                  "seashell1"
-                  "snow4"
-                  "snow3"
-                  "snow2"
-                  "snow1"
-                  "thistle"
-                  "MediumPurple"
-                  "medium purple"
-                  "purple"
-                  "BlueViolet"
-                  "blue violet"
-                  "DarkViolet"
-                  "dark violet"
-                  "DarkOrchid"
-                  "dark orchid"
-                  "MediumOrchid"
-                  "medium orchid"
-                  "orchid"
-                  "plum"
-                  "violet"
-                  "magenta"
-                  "VioletRed"
-                  "violet red"
-                  "MediumVioletRed"
-                  "medium violet red"
-                  "maroon"
-                  "PaleVioletRed"
-                  "pale violet red"
-                  "LightPink"
-                  "light pink"
-                  "pink"
-                  "DeepPink"
-                  "deep pink"
-                  "HotPink"
-                  "hot pink"
-                  "red"
-                  "OrangeRed"
-                  "orange red"
-                  "tomato"
-                  "LightCoral"
-                  "light coral"
-                  "coral"
-                  "DarkOrange"
-                  "dark orange"
-                  "orange"
-                  "LightSalmon"
-                  "light salmon"
-                  "salmon"
-                  "DarkSalmon"
-                  "dark salmon"
-                  "brown"
-                  "firebrick"
-                  "chocolate"
-                  "tan"
-                  "SandyBrown"
-                  "sandy brown"
-                  "wheat"
-                  "beige"
-                  "burlywood"
-                  "peru"
-                  "sienna"
-                  "SaddleBrown"
-                  "saddle brown"
-                  "IndianRed"
-                  "indian red"
-                  "RosyBrown"
-                  "rosy brown"
-                  "DarkGoldenrod"
-                  "dark goldenrod"
-                  "goldenrod"
-                  "LightGoldenrod"
-                  "light goldenrod"
-                  "gold"
-                  "yellow"
-                  "LightYellow"
-                  "light yellow"
-                  "LightGoldenrodYellow"
-                  "light goldenrod yellow"
-                  "PaleGoldenrod"
-                  "pale goldenrod"
-                  "khaki"
-                  "DarkKhaki"
-                  "dark khaki"
-                  "OliveDrab"
-                  "olive drab"
-                  "ForestGreen"
-                  "forest green"
-                  "YellowGreen"
-                  "yellow green"
-                  "LimeGreen"
-                  "lime green"
-                  "GreenYellow"
-                  "green yellow"
-                  "MediumSpringGreen"
-                  "medium spring green"
-                  "chartreuse"
-                  "green"
-                  "LawnGreen"
-                  "lawn green"
-                  "SpringGreen"
-                  "spring green"
-                  "PaleGreen"
-                  "pale green"
-                  "LightSeaGreen"
-                  "light sea green"
-                  "MediumSeaGreen"
-                  "medium sea green"
-                  "SeaGreen"
-                  "sea green"
-                  "DarkSeaGreen"
-                  "dark sea green"
-                  "DarkOliveGreen"
-                  "dark olive green"
-                  "DarkGreen"
-                  "dark green"
-                  "aquamarine"
-                  "MediumAquamarine"
-                  "medium aquamarine"
-                  "CadetBlue"
-                  "cadet blue"
-                  "LightCyan"
-                  "light cyan"
-                  "cyan"
-                  "turquoise"
-                  "MediumTurquoise"
-                  "medium turquoise"
-                  "DarkTurquoise"
-                  "dark turquoise"
-                  "PaleTurquoise"
-                  "pale turquoise"
-                  "PowderBlue"
-                  "powder blue"
-                  "LightBlue"
-                  "light blue"
-                  "LightSteelBlue"
-                  "light steel blue"
-                  "SteelBlue"
-                  "steel blue"
-                  "LightSkyBlue"
-                  "light sky blue"
-                  "SkyBlue"
-                  "sky blue"
-                  "DeepSkyBlue"
-                  "deep sky blue"
-                  "DodgerBlue"
-                  "dodger blue"
-                  "blue"
-                  "RoyalBlue"
-                  "royal blue"
-                  "MediumBlue"
-                  "medium blue"
-                  "LightSlateBlue"
-                  "light slate blue"
-                  "MediumSlateBlue"
-                  "medium slate blue"
-                  "SlateBlue"
-                  "slate blue"
-                  "DarkSlateBlue"
-                  "dark slate blue"
-                  "CornflowerBlue"
-                  "cornflower blue"
-                  "NavyBlue"
-                  "navy blue"
-                  "navy"
-                  "MidnightBlue"
-                  "midnight blue"
-                  "LightGray"
-                  "light gray"
-                  "LightGrey"
-                  "light grey"
-                  "grey"
-                  "gray"
-                  "LightSlateGrey"
-                  "light slate grey"
-                  "LightSlateGray"
-                  "light slate gray"
-                  "SlateGrey"
-                  "slate grey"
-                  "SlateGray"
-                  "slate gray"
-                  "DimGrey"
-                  "dim grey"
-                  "DimGray"
-                  "dim gray"
-                  "DarkSlateGrey"
-                  "dark slate grey"
-                  "DarkSlateGray"
-                  "dark slate gray"
-                  "black"
-                  "white"
-                  "MistyRose"
-                  "misty rose"
-                  "LavenderBlush"
-                  "lavender blush"
-                  "lavender"
-                  "AliceBlue"
-                  "alice blue"
-                  "azure"
-                  "MintCream"
-                  "mint cream"
-                  "honeydew"
-                  "seashell"
-                  "LemonChiffon"
-                  "lemon chiffon"
-                  "ivory"
-                  "cornsilk"
-                  "moccasin"
-                  "NavajoWhite"
-                  "navajo white"
-                  "PeachPuff"
-                  "peach puff"
-                  "bisque"
-                  "BlanchedAlmond"
-                  "blanched almond"
-                  "PapayaWhip"
-                  "papaya whip"
-                  "AntiqueWhite"
-                  "antique white"
-                  "linen"
-                  "OldLace"
-                  "old lace"
-                  "FloralWhite"
-                  "floral white"
-                  "gainsboro"
-                  "WhiteSmoke"
-                  "white smoke"
-                  "GhostWhite"
-                  "ghost white"
-                  "snow")
-  "The list of X colors from the `rgb.txt' file.
-XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
+\f
+(defvar x-colors)
 
 (defun xw-defined-colors (&optional frame)
   "Internal function called by `defined-colors', which see."
@@ -1228,30 +321,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 +359,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 +490,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 +801,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 +816,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 +875,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 +1176,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)
@@ -2208,112 +1279,37 @@ in the clipboard."
 
 (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))
@@ -2433,6 +1429,8 @@ order until succeed.")
        (kill-new clipboard-text))
     (yank)))
 
+(declare-function accelerate-menu "xmenu.c" (&optional frame) t)
+
 (defun x-menu-bar-open (&optional frame)
   "Open the menu bar if `menu-bar-mode' is on. otherwise call `tmm-menubar'."
   (interactive "i")
@@ -2448,6 +1446,16 @@ order until succeed.")
 (defvar x-initialized nil
   "Non-nil if the X window system has been initialized.")
 
+(declare-function x-open-connection "xfns.c"
+                 (display &optional xrm-string must-succeed))
+(declare-function x-server-max-request-size "xfns.c" (&optional terminal))
+(declare-function x-get-resource "frame.c"
+                 (attribute class &optional component subclass))
+(declare-function x-parse-geometry "frame.c" (string))
+(defvar x-resource-name)
+(defvar x-display-name)
+(defvar x-command-line-resources)
+
 (defun x-initialize-window-system ()
   "Initialize Emacs for X frames and open the first connection to an X server."
   ;; Make sure we have a valid resource name.
@@ -2480,28 +1488,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))
@@ -2609,40 +1595,43 @@ order until succeed.")
     ("etc/images/index" . "gtk-index")
     ("etc/images/search" . "gtk-find")
     ("etc/images/exit" . "gtk-quit")
+    ("etc/images/cancel" . "gtk-cancel")
+    ("etc/images/info" . "gtk-info")
+    ("etc/images/bookmark_add" . "n:bookmark_add")
     ;; Used in Gnus and/or MH-E:
-    ("etc/images/attach.xpm" . "gtk-attach")
-    ("etc/images/connect.xpm" . "gtk-connect")
-    ("etc/images/contact.xpm" . "gtk-contact")
-    ("etc/images/delete.xpm" . "gtk-delete")
-    ("etc/images/describe.xpm" . "gtk-properties")
-    ("etc/images/disconnect.xpm" . "gtk-disconnect")
-    ;; ("etc/images/exit.xpm" . "gtk-exit")
-    ("etc/images/lock-broken.xpm" . "gtk-lock_broken")
-    ("etc/images/lock-ok.xpm" . "gtk-lock_ok")
-    ("etc/images/lock.xpm" . "gtk-lock")
-    ("etc/images/next-page.xpm" . "gtk-next-page")
-    ("etc/images/refresh.xpm" . "gtk-refresh")
-    ("etc/images/sort-ascending.xpm" . "gtk-sort-ascending")
-    ("etc/images/sort-column-ascending.xpm" . "gtk-sort-column-ascending")
-    ("etc/images/sort-criteria.xpm" . "gtk-sort-criteria")
-    ("etc/images/sort-descending.xpm" . "gtk-sort-descending")
-    ("etc/images/sort-row-ascending.xpm" . "gtk-sort-row-ascending")
-    ("images/gnus/toggle-subscription.xpm" . "gtk-task-recurring")
-    ("images/mail/compose.xpm" . "gtk-mail-compose")
-    ("images/mail/copy.xpm" . "gtk-mail-copy")
-    ("images/mail/forward.xpm" . "gtk-mail-forward")
-    ("images/mail/inbox.xpm" . "gtk-inbox")
-    ("images/mail/move.xpm" . "gtk-mail-move")
-    ("images/mail/not-spam.xpm" . "gtk-not-spam")
-    ("images/mail/outbox.xpm" . "gtk-outbox")
-    ("images/mail/reply-all.xpm" . "gtk-mail-reply-to-all")
-    ("images/mail/reply.xpm" . "gtk-mail-reply")
-    ("images/mail/save-draft.xpm" . "gtk-mail-handling")
-    ("images/mail/send.xpm" . "gtk-mail-send")
-    ("images/mail/spam.xpm" . "gtk-spam")
+    ("etc/images/attach" . "gtk-attach")
+    ("etc/images/connect" . "gtk-connect")
+    ("etc/images/contact" . "gtk-contact")
+    ("etc/images/delete" . "gtk-delete")
+    ("etc/images/describe" . "gtk-properties")
+    ("etc/images/disconnect" . "gtk-disconnect")
+    ;; ("etc/images/exit" . "gtk-exit")
+    ("etc/images/lock-broken" . "gtk-lock_broken")
+    ("etc/images/lock-ok" . "gtk-lock_ok")
+    ("etc/images/lock" . "gtk-lock")
+    ("etc/images/next-page" . "gtk-next-page")
+    ("etc/images/refresh" . "gtk-refresh")
+    ("etc/images/sort-ascending" . "gtk-sort-ascending")
+    ("etc/images/sort-column-ascending" . "gtk-sort-column-ascending")
+    ("etc/images/sort-criteria" . "gtk-sort-criteria")
+    ("etc/images/sort-descending" . "gtk-sort-descending")
+    ("etc/images/sort-row-ascending" . "gtk-sort-row-ascending")
+    ("images/gnus/toggle-subscription" . "gtk-task-recurring")
+    ("images/mail/compose" . "gtk-mail-compose")
+    ("images/mail/copy" . "gtk-mail-copy")
+    ("images/mail/forward" . "gtk-mail-forward")
+    ("images/mail/inbox" . "gtk-inbox")
+    ("images/mail/move" . "gtk-mail-move")
+    ("images/mail/not-spam" . "gtk-not-spam")
+    ("images/mail/outbox" . "gtk-outbox")
+    ("images/mail/reply-all" . "gtk-mail-reply-to-all")
+    ("images/mail/reply" . "gtk-mail-reply")
+    ("images/mail/save-draft" . "gtk-mail-handling")
+    ("images/mail/send" . "gtk-mail-send")
+    ("images/mail/spam" . "gtk-spam")
     ;; No themed versions available:
-    ;; mail/preview.xpm (combining stock_mail and stock_zoom)
-    ;; mail/save.xpm    (combining stock_mail, stock_save and stock_convert)
+    ;; mail/preview (combining stock_mail and stock_zoom)
+    ;; mail/save    (combining stock_mail, stock_save and stock_convert)
     )
   "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.