Mercurial > hg > xemacs-beta
diff lisp/term/pc-win.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 74fd4e045ea6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/term/pc-win.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,204 @@ +;; pc-win.el -- setup support for `PC windows' (whatever that is). + +;; Copyright (C) 1994 Free Software Foundation, Inc. + +;; Author: Morten Welinder <terra@diku.dk> +;; Version: 1,00 + +;; 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, 675 Mass Ave, Cambridge, MA 02139, USA. +;; --------------------------------------------------------------------------- +(load "term/internal" nil t) + +;; Color translation -- doesn't really need to be fast + +(defvar msdos-color-aliases + '(("purple" . "magenta") + ("firebrick" . "red") ; ? + ("pink" . "lightred") + ("royalblue" . "blue") + ("cadetblue" . "blue") + ("forestgreen" . "green") + ("darkolivegreen" . "green") + ("darkgoldenrod" . "brown") + ("goldenrod" . "yellow") + ("grey40" . "darkgray") + ("rosybrown" . "brown") + ("blue" . "lightblue") ;; from here: for Enriched Text + ("darkslategray" . "darkgray") + ("orange" . "brown") + ("light blue" . "lightblue") ;; from here: for cpp-highlight + ("light cyan" . "lightcyan") + ("light yellow" . "yellow") + ("light pink" . "lightred") + ("pale green" . "lightgreen") + ("beige" . "brown") + ("medium purple" . "magenta") + ("turquoise" . "lightgreen") + ("violet" . "magenta")) + "List of alternate names for colors.") + +(defun msdos-color-translate (name) + (setq name (downcase name)) + (let* ((len (length name)) + (val (cdr (assoc name + '(("black" . 0) + ("blue" . 1) + ("green" . 2) + ("cyan" . 3) + ("red" . 4) + ("magenta" . 5) + ("brown" . 6) + ("lightgray" . 7) ("light gray" . 7) + ("darkgray" . 8) ("dark gray" . 8) + ("lightblue" . 9) + ("lightgreen" . 10) + ("lightcyan" . 11) + ("lightred" . 12) + ("lightmagenta" . 13) + ("yellow" . 14) + ("white" . 15))))) + (try)) + (or val + (and (setq try (cdr (assoc name msdos-color-aliases))) + (msdos-color-translate try)) + (and (> len 5) + (string= "light" (substring name 0 4)) + (setq try (msdos-color-translate (substring name 5))) + (logior try 8)) + (and (> len 6) + (string= "light " (substring name 0 5)) + (setq try (msdos-color-translate (substring name 6))) + (logior try 8)) + (and (> len 4) + (string= "dark" (substring name 0 3)) + (msdos-color-translate (substring name 4))) + (and (> len 5) + (string= "dark " (substring name 0 4)) + (msdos-color-translate (substring name 5)))))) +;; --------------------------------------------------------------------------- +;; We want to delay setting frame parameters until the faces are setup +(defvar default-frame-alist nil) + +(defun msdos-face-setup () + (modify-frame-parameters (selected-frame) default-frame-alist) + + (set-face-foreground 'bold "yellow") + (set-face-foreground 'italic "red") + (set-face-foreground 'bold-italic "lightred") + (set-face-foreground 'underline "white") + (set-face-background 'region "green") + + (make-face 'msdos-menu-active-face) + (make-face 'msdos-menu-passive-face) + (make-face 'msdos-menu-select-face) + (set-face-foreground 'msdos-menu-active-face "white") + (set-face-foreground 'msdos-menu-passive-face "lightgray") + (set-face-background 'msdos-menu-active-face "blue") + (set-face-background 'msdos-menu-passive-face "blue") + (set-face-background 'msdos-menu-select-face "red")) + +;; We have only one font, so... +(add-hook 'before-init-hook 'msdos-face-setup) +;; --------------------------------------------------------------------------- +;; More or less useful immitations of certain X-functions. A lot of the +;; values returned are questionable, but usually only the form of the +;; returned value matters. Also, by the way, recall that `ignore' is +;; a useful function for returning 'nil regardless of argument. + +;; From src/xfns.c +(defun x-display-color-p (&optional display) 't) +(fset 'focus-frame 'ignore) +(fset 'unfocus-frame 'ignore) +(defun x-list-fonts (pattern &optional face frame) (list "default")) +(defun x-color-defined-p (color) (numberp (msdos-color-translate color))) +(defun x-display-pixel-width (&optional frame) (* 8 (frame-width frame))) +(defun x-display-pixel-height (&optional frame) (* 8 (frame-height frame))) +(defun x-display-planes (&optional frame) 4) ; 3 for background, actually +(defun x-display-color-cells (&optional frame) 16) ; ??? +(defun x-server-max-request-size (&optional frame) 1000000) ; ??? +(defun x-server-vendor (&optional frame) t "GNU") +(defun x-server-version (&optional frame) '(1 0 0)) +(defun x-display-screens (&optional frame) 1) +(defun x-display-mm-height (&optional frame) 200) ; Guess the size of my +(defun x-display-mm-width (&optional frame) 253) ; monitor, MW... +(defun x-display-backing-store (&optional frame) 'not-useful) +(defun x-display-visual-class (&optional frame) 'static-color) +(fset 'x-display-save-under 'ignore) +(fset 'x-get-resource 'ignore) + +;; From lisp/term/x-win.el +(setq x-display-name "pc") +(setq split-window-keep-point t) + +;; From lisp/select.el +(defun x-get-selection (&rest rest) "") +(fset 'x-set-selection 'ignore) + +;; From lisp/faces.el: we only have one font, so always return +;; it, no matter which variety they've asked for. +(defun x-frob-font-slant (font which) + font) + +;; From lisp/frame.el +(fset 'set-default-font 'ignore) +(fset 'set-mouse-color 'ignore) ; We cannot, I think. +(fset 'set-cursor-color 'ignore) ; Hardware determined by char under. +(fset 'set-border-color 'ignore) ; Not useful. +(fset 'auto-raise-mode 'ignore) +(fset 'auto-lower-mode 'ignore) +(defun set-background-color (color-name) + "Set the background color of the selected frame to COLOR. +When called interactively, prompt for the name of the color to use." + (interactive "sColor: ") + (modify-frame-parameters (selected-frame) + (list (cons 'background-color color-name)))) +(defun set-foreground-color (color-name) + "Set the foreground color of the selected frame to COLOR. +When called interactively, prompt for the name of the color to use." + (interactive "sColor: ") + (modify-frame-parameters (selected-frame) + (list (cons 'foreground-color color-name)))) +;; --------------------------------------------------------------------------- +;; Handle the X-like command line parameters "-fg" and "-bg" +(defun msdos-handle-args (args) + (let ((rest nil)) + (while args + (let ((this (car args))) + (setq args (cdr args)) + (cond ((or (string= this "-fg") (string= this "-foreground")) + (if args + (setq default-frame-alist + (cons (cons 'foreground-color (car args)) + default-frame-alist) + args (cdr args)))) + ((or (string= this "-bg") (string= this "-background")) + (if args + (setq default-frame-alist + (cons (cons 'background-color (car args)) + default-frame-alist) + args (cdr args)))) + (t (setq rest (cons this rest)))))) + (nreverse rest))) + +(setq command-line-args (msdos-handle-args command-line-args)) +;; --------------------------------------------------------------------------- +;; XEmacs always has faces +;;(require 'faces) +(if (msdos-mouse-p) + (progn + (require 'menu-bar) + (menu-bar-mode t)))