emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/term/w32-win.el [emacs-unicode-2]


From: Jason Rumney
Subject: [Emacs-diffs] Changes to emacs/lisp/term/w32-win.el [emacs-unicode-2]
Date: Sat, 11 Oct 2003 18:05:11 -0400

Index: emacs/lisp/term/w32-win.el
diff -c /dev/null emacs/lisp/term/w32-win.el:1.59.2.1
*** /dev/null   Sat Oct 11 18:05:11 2003
--- emacs/lisp/term/w32-win.el  Sat Oct 11 18:05:10 2003
***************
*** 0 ****
--- 1,1258 ----
+ ;;; w32-win.el --- parse switches controlling interface with W32 window system
+ 
+ ;; Copyright (C) 1993, 1994, 2003 Free Software Foundation, Inc.
+ 
+ ;; Author: Kevin Gallo
+ ;; Keywords: terminals
+ 
+ ;; This file is part of GNU Emacs.
+ 
+ ;; 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 2, 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
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ 
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GNU Emacs; see the file COPYING.  If not, write to the
+ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ ;; Boston, MA 02111-1307, USA.
+ 
+ ;;; Commentary:
+ 
+ ;; w32-win.el:  this file is loaded from ../lisp/startup.el when it recognizes
+ ;; that W32 windows are to be used.  Command line switches are parsed and 
those
+ ;; pertaining to W32 are processed and removed from the command line.  The
+ ;; W32 display is opened and hooks are set for popping up the initial window.
+ 
+ ;; startup.el will then examine startup files, and eventually call the hooks
+ ;; which create the first window (s).
+ 
+ ;;; Code:
+ 
+ 
+ ;; These are the standard X switches from the Xt Initialize.c file of
+ ;; Release 4.
+ 
+ ;; Command line               Resource Manager string
+ 
+ ;; +rv                        *reverseVideo
+ ;; +synchronous               *synchronous
+ ;; -background                *background
+ ;; -bd                        *borderColor
+ ;; -bg                        *background
+ ;; -bordercolor               *borderColor
+ ;; -borderwidth               .borderWidth
+ ;; -bw                        .borderWidth
+ ;; -display           .display
+ ;; -fg                        *foreground
+ ;; -fn                        *font
+ ;; -font              *font
+ ;; -foreground                *foreground
+ ;; -geometry          .geometry
+ ;; -i                 .iconType
+ ;; -itype             .iconType
+ ;; -iconic            .iconic
+ ;; -name              .name
+ ;; -reverse           *reverseVideo
+ ;; -rv                        *reverseVideo
+ ;; -selectionTimeout    .selectionTimeout
+ ;; -synchronous               *synchronous
+ ;; -xrm
+ 
+ ;; An alist of X options and the function which handles them.  See
+ ;; ../startup.el.
+ 
+ (if (not (eq window-system 'w32))
+     (error "%s: Loading w32-win.el but not compiled for w32" 
(invocation-name)))
+ 
+ (require 'frame)
+ (require 'mouse)
+ (require 'scroll-bar)
+ (require 'faces)
+ (require 'select)
+ (require 'menu-bar)
+ ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
+ (if (fboundp 'new-fontset)
+     (require 'fontset))
+ 
+ ;; The following definition is used for debugging scroll bar events.
+ ;(defun w32-handle-scroll-bar-event (event) (interactive "e") (princ event))
+ 
+ ;; Handle mouse-wheel events with mwheel.
+ (mouse-wheel-mode 1)
+ 
+ (defun w32-drag-n-drop-debug (event)
+   "Print the drag-n-drop EVENT in a readable form."
+   (interactive "e")
+   (princ event))
+ 
+ (defun w32-drag-n-drop (event)
+   "Edit the files listed in the drag-n-drop EVENT.
+ Switch to a buffer editing the last file dropped."
+   (interactive "e")
+   (save-excursion
+     ;; Make sure the drop target has positive co-ords
+     ;; before setting the selected frame - otherwise it
+     ;; won't work.  <address@hidden>
+     (let* ((window (posn-window (event-start event)))
+          (coords (posn-x-y (event-start event)))
+          (x (car coords))
+          (y (cdr coords)))
+       (if (and (> x 0) (> y 0))
+         (set-frame-selected-window nil window))
+     (mapcar 'find-file (car (cdr (cdr event)))))
+   (raise-frame)))
+ 
+ (defun w32-drag-n-drop-other-frame (event)
+   "Edit the files listed in the drag-n-drop EVENT, in other frames.
+ May create new frames, or reuse existing ones.  The frame editing
+ the last file dropped is selected."
+   (interactive "e")
+   (mapcar 'find-file-other-frame (car (cdr (cdr event)))))
+ 
+ ;; Bind the drag-n-drop event.
+ (global-set-key [drag-n-drop] 'w32-drag-n-drop)
+ (global-set-key [C-drag-n-drop] 'w32-drag-n-drop-other-frame)
+ 
+ ;; Keyboard layout/language change events
+ ;; For now ignore language-change events; in the future
+ ;; we should switch the Emacs Input Method to match the
+ ;; new layout/language selected by the user.
+ (global-set-key [language-change] 'ignore)
+ 
+ (defvar x-invocation-args)
+ 
+ (defvar x-command-line-resources nil)
+ 
+ (defun x-handle-switch (switch)
+   "Handle SWITCH of the form \"-switch value\" or \"-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)))))))
+ 
+ (defun x-handle-numeric-switch (switch)
+   "Handle SWITCH of the form \"-switch n\"."
+   (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-int (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-iconic (switch)
+   "Make \"-iconic\" SWITCH apply only to the initial frame."
+   (setq initial-frame-alist
+       (cons '(visibility . icon) initial-frame-alist)))
+ 
+ (defun x-handle-xrm-switch (switch)
+   "Handle the \"-xrm\" SWITCH."
+   (or (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)))
+ 
+ (defun x-handle-geometry (switch)
+   "Handle the \"-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))))
+ 
+ (defun x-handle-name-switch (switch)
+   "Handle a \"-name\" SWITCH."
+ ;; Handle the -name option.  Set the variable x-resource-name
+ ;; to the option's operand; set the name of the initial frame, too.
+   (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 display name specifying server and frame.")
+ 
+ (defun x-handle-display (switch)
+   "Handle the \"-display\" SWITCH."
+   (setq x-display-name (car x-invocation-args)
+       x-invocation-args (cdr x-invocation-args)))
+ 
+ (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 returns ARGS with the arguments that have been processed removed."
+   ;; 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))
+ 
+ ;;
+ ;; 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")
+ 
+ (defun xw-defined-colors (&optional frame)
+   "Internal function called by `defined-colors', which see."
+   (or frame (setq frame (selected-frame)))
+   (let* ((color-map-colors (mapcar (lambda (clr) (car clr)) w32-color-map))
+        (all-colors (or color-map-colors x-colors))
+        (this-color nil)
+        (defined-colors nil))
+     (message "Defining colors...")
+     (while all-colors
+       (setq this-color (car all-colors)
+           all-colors (cdr all-colors))
+       (and (color-supported-p this-color frame t)
+          (setq defined-colors (cons this-color defined-colors))))
+     defined-colors))
+ 
+ 
+ ;;;; Function keys
+ 
+ ;;; make f10 activate the real menubar rather than the mini-buffer menu
+ ;;; navigation feature.
+ (global-set-key [f10] (lambda ()
+                       (interactive) (w32-send-sys-command ?\xf100)))
+ 
+ (substitute-key-definition 'suspend-emacs 'iconify-or-deiconify-frame
+                          global-map)
+ 
+ 
+ ;;; Do the actual Windows setup here; the above code just defines
+ ;;; functions and variables that we use now.
+ 
+ (setq command-line-args (x-handle-args command-line-args))
+ 
+ ;;; Make sure we have a valid resource name.
+ (or (stringp x-resource-name)
+     (let (i)
+       (setq x-resource-name (invocation-name))
+ 
+       ;; Change any . or * characters in x-resource-name to hyphens,
+       ;; so as not to choke when we use it in X resource queries.
+       (while (setq i (string-match "[.*]" x-resource-name))
+       (aset x-resource-name i ?-))))
+ 
+ ;; For the benefit of older Emacses (19.27 and earlier) that are sharing
+ ;; the same lisp directory, don't pass the third argument unless we seem
+ ;; to have the multi-display support.
+ (if (fboundp 'x-close-connection)
+     (x-open-connection ""
+                      x-command-line-resources
+                      ;; Exit Emacs with fatal error if this fails.
+                      t)
+   (x-open-connection ""
+                    x-command-line-resources))
+ 
+ (setq frame-creation-function 'x-create-frame-with-faces)
+ 
+ (setq x-cut-buffer-max (min (- (/ (x-server-max-request-size) 2) 100)
+                           x-cut-buffer-max))
+ 
+ ;; W32 expects the menu bar cut and paste commands to use the clipboard.
+ ;; This has ,? to match both on Sunos and on Solaris.
+ (menu-bar-enable-clipboard)
+ 
+ ;; W32 systems have different fonts than commonly found on X, so
+ ;; we define our own standard fontset here.
+ (defvar w32-standard-fontset-spec
+  "-*-Courier New-normal-r-*-*-13-*-*-*-c-*-fontset-standard"
+  "String of fontset spec of the standard fontset.
+ This defines a fontset consisting of the Courier New variations for
+ European languages which are distributed with Windows as
+ \"Multilanguage Support\".
+ 
+ See the documentation of `create-fontset-from-fontset-spec for the format.")
+ 
+ ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
+ (if (fboundp 'new-fontset)
+     (progn
+       ;; Setup the default fontset.
+       (setup-default-fontset)
+       ;; Create the standard fontset.
+       (create-fontset-from-fontset-spec w32-standard-fontset-spec t)
+       ;; 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"))))))
+ 
+ ;; Apply a geometry resource to the initial frame.  Put it at the end
+ ;; of the alist, so that anything specified on the command line takes
+ ;; precedence.
+ (let* ((res-geometry (x-get-resource "geometry" "Geometry"))
+        parsed)
+   (if res-geometry
+       (progn
+       (setq parsed (x-parse-geometry res-geometry))
+       ;; If the resource specifies a position,
+       ;; call the position and size "user-specified".
+       (if (or (assq 'top parsed) (assq 'left parsed))
+           (setq parsed (cons '(user-position . t)
+                              (cons '(user-size . t) parsed))))
+       ;; All geometry parms apply to the initial frame.
+       (setq initial-frame-alist (append initial-frame-alist parsed))
+       ;; The size parms apply to all frames.
+       (if (assq 'height parsed)
+           (setq default-frame-alist
+                 (cons (cons 'height (cdr (assq 'height parsed)))
+                       default-frame-alist)))
+       (if (assq 'width parsed)
+           (setq default-frame-alist
+                 (cons (cons 'width (cdr (assq 'width parsed)))
+                       default-frame-alist))))))
+ 
+ ;; Check the reverseVideo resource.
+ (let ((case-fold-search t))
+   (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
+     (if (and rv
+            (string-match "^\\(true\\|yes\\|on\\)$" rv))
+       (setq default-frame-alist
+             (cons '(reverse . t) default-frame-alist)))))
+ 
+ (defun x-win-suspend-error ()
+   "Report an error when a suspend is attempted."
+   (error "Suspending an Emacs running under W32 makes no sense"))
+ (add-hook 'suspend-hook 'x-win-suspend-error)
+ 
+ ;;; Turn off window-splitting optimization; w32 is usually fast enough
+ ;;; that this is only annoying.
+ (setq split-window-keep-point t)
+ 
+ ;; Don't show the frame name; that's redundant.
+ (setq-default mode-line-frame-identification "  ")
+ 
+ ;;; Set to a system sound if you want a fancy bell.
+ (set-message-beep 'ok)
+ 
+ ;; Remap some functions to call w32 common dialogs
+ 
+ (defun internal-face-interactive (what &optional bool)
+   (let* ((fn (intern (concat "face-" what)))
+        (prompt (concat "Set " what " of face "))
+        (face (read-face-name prompt))
+        (default (if (fboundp fn)
+                     (or (funcall fn face (selected-frame))
+                         (funcall fn 'default (selected-frame)))))
+        (fn-win (intern (concat (symbol-name window-system) "-select-" what)))
+        value)
+     (setq value
+         (cond ((fboundp fn-win)
+                (funcall fn-win))
+               ((eq bool 'color)
+                (completing-read (concat prompt " " (symbol-name face) " to: ")
+                                 (mapcar (function (lambda (color)
+                                                     (cons color color)))
+                                         x-colors)
+                                 nil nil nil nil default))
+               (bool
+                (y-or-n-p (concat "Should face " (symbol-name face)
+                                  " be " bool "? ")))
+               (t
+                (read-string (concat prompt " " (symbol-name face) " to: ")
+                             nil nil default))))
+     (list face (if (equal value "") nil value))))
+ 
+ ;;; Enable Japanese fonts on Windows to be used by default.
+ ;; (set-fontset-font nil (make-char 'katakana-jisx0201) '("*" . 
"JISX0208-SJIS"))
+ ;; (set-fontset-font nil (make-char 'latin-jisx0201) '("*" . "JISX0208-SJIS"))
+ ;; (set-fontset-font nil (make-char 'japanese-jisx0208) '("*" . 
"JISX0208-SJIS"))
+ ;; (set-fontset-font nil (make-char 'japanese-jisx0208-1978) '("*" . 
"JISX0208-SJIS"))
+ 
+ (defun mouse-set-font (&rest fonts)
+   "Select a font.
+ If `w32-use-w32-font-dialog' is non-nil (the default), use the Windows
+ font dialog to get the matching FONTS. Otherwise use a pop-up menu
+ \(like Emacs on other platforms) initialized with the fonts in
+ `w32-fixed-font-alist'."
+   (interactive
+    (if w32-use-w32-font-dialog
+        (let ((chosen-font (w32-select-font (selected-frame)
+                                          w32-list-proportional-fonts)))
+        (and chosen-font (list chosen-font)))
+      (x-popup-menu
+       last-nonmenu-event
+     ;; Append list of fontsets currently defined.
+       ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
+       (if (fboundp 'new-fontset)
+       (append w32-fixed-font-alist (list (generate-fontset-menu)))))))
+   (if fonts
+       (let (font)
+       (while fonts
+         (condition-case nil
+             (progn
+                 (setq font (car fonts))
+               (set-default-font font)
+                 (setq fonts nil))
+           (error (setq fonts (cdr fonts)))))
+       (if (null font)
+           (error "Font not found")))))
+ 
+ ;;; w32-win.el ends here




reply via email to

[Prev in Thread] Current Thread [Next in Thread]