2001-07-16 11:39:42 +00:00
|
|
|
|
;;; w32-win.el --- parse switches controlling interface with W32 window system
|
1996-01-14 09:58:28 +00:00
|
|
|
|
|
2006-12-09 04:06:06 +00:00
|
|
|
|
;; Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004,
|
2008-01-07 02:23:04 +00:00
|
|
|
|
;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
;; Author: Kevin Gallo
|
|
|
|
|
;; Keywords: terminals
|
|
|
|
|
|
1996-01-14 09:58:28 +00:00
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-06 04:34:22 +00:00
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
1996-01-14 09:58:28 +00:00
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 04:34:22 +00:00
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
;; (at your option) any later version.
|
1996-01-14 09:58:28 +00:00
|
|
|
|
|
|
|
|
|
;; 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
|
2008-05-06 04:34:22 +00:00
|
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
1997-01-20 01:07:48 +00:00
|
|
|
|
;; 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.
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
;; 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.
|
|
|
|
|
|
2007-05-15 23:21:10 +00:00
|
|
|
|
;; (if (not (eq window-system 'w32))
|
|
|
|
|
;; (error "%s: Loading w32-win.el but not compiled for w32" (invocation-name)))
|
2003-02-04 13:30:45 +00:00
|
|
|
|
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(require 'frame)
|
|
|
|
|
(require 'mouse)
|
|
|
|
|
(require 'scroll-bar)
|
|
|
|
|
(require 'faces)
|
|
|
|
|
(require 'select)
|
|
|
|
|
(require 'menu-bar)
|
2005-04-11 19:25:58 +00:00
|
|
|
|
(require 'dnd)
|
2007-10-21 00:24:32 +00:00
|
|
|
|
(require 'w32-vars)
|
2004-05-09 15:01:17 +00:00
|
|
|
|
|
2007-09-18 22:18:09 +00:00
|
|
|
|
;; Keep an obsolete alias for w32-focus-frame in case it is used by code
|
|
|
|
|
;; outside Emacs.
|
|
|
|
|
(define-obsolete-function-alias 'w32-focus-frame 'x-focus-frame "23.1")
|
|
|
|
|
|
2005-08-31 09:53:25 +00:00
|
|
|
|
(defvar xlfd-regexp-registry-subnum)
|
2007-10-21 00:24:32 +00:00
|
|
|
|
(defvar w32-color-map) ;; defined in w32fns.c
|
2005-08-31 09:53:25 +00:00
|
|
|
|
|
2007-11-22 01:05:55 +00:00
|
|
|
|
(declare-function w32-send-sys-command "w32fns.c")
|
|
|
|
|
(declare-function w32-select-font "w32fns.c")
|
|
|
|
|
(declare-function set-message-beep "w32console.c")
|
|
|
|
|
|
2002-01-17 19:33:03 +00:00
|
|
|
|
;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
|
2002-01-17 19:29:24 +00:00
|
|
|
|
(if (fboundp 'new-fontset)
|
|
|
|
|
(require 'fontset))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
2002-01-05 00:23:42 +00:00
|
|
|
|
;; The following definition is used for debugging scroll bar events.
|
1996-11-19 04:59:23 +00:00
|
|
|
|
;(defun w32-handle-scroll-bar-event (event) (interactive "e") (princ event))
|
1996-05-03 18:26:22 +00:00
|
|
|
|
|
2000-05-30 22:34:26 +00:00
|
|
|
|
(defun w32-drag-n-drop-debug (event)
|
|
|
|
|
"Print the drag-n-drop EVENT in a readable form."
|
|
|
|
|
(interactive "e")
|
1998-05-01 04:24:43 +00:00
|
|
|
|
(princ event))
|
|
|
|
|
|
|
|
|
|
(defun w32-drag-n-drop (event)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Edit the files listed in the drag-n-drop EVENT.
|
1998-05-01 04:24:43 +00:00
|
|
|
|
Switch to a buffer editing the last file dropped."
|
|
|
|
|
(interactive "e")
|
1999-05-02 09:52:17 +00:00
|
|
|
|
(save-excursion
|
1999-11-24 14:37:53 +00:00
|
|
|
|
;; Make sure the drop target has positive co-ords
|
|
|
|
|
;; before setting the selected frame - otherwise it
|
|
|
|
|
;; won't work. <skx@tardis.ed.ac.uk>
|
|
|
|
|
(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))
|
2007-09-23 00:38:44 +00:00
|
|
|
|
(mapc (lambda (file-name)
|
2006-05-20 04:31:17 +00:00
|
|
|
|
(let ((f (subst-char-in-string ?\\ ?/ file-name))
|
|
|
|
|
(coding (or file-name-coding-system
|
|
|
|
|
default-file-name-coding-system)))
|
|
|
|
|
(setq file-name
|
|
|
|
|
(mapconcat 'url-hexify-string
|
|
|
|
|
(split-string (encode-coding-string f coding)
|
|
|
|
|
"/")
|
|
|
|
|
"/")))
|
2005-08-01 15:47:19 +00:00
|
|
|
|
(dnd-handle-one-url window 'private
|
2005-04-11 19:25:58 +00:00
|
|
|
|
(concat "file:" file-name)))
|
2004-05-01 13:31:29 +00:00
|
|
|
|
(car (cdr (cdr event)))))
|
1999-11-24 14:37:53 +00:00
|
|
|
|
(raise-frame)))
|
1998-05-01 04:24:43 +00:00
|
|
|
|
|
|
|
|
|
(defun w32-drag-n-drop-other-frame (event)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Edit the files listed in the drag-n-drop EVENT, in other frames.
|
1998-05-01 04:24:43 +00:00
|
|
|
|
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)
|
|
|
|
|
|
1998-11-10 20:49:04 +00:00
|
|
|
|
;; 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)
|
|
|
|
|
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(defvar x-invocation-args)
|
|
|
|
|
|
|
|
|
|
(defvar x-command-line-resources nil)
|
|
|
|
|
|
|
|
|
|
(defun x-handle-switch (switch)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Handle SWITCH of the form \"-switch value\" or \"-switch\"."
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(let ((aelt (assoc switch command-line-x-option-alist)))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(if aelt
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(push (cons (nth 3 aelt) (or (nth 4 aelt) (pop x-invocation-args)))
|
|
|
|
|
default-frame-alist))))
|
2000-05-30 22:34:26 +00:00
|
|
|
|
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(defun x-handle-numeric-switch (switch)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Handle SWITCH of the form \"-switch n\"."
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(let ((aelt (assoc switch command-line-x-option-alist)))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(if aelt
|
2005-05-16 11:34:49 +00:00
|
|
|
|
(push (cons (nth 3 aelt) (string-to-number (pop x-invocation-args)))
|
2005-01-23 16:56:11 +00:00
|
|
|
|
default-frame-alist))))
|
2002-02-17 23:08:14 +00:00
|
|
|
|
|
|
|
|
|
;; 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
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(push (cons (nth 3 aelt) (or (nth 4 aelt) (pop x-invocation-args)))
|
|
|
|
|
initial-frame-alist))))
|
2002-02-17 23:08:14 +00:00
|
|
|
|
|
|
|
|
|
(defun x-handle-iconic (switch)
|
|
|
|
|
"Make \"-iconic\" SWITCH apply only to the initial frame."
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(push '(visibility . icon) initial-frame-alist))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
(defun x-handle-xrm-switch (switch)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Handle the \"-xrm\" SWITCH."
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(or (consp x-invocation-args)
|
|
|
|
|
(error "%s: missing argument to `%s' option" (invocation-name) switch))
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(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))))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(setq x-invocation-args (cdr x-invocation-args)))
|
|
|
|
|
|
|
|
|
|
(defun x-handle-geometry (switch)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Handle the \"-geometry\" SWITCH."
|
2001-12-24 04:52:54 +00:00
|
|
|
|
(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
|
2003-03-05 16:33:42 +00:00
|
|
|
|
'((user-size . t))
|
|
|
|
|
(if height (list height))
|
|
|
|
|
(if width (list width)))
|
|
|
|
|
initial-frame-alist
|
|
|
|
|
(append initial-frame-alist
|
2001-12-24 04:52:54 +00:00
|
|
|
|
'((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))))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(defun x-handle-name-switch (switch)
|
2006-10-25 15:38:22 +00:00
|
|
|
|
"Handle the \"-name\" SWITCH."
|
2002-02-17 23:08:14 +00:00
|
|
|
|
;; Handle the -name option. Set the variable x-resource-name
|
|
|
|
|
;; to the option's operand; set the name of the initial frame, too.
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(or (consp x-invocation-args)
|
|
|
|
|
(error "%s: missing argument to `%s' option" (invocation-name) switch))
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(setq x-resource-name (pop x-invocation-args))
|
|
|
|
|
(push (cons 'name x-resource-name) initial-frame-alist))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
(defvar x-display-name nil
|
|
|
|
|
"The display name specifying server and frame.")
|
|
|
|
|
|
|
|
|
|
(defun x-handle-display (switch)
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Handle the \"-display\" SWITCH."
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(setq x-display-name (pop x-invocation-args)))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
(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
|
2002-02-17 23:08:14 +00:00
|
|
|
|
`x-invocation args' from which the X-related things are extracted, first
|
1995-11-07 07:52:28 +00:00
|
|
|
|
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."
|
2002-02-17 23:08:14 +00:00
|
|
|
|
;; We use ARGS to accumulate the args that we don't handle here, to return.
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(setq x-invocation-args args
|
|
|
|
|
args nil)
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(while (and x-invocation-args
|
|
|
|
|
(not (equal (car x-invocation-args) "--")))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(let* ((this-switch (car x-invocation-args))
|
|
|
|
|
(orig-this-switch this-switch)
|
2002-02-17 23:08:14 +00:00
|
|
|
|
completion argval aelt handler)
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(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)))))
|
2002-02-17 23:08:14 +00:00
|
|
|
|
;; 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
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(if argval
|
|
|
|
|
(let ((x-invocation-args
|
|
|
|
|
(cons argval x-invocation-args)))
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(funcall handler this-switch))
|
|
|
|
|
(funcall handler this-switch))
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(push orig-this-switch args))))
|
2002-02-17 23:08:14 +00:00
|
|
|
|
(nconc (nreverse args) x-invocation-args))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
;; Available colors
|
|
|
|
|
;;
|
2008-05-10 17:28:09 +00:00
|
|
|
|
;; The ordering of the colors is chosen for the user's convenience in
|
|
|
|
|
;; `list-colors-display', which displays the reverse of this list.
|
|
|
|
|
;; Roughly speaking, `list-colors-display' orders by (i) named shades
|
|
|
|
|
;; of grey with hue 0.0, sorted by value (ii) named colors with
|
|
|
|
|
;; saturation 1.0, sorted by hue, (iii) named non-white colors with
|
|
|
|
|
;; saturation less than 1.0, sorted by hue, (iv) other named shades of
|
|
|
|
|
;; white, (v) numbered colors sorted by hue, and (vi) numbered shades
|
|
|
|
|
;; of grey.
|
|
|
|
|
|
|
|
|
|
(defvar x-colors
|
|
|
|
|
'("gray100" "gray99" "gray98" "gray97" "gray96" "gray95" "gray94" "gray93" "gray92"
|
|
|
|
|
"gray91" "gray90" "gray89" "gray88" "gray87" "gray86" "gray85" "gray84" "gray83"
|
|
|
|
|
"gray82" "gray81" "gray80" "gray79" "gray78" "gray77" "gray76" "gray75" "gray74"
|
|
|
|
|
"gray73" "gray72" "gray71" "gray70" "gray69" "gray68" "gray67" "gray66" "gray65"
|
|
|
|
|
"gray64" "gray63" "gray62" "gray61" "gray60" "gray59" "gray58" "gray57" "gray56"
|
|
|
|
|
"gray55" "gray54" "gray53" "gray52" "gray51" "gray50" "gray49" "gray48" "gray47"
|
|
|
|
|
"gray46" "gray45" "gray44" "gray43" "gray42" "gray41" "gray40" "gray39" "gray38"
|
|
|
|
|
"gray37" "gray36" "gray35" "gray34" "gray33" "gray32" "gray31" "gray30" "gray29"
|
|
|
|
|
"gray28" "gray27" "gray26" "gray25" "gray24" "gray23" "gray22" "gray21" "gray20"
|
|
|
|
|
"gray19" "gray18" "gray17" "gray16" "gray15" "gray14" "gray13" "gray12" "gray11"
|
|
|
|
|
"gray10" "gray9" "gray8" "gray7" "gray6" "gray5" "gray4" "gray3" "gray2" "gray1"
|
|
|
|
|
"gray0" "LightPink1" "LightPink2" "LightPink3" "LightPink4" "pink1" "pink2" "pink3"
|
|
|
|
|
"pink4" "PaleVioletRed1" "PaleVioletRed2" "PaleVioletRed3" "PaleVioletRed4"
|
|
|
|
|
"LavenderBlush1" "LavenderBlush2" "LavenderBlush3" "LavenderBlush4" "VioletRed1"
|
|
|
|
|
"VioletRed2" "VioletRed3" "VioletRed4" "HotPink1" "HotPink2" "HotPink3" "HotPink4"
|
|
|
|
|
"DeepPink1" "DeepPink2" "DeepPink3" "DeepPink4" "maroon1" "maroon2" "maroon3"
|
|
|
|
|
"maroon4" "orchid1" "orchid2" "orchid3" "orchid4" "plum1" "plum2" "plum3" "plum4"
|
|
|
|
|
"thistle1" "thistle2" "thistle3" "thistle4" "MediumOrchid1" "MediumOrchid2"
|
|
|
|
|
"MediumOrchid3" "MediumOrchid4" "DarkOrchid1" "DarkOrchid2" "DarkOrchid3"
|
|
|
|
|
"DarkOrchid4" "purple1" "purple2" "purple3" "purple4" "MediumPurple1"
|
|
|
|
|
"MediumPurple2" "MediumPurple3" "MediumPurple4" "SlateBlue1" "SlateBlue2"
|
|
|
|
|
"SlateBlue3" "SlateBlue4" "RoyalBlue1" "RoyalBlue2" "RoyalBlue3" "RoyalBlue4"
|
|
|
|
|
"LightSteelBlue1" "LightSteelBlue2" "LightSteelBlue3" "LightSteelBlue4" "SlateGray1"
|
|
|
|
|
"SlateGray2" "SlateGray3" "SlateGray4" "DodgerBlue1" "DodgerBlue2" "DodgerBlue3"
|
|
|
|
|
"DodgerBlue4" "SteelBlue1" "SteelBlue2" "SteelBlue3" "SteelBlue4" "SkyBlue1"
|
|
|
|
|
"SkyBlue2" "SkyBlue3" "SkyBlue4" "LightSkyBlue1" "LightSkyBlue2" "LightSkyBlue3"
|
|
|
|
|
"LightSkyBlue4" "LightBlue1" "LightBlue2" "LightBlue3" "LightBlue4" "CadetBlue1"
|
|
|
|
|
"CadetBlue2" "CadetBlue3" "CadetBlue4" "azure1" "azure2" "azure3" "azure4"
|
|
|
|
|
"LightCyan1" "LightCyan2" "LightCyan3" "LightCyan4" "PaleTurquoise1"
|
|
|
|
|
"PaleTurquoise2" "PaleTurquoise3" "PaleTurquoise4" "DarkSlateGray1" "DarkSlateGray2"
|
|
|
|
|
"DarkSlateGray3" "DarkSlateGray4" "aquamarine1" "aquamarine2" "aquamarine3"
|
|
|
|
|
"aquamarine4" "SeaGreen1" "SeaGreen2" "SeaGreen3" "SeaGreen4" "honeydew1"
|
|
|
|
|
"honeydew2" "honeydew3" "honeydew4" "DarkSeaGreen1" "DarkSeaGreen2" "DarkSeaGreen3"
|
|
|
|
|
"DarkSeaGreen4" "PaleGreen1" "PaleGreen2" "PaleGreen3" "PaleGreen4"
|
|
|
|
|
"DarkOliveGreen1" "DarkOliveGreen2" "DarkOliveGreen3" "DarkOliveGreen4" "OliveDrab1"
|
|
|
|
|
"OliveDrab2" "OliveDrab3" "OliveDrab4" "ivory1" "ivory2" "ivory3" "ivory4"
|
|
|
|
|
"LightYellow1" "LightYellow2" "LightYellow3" "LightYellow4" "khaki1" "khaki2"
|
|
|
|
|
"khaki3" "khaki4" "LemonChiffon1" "LemonChiffon2" "LemonChiffon3" "LemonChiffon4"
|
|
|
|
|
"LightGoldenrod1" "LightGoldenrod2" "LightGoldenrod3" "LightGoldenrod4" "cornsilk1"
|
|
|
|
|
"cornsilk2" "cornsilk3" "cornsilk4" "goldenrod1" "goldenrod2" "goldenrod3"
|
|
|
|
|
"goldenrod4" "DarkGoldenrod1" "DarkGoldenrod2" "DarkGoldenrod3" "DarkGoldenrod4"
|
|
|
|
|
"wheat1" "wheat2" "wheat3" "wheat4" "NavajoWhite1" "NavajoWhite2" "NavajoWhite3"
|
|
|
|
|
"NavajoWhite4" "burlywood1" "burlywood2" "burlywood3" "burlywood4" "AntiqueWhite1"
|
|
|
|
|
"AntiqueWhite2" "AntiqueWhite3" "AntiqueWhite4" "bisque1" "bisque2" "bisque3"
|
|
|
|
|
"bisque4" "tan1" "tan2" "tan3" "tan4" "PeachPuff1" "PeachPuff2" "PeachPuff3"
|
|
|
|
|
"PeachPuff4" "seashell1" "seashell2" "seashell3" "seashell4" "chocolate1"
|
|
|
|
|
"chocolate2" "chocolate3" "chocolate4" "sienna1" "sienna2" "sienna3" "sienna4"
|
|
|
|
|
"LightSalmon1" "LightSalmon2" "LightSalmon3" "LightSalmon4" "salmon1" "salmon2"
|
|
|
|
|
"salmon3" "salmon4" "coral1" "coral2" "coral3" "coral4" "tomato1" "tomato2"
|
|
|
|
|
"tomato3" "tomato4" "MistyRose1" "MistyRose2" "MistyRose3" "MistyRose4" "snow1"
|
|
|
|
|
"snow2" "snow3" "snow4" "RosyBrown1" "RosyBrown2" "RosyBrown3" "RosyBrown4"
|
|
|
|
|
"IndianRed1" "IndianRed2" "IndianRed3" "IndianRed4" "firebrick1" "firebrick2"
|
|
|
|
|
"firebrick3" "firebrick4" "brown1" "brown2" "brown3" "brown4" "magenta1" "magenta2"
|
|
|
|
|
"magenta3" "magenta4" "blue1" "blue2" "blue3" "blue4" "DeepSkyBlue1" "DeepSkyBlue2"
|
|
|
|
|
"DeepSkyBlue3" "DeepSkyBlue4" "turquoise1" "turquoise2" "turquoise3" "turquoise4"
|
|
|
|
|
"cyan1" "cyan2" "cyan3" "cyan4" "SpringGreen1" "SpringGreen2" "SpringGreen3"
|
|
|
|
|
"SpringGreen4" "green1" "green2" "green3" "green4" "chartreuse1" "chartreuse2"
|
|
|
|
|
"chartreuse3" "chartreuse4" "yellow1" "yellow2" "yellow3" "yellow4" "gold1" "gold2"
|
|
|
|
|
"gold3" "gold4" "orange1" "orange2" "orange3" "orange4" "DarkOrange1" "DarkOrange2"
|
|
|
|
|
"DarkOrange3" "DarkOrange4" "OrangeRed1" "OrangeRed2" "OrangeRed3" "OrangeRed4"
|
|
|
|
|
"red1" "red2" "red3" "red4" "lavender blush" "ghost white" "lavender" "alice blue"
|
|
|
|
|
"azure" "light cyan" "mint cream" "honeydew" "ivory" "light goldenrod yellow"
|
|
|
|
|
"light yellow" "beige" "floral white" "old lace" "blanched almond" "moccasin"
|
|
|
|
|
"papaya whip" "bisque" "antique white" "linen" "peach puff" "seashell" "misty rose"
|
|
|
|
|
"snow" "light pink" "pink" "hot pink" "deep pink" "maroon" "pale violet red"
|
|
|
|
|
"violet red" "medium violet red" "violet" "plum" "thistle" "orchid" "medium orchid"
|
|
|
|
|
"dark orchid" "purple" "blue violet" "medium purple" "light slate blue"
|
|
|
|
|
"medium slate blue" "slate blue" "dark slate blue" "midnight blue" "navy"
|
|
|
|
|
"dark blue" "light steel blue" "cornflower blue" "dodger blue" "royal blue"
|
|
|
|
|
"light slate gray" "slate gray" "dark slate gray" "steel blue" "cadet blue"
|
2008-05-10 17:34:32 +00:00
|
|
|
|
"light sky blue" "sky blue" "light blue" "powder blue" "pale turquoise" "turquoise"
|
2008-05-10 17:28:09 +00:00
|
|
|
|
"medium turquoise" "dark cyan" "aquamarine" "medium aquamarine" "light sea green"
|
|
|
|
|
"medium sea green" "sea green" "dark sea green" "pale green" "lime green"
|
|
|
|
|
"forest green" "light green" "green yellow" "yellow green" "olive drab"
|
|
|
|
|
"dark olive green" "lemon chiffon" "khaki" "dark khaki" "cornsilk"
|
|
|
|
|
"pale goldenrod" "light goldenrod" "goldenrod" "dark goldenrod" "wheat"
|
|
|
|
|
"navajo white" "tan" "burlywood" "sandy brown" "peru" "chocolate" "saddle brown"
|
|
|
|
|
"sienna" "rosy brown" "dark salmon" "coral" "tomato" "light salmon" "salmon"
|
|
|
|
|
"light coral" "indian red" "firebrick" "brown" "dark red" "magenta"
|
2008-05-10 17:34:32 +00:00
|
|
|
|
"dark magenta" "dark violet" "medium blue" "blue" "deep sky blue"
|
2008-05-10 17:28:09 +00:00
|
|
|
|
"cyan" "medium spring green" "spring green" "green" "lawn green" "chartreuse"
|
|
|
|
|
"yellow" "gold" "orange" "dark orange" "orange red" "red" "white" "white smoke"
|
|
|
|
|
"gainsboro" "light grey" "gray" "dark grey" "dim gray" "black" )
|
2001-06-29 18:26:53 +00:00
|
|
|
|
"The list of X colors from the `rgb.txt' file.
|
|
|
|
|
XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp")
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defun xw-defined-colors (&optional frame)
|
|
|
|
|
"Internal function called by `defined-colors', which see."
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(or frame (setq frame (selected-frame)))
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(let ((defined-colors nil))
|
|
|
|
|
(dolist (this-color (or (mapcar 'car w32-color-map) x-colors))
|
2000-01-03 11:58:12 +00:00
|
|
|
|
(and (color-supported-p this-color frame t)
|
2005-01-23 16:56:11 +00:00
|
|
|
|
(push this-color defined-colors)))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
defined-colors))
|
|
|
|
|
|
1997-09-02 23:53:22 +00:00
|
|
|
|
|
1995-11-07 07:52:28 +00:00
|
|
|
|
;;;; Function keys
|
|
|
|
|
|
2007-07-15 02:05:20 +00:00
|
|
|
|
;;; make f10 activate the real menubar rather than the mini-buffer menu
|
|
|
|
|
;;; navigation feature.
|
2008-06-11 00:25:24 +00:00
|
|
|
|
(defun w32-menu-bar-open (&optional frame)
|
2007-07-15 02:05:20 +00:00
|
|
|
|
"Start key navigation of the menu bar in FRAME.
|
|
|
|
|
|
2008-06-11 00:25:24 +00:00
|
|
|
|
This initially activates the first menu-bar item, and you can then navigate
|
|
|
|
|
with the arrow keys, select a menu entry with the Return key or cancel with
|
|
|
|
|
the Escape key. If FRAME has no menu bar, this function does nothing.
|
2007-07-15 02:05:20 +00:00
|
|
|
|
|
2008-06-11 00:25:24 +00:00
|
|
|
|
If FRAME is nil or not given, use the selected frame.
|
|
|
|
|
If FRAME does not have the menu bar enabled, display a text menu using
|
|
|
|
|
`tmm-menubar'."
|
2007-07-15 02:05:20 +00:00
|
|
|
|
(interactive "i")
|
2008-06-11 00:25:24 +00:00
|
|
|
|
(if menu-bar-mode
|
|
|
|
|
(w32-send-sys-command ?\xf100 frame)
|
|
|
|
|
(with-selected-frame (or frame (selected-frame))
|
|
|
|
|
(tmm-menubar))))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
|
1998-11-04 23:23:57 +00:00
|
|
|
|
;; W32 systems have different fonts than commonly found on X, so
|
|
|
|
|
;; we define our own standard fontset here.
|
|
|
|
|
(defvar w32-standard-fontset-spec
|
1999-01-28 04:46:42 +00:00
|
|
|
|
"-*-Courier New-normal-r-*-*-13-*-*-*-c-*-fontset-standard"
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"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\".
|
1998-11-04 23:23:57 +00:00
|
|
|
|
|
2006-10-25 15:38:22 +00:00
|
|
|
|
See the documentation of `create-fontset-from-fontset-spec' for the format.")
|
1998-11-04 23:23:57 +00:00
|
|
|
|
|
1995-11-07 07:52:28 +00:00
|
|
|
|
(defun x-win-suspend-error ()
|
2000-05-30 22:34:26 +00:00
|
|
|
|
"Report an error when a suspend is attempted."
|
|
|
|
|
(error "Suspending an Emacs running under W32 makes no sense"))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun mouse-set-font (&rest fonts)
|
2006-03-18 12:57:11 +00:00
|
|
|
|
"Select an Emacs font from a list of known good fonts and fontsets.
|
|
|
|
|
|
2000-05-30 22:34:26 +00:00
|
|
|
|
If `w32-use-w32-font-dialog' is non-nil (the default), use the Windows
|
2006-03-18 13:13:30 +00:00
|
|
|
|
font dialog to display the list of possible fonts. Otherwise use a
|
2006-03-18 12:57:11 +00:00
|
|
|
|
pop-up menu (like Emacs does on other platforms) initialized with
|
|
|
|
|
the fonts in `w32-fixed-font-alist'.
|
|
|
|
|
If `w32-list-proportional-fonts' is non-nil, add proportional fonts
|
|
|
|
|
to the list in the font selection dialog (the fonts listed by the
|
|
|
|
|
pop-up menu are unaffected by `w32-list-proportional-fonts')."
|
1998-10-27 23:46:26 +00:00
|
|
|
|
(interactive
|
|
|
|
|
(if w32-use-w32-font-dialog
|
2002-01-20 15:34:00 +00:00
|
|
|
|
(let ((chosen-font (w32-select-font (selected-frame)
|
|
|
|
|
w32-list-proportional-fonts)))
|
1999-07-20 00:49:54 +00:00
|
|
|
|
(and chosen-font (list chosen-font)))
|
1998-10-27 23:46:26 +00:00
|
|
|
|
(x-popup-menu
|
|
|
|
|
last-nonmenu-event
|
2005-01-23 16:56:11 +00:00
|
|
|
|
;; Append list of fontsets currently defined.
|
2002-01-17 19:33:03 +00:00
|
|
|
|
;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
|
1998-11-04 23:23:57 +00:00
|
|
|
|
(if (fboundp 'new-fontset)
|
2007-10-12 21:06:27 +00:00
|
|
|
|
(append w32-fixed-font-alist (list (generate-fontset-menu)))))))
|
1998-10-27 23:46:26 +00:00
|
|
|
|
(if fonts
|
2000-02-27 21:11:51 +00:00
|
|
|
|
(let (font)
|
1998-10-27 23:46:26 +00:00
|
|
|
|
(while fonts
|
|
|
|
|
(condition-case nil
|
|
|
|
|
(progn
|
1999-01-28 04:46:42 +00:00
|
|
|
|
(setq font (car fonts))
|
2000-02-27 21:11:51 +00:00
|
|
|
|
(set-default-font font)
|
1999-01-28 04:46:42 +00:00
|
|
|
|
(setq fonts nil))
|
|
|
|
|
(error (setq fonts (cdr fonts)))))
|
1998-10-27 23:46:26 +00:00
|
|
|
|
(if (null font)
|
|
|
|
|
(error "Font not found")))))
|
1995-11-07 07:52:28 +00:00
|
|
|
|
|
2004-06-14 21:01:37 +00:00
|
|
|
|
;;; Set default known names for image libraries
|
|
|
|
|
(setq image-library-alist
|
2008-01-31 01:40:20 +00:00
|
|
|
|
'((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
|
2008-02-01 15:19:59 +00:00
|
|
|
|
(png "libpng12d.dll" "libpng12.dll" "libpng.dll"
|
|
|
|
|
;; these are libpng 1.2.8 from GTK+
|
|
|
|
|
"libpng13d.dll" "libpng13.dll")
|
2004-06-14 21:01:37 +00:00
|
|
|
|
(jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
|
|
|
|
|
(tiff "libtiff3.dll" "libtiff.dll")
|
2007-09-18 22:18:09 +00:00
|
|
|
|
(gif "giflib4.dll" "libungif4.dll" "libungif.dll")
|
|
|
|
|
(svg "librsvg-2-2.dll")
|
|
|
|
|
(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
|
|
|
|
|
(glib "libglib-2.0-0.dll")))
|
2004-06-14 21:01:37 +00:00
|
|
|
|
|
2007-05-16 22:49:00 +00:00
|
|
|
|
;;; multi-tty support
|
|
|
|
|
(defvar w32-initialized nil
|
|
|
|
|
"Non-nil if the w32 window system has been initialized.")
|
|
|
|
|
|
2007-05-15 23:21:10 +00:00
|
|
|
|
(defun w32-initialize-window-system ()
|
|
|
|
|
"Initialize Emacs for W32 GUI frames."
|
2007-05-16 10:13:09 +00:00
|
|
|
|
|
|
|
|
|
;; 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)
|
|
|
|
|
(setq x-resource-name
|
|
|
|
|
;; Change any . or * characters in x-resource-name to hyphens,
|
|
|
|
|
;; so as not to choke when we use it in X resource queries.
|
|
|
|
|
(replace-regexp-in-string "[.*]" "-" (invocation-name))))
|
|
|
|
|
|
2007-05-16 22:49:00 +00:00
|
|
|
|
(x-open-connection "" x-command-line-resources
|
|
|
|
|
;; Exit with a fatal error if this fails and we
|
|
|
|
|
;; are the initial display
|
|
|
|
|
(eq initial-window-system 'w32))
|
2007-05-16 10:13:09 +00:00
|
|
|
|
|
|
|
|
|
;; Setup the default fontset.
|
|
|
|
|
(setup-default-fontset)
|
2007-11-10 01:30:33 +00:00
|
|
|
|
|
|
|
|
|
;; Enable Japanese fonts on Windows to be used by default.
|
2007-11-17 02:40:11 +00:00
|
|
|
|
(set-fontset-font t (make-char 'katakana-jisx0201)
|
2007-11-10 01:30:33 +00:00
|
|
|
|
'("*" . "JISX0208-SJIS"))
|
2007-11-17 02:40:11 +00:00
|
|
|
|
(set-fontset-font t (make-char 'latin-jisx0201)
|
2007-11-10 01:30:33 +00:00
|
|
|
|
'("*" . "JISX0208-SJIS"))
|
2007-11-17 02:40:11 +00:00
|
|
|
|
(set-fontset-font t (make-char 'japanese-jisx0208)
|
2007-11-10 01:30:33 +00:00
|
|
|
|
'("*" . "JISX0208-SJIS"))
|
2007-11-17 02:40:11 +00:00
|
|
|
|
(set-fontset-font t (make-char 'japanese-jisx0208-1978)
|
2007-11-10 01:30:33 +00:00
|
|
|
|
'("*" . "JISX0208-SJIS"))
|
|
|
|
|
|
2007-05-16 10:13:09 +00:00
|
|
|
|
;; 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)
|
|
|
|
|
|
|
|
|
|
;; 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)
|
|
|
|
|
(push (cons 'height (cdr (assq 'height parsed)))
|
|
|
|
|
default-frame-alist))
|
|
|
|
|
(if (assq 'width parsed)
|
|
|
|
|
(push (cons 'width (cdr (assq 'width parsed)))
|
|
|
|
|
default-frame-alist)))))
|
|
|
|
|
|
2007-05-16 22:49:00 +00:00
|
|
|
|
;; 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))
|
|
|
|
|
(push '(reverse . t) default-frame-alist))))
|
|
|
|
|
|
|
|
|
|
;; Don't let Emacs suspend under w32 gui
|
2007-05-16 10:13:09 +00:00
|
|
|
|
(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)
|
|
|
|
|
|
2007-05-16 22:49:00 +00:00
|
|
|
|
;; Turn on support for mouse wheels
|
|
|
|
|
(mouse-wheel-mode 1)
|
|
|
|
|
|
|
|
|
|
;; W32 expects the menu bar cut and paste commands to use the clipboard.
|
|
|
|
|
(menu-bar-enable-clipboard)
|
|
|
|
|
|
2007-05-16 10:13:09 +00:00
|
|
|
|
;; 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)
|
2007-05-16 22:49:00 +00:00
|
|
|
|
(setq w32-initialized t))
|
2007-05-15 23:21:10 +00:00
|
|
|
|
|
|
|
|
|
(add-to-list 'handle-args-function-alist '(w32 . x-handle-args))
|
|
|
|
|
(add-to-list 'frame-creation-function-alist '(w32 . x-create-frame-with-faces))
|
|
|
|
|
(add-to-list 'window-system-initialization-alist '(w32 . w32-initialize-window-system))
|
|
|
|
|
|
|
|
|
|
(provide 'w32-win)
|
2004-06-14 21:01:37 +00:00
|
|
|
|
|
2005-01-23 16:56:11 +00:00
|
|
|
|
;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166
|
1997-01-20 01:07:48 +00:00
|
|
|
|
;;; w32-win.el ends here
|