diff options
Diffstat (limited to 'lisp/term/x-win.el')
-rw-r--r-- | lisp/term/x-win.el | 817 |
1 files changed, 212 insertions, 605 deletions
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index feff6de1865..5d7670a66ac 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -1,615 +1,222 @@ ;; Parse switches controlling how Emacs interfaces with X window system. -;; Copyright (C) 1990 Free Software Foundation, Inc. +;; Copyright (C) 1986, 1988 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY. No author or distributor -;; accepts responsibility to anyone for the consequences of using it -;; or for whether it serves any particular purpose or works at all, -;; unless he says so in writing. Refer to the GNU Emacs General Public -;; License for full details. - -;; Everyone is granted permission to copy, modify and redistribute -;; GNU Emacs, but only under the conditions described in the -;; GNU Emacs General Public License. A copy of this license is -;; supposed to have been given to you along with GNU Emacs so you -;; can know your rights and responsibilities. It should be in a -;; file named COPYING. Among other things, the copyright notice -;; and this notice must be preserved on all copies. - - -;; X-win.el: this file is loaded from ../lisp/startup.el when it recognizes -;; that X windows are to be used. Command line switches are parsed and those -;; pertaining to X are processed and removed from the command line. The -;; X 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). - -;; 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 -;; -iconic .iconic -;; -name .name -;; -reverse *reverseVideo -;; -rv *reverseVideo -;; -selectionTimeout .selectionTimeout -;; -synchronous *synchronous -;; -title .title -;; -xrm - -;; An alist of X options and the function which handles them. See -;; ../startup.el. - -;; This is a temporary work-around while we the separate keymap -;; stuff isn't yet fixed. These variables aren't used anymore, -;; but the lisp code wants them to exist. -JimB -(setq global-mouse-map (make-sparse-keymap)) -(setq global-function-map (make-sparse-keymap)) - -(setq command-switch-alist - (append '(("-dm" . x-establish-daemon-mode) - ("-bw" . x-handle-numeric-switch) - ("-d" . x-handle-display) - ("-display" . x-handle-display) - ("-name" . x-handle-switch) - ("-T" . x-handle-switch) - ("-r" . x-handle-switch) - ("-rv" . x-handle-switch) - ("-reverse" . x-handle-switch) - ("-fn" . x-handle-switch) - ("-font" . x-handle-switch) - ("-ib" . x-handle-switch) - ("-g" . x-handle-geometry) - ("-geometry" . x-handle-geometry) - ("-fg" . x-handle-switch) - ("-foreground" . x-handle-switch) - ("-bg" . x-handle-switch) - ("-background" . x-handle-switch) - ("-ms" . x-handle-switch) - ("-ib" . x-handle-switch) - ("-iconic" . x-handle-switch) - ("-cr" . x-handle-switch) - ("-vb" . x-handle-switch) - ("-hb" . x-handle-switch) - ("-bd" . x-handle-switch)) - command-switch-alist)) - -(defvar x-switches-specified nil) +;; 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 1, or (at your option) +;; any later version. -(defconst x-switch-definitions - '(("-name" name) - ("-T" name) - ("-r" lose) - ("-rv" lose) - ("-reverse" lose) - ("-fn" font) - ("-font" font) - ("-ib" internal-border-width) - ("-fg" foreground-color) - ("-foreground" foreground-color) - ("-bg" background-color) - ("-background" background-color) - ("-ms" mouse-color) - ("-cr" cursor-color) - ("-ib" icon-type t) - ("-iconic" iconic-startup t) - ("-vb" vertical-scroll-bar t) - ("-hb" horizontal-scroll-bar t) - ("-bd" border-color) - ("-bw" border-width))) - -;; Handler for switches of the form "-switch value" or "-switch". +;; 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. + +(defconst window-system-version window-system-version + "*Window system version number now in use.") + +(defvar x-sigio-bug nil + "Non-NIL means don't use interrupts for input when using X.") + +(defvar x-processed-defaults nil + "Non-NIL means that user's X defaults have already been processed.") + +(defvar x-switches nil + "Alist of command switches and values for X window system interface. +You can set this in your init file, if you want some defaults +for these switches. Example: + (setq x-switches '((\"-r\" . t) (\"-font\" . \"foo\") (\"-b\" . \"8\"))) +This feature is currently broken for X11.") + +(if (= window-system-version 10) + (setq command-switch-alist + (append '(("-r" . x-handle-switch) + ("-i" . x-handle-switch) + ("-font" . x-handle-switch) + ("-w" . x-handle-switch) + ("-b" . x-handle-switch) + ("-ib" . x-handle-switch) + ("-fg" . x-handle-switch) + ("-bg" . x-handle-switch) + ("-bd" . x-handle-switch) + ("-cr" . x-handle-switch) + ("-ms" . x-handle-switch)) + command-switch-alist)) + (setq command-switch-alist + (append '(("-rn" . x-ignore-arg) + ("-xrm" . x-ignore-arg) + ("-r" . ignore) + ("-i" . ignore) + ("-rn" . x-ignore-arg) + ("-font" . x-ignore-arg) + ("-fn" . x-ignore-arg) + ("-wn" . x-ignore-arg) + ("-in" . x-ignore-arg) + ("-w" . x-ignore-arg) + ("-geometry" . x-ignore-arg) + ("-b" . x-ignore-arg) + ("-ib" . x-ignore-arg) + ("-fg" . x-ignore-arg) + ("-bg" . x-ignore-arg) + ("-bd" . x-ignore-arg) + ("-cr" . x-ignore-arg) + ("-ms" . x-ignore-arg)) + command-switch-alist))) + +(defun x-ignore-arg (&rest ignore) + (setq command-line-args-left (cdr command-line-args-left))) + +;; This is run after the command args are parsed. (defun x-handle-switch (switch) - (let ((aelt (assoc switch x-switch-definitions))) - (if aelt - (if (nth 2 aelt) - (setq x-switches-specified - (cons (cons (nth 1 aelt) (nth 2 aelt)) - x-switches-specified)) - (setq x-switches-specified - (cons (cons (nth 1 aelt) - (car x-invocation-args)) - x-switches-specified) - 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 x-switch-definitions))) - (if aelt - (setq x-switches-specified - (cons (cons (nth 1 aelt) - (string-to-int (car x-invocation-args))) - x-switches-specified) - x-invocation-args - (cdr x-invocation-args))))) - -;; Handle the geometry option -(defun x-handle-geometry (switch) - (setq x-switches-specified (append x-switches-specified - (x-geometry (car x-invocation-args))) - x-invocation-args (cdr x-invocation-args))) - -;; The daemon stuff isn't really useful at the moment. -(defvar x-daemon-mode nil - "When set, means initially create just a minibuffer.") - -(defun x-establish-daemon-mode (switch) - (setq x-daemon-mode t)) - -(defvar x-display-name nil - "The X display name specifying server and X screen.") - -(defun x-handle-display (switch) - (setq x-display-name (car x-invocation-args) - x-invocation-args (cdr x-invocation-args))) - -;; Here the X-related command line options are processed, before the user's -;; startup file is loaded. These are present in ARGS (see startup.el). -;; 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). - -;; When finished, only things not pertaining to X (e.g., "-q", filenames) -;; are left in ARGS - -(defvar x-invocation-args nil) + (if (x-handle-switch-1 switch (car command-line-args-left)) + (setq command-line-args-left (cdr command-line-args-left)))) + +(defun x-handle-switch-1 (switch arg) + (cond ((string= switch "-r") + (x-flip-color) + nil) + ((string= switch "-i") + (x-set-icon t) + nil) + ((string= switch "-font") + (x-set-font arg) + t) + ((string= switch "-b") + (x-set-border-width (string-to-int arg)) + t) + ((string= switch "-ib") + (x-set-internal-border-width (string-to-int arg)) + t) + ((string= switch "-w") + (x-create-x-window arg) + t) + ((string= switch "-fg") + (x-set-foreground-color arg) + t) + ((string= switch "-bg") + (x-set-background-color arg) + t) + ((string= switch "-bd") + (x-set-border-color arg) + t) + ((string= switch "-cr") + (x-set-cursor-color arg) + t) + ((string= switch "-ms") + (x-set-mouse-color arg) + t))) + +;; Convert a string of the form "WWxHH+XO+YO", +;; where WW, HH, XO and YO are numerals, +;; into a list (WW HH XO YO). +;; "xHH" may be omitted; then 0 is used for HH. +;; XO and YO may be preceded by - instead of + to make them negative. +;; Either YO or both XO and YO may be omitted; zero is used. +(defun x-parse-edge-spec (arg) + (let ((cols-by-font 0) + (rows-by-font 0) + (xoffset 0) + (yoffset 0)) + (if (string-match "^=" arg) + (setq cols-by-font (x-extract-number)) + (error "Invalid X window size/position spec")) + (if (string-match "^x" arg) ;get rows-by-font + (setq rows-by-font (x-extract-number))) + (if (string-match "^[-+]" arg) + (setq xoffset (x-extract-number))) + (if (string-match "^[-+]" arg) + (setq yoffset (x-extract-number))) + (or (equal arg "") + (error "Invalid X window size/position spec")) + (list cols-by-font rows-by-font xoffset yoffset))) + +;; Subroutine to extract the next numeral from the front of arg, +;; returning it and shortening arg to remove its text. +;; If arg is negative, subtract 1 before returning it. +(defun x-extract-number () + (if (string-match "^[x=]" arg) + (setq arg (substring arg 1))) + (or (string-match "[-+]?[0-9]+" arg) + (error "Invalid X window size/position spec")) + (prog1 + (+ (string-to-int arg) + (if (string-match "^-" arg) -1 0)) + (setq arg + (substring arg + (or (string-match "[^0-9]" arg 1) + (length arg)))))) + +(defun x-get-default-args () + (setq x-processed-defaults t) + (let (value) + (if (not (string= (setq value (x-get-default "bodyfont")) "")) + (x-handle-switch-1 "-font" value)) + (if (string-match "on" (x-get-default "bitmapicon")) + (x-handle-switch-1 "-i" t)) + (if (not (string= (setq value (x-get-default "borderwidth")) "")) + (x-handle-switch-1 "-b" value)) + (if (not (string= (setq value (x-get-default "internalborder")) "")) + (x-handle-switch-1 "-ib" value)) + (if (not (string= (setq value (x-get-default "foreground")) "")) + (x-handle-switch-1 "-fg" value)) + (if (not (string= (setq value (x-get-default "background")) "")) + (x-handle-switch-1 "-bg" value)) + (if (not (string= (setq value (x-get-default "border")) "")) + (x-handle-switch-1 "-bd" value)) + (if (not (string= (setq value (x-get-default "cursor")) "")) + (x-handle-switch-1 "-cr" value)) + (if (not (string= (setq value (x-get-default "mouse")) "")) + (x-handle-switch-1 "-ms" value)) + (if (string-match "on" (x-get-default "reversevideo")) + (x-handle-switch-1 "-r" t)))) + +;; So far we have only defined some functions. +;; Now we start processing X-related switches +;; and redefining commands and variables, +;; only if Emacs has been compiled to support direct interface to X. (if (eq window-system 'x) (progn - (setq window-setup-hook 'x-pop-initial-window - x-invocation-args args - args nil) (require 'x-mouse) - (require 'screen) - (setq suspend-hook - '(lambda () - (error "Suspending an emacs running under X makes no sense"))) - (define-key global-map "" 'iconify-emacs) - (while x-invocation-args - (let* ((this-switch (car x-invocation-args)) - (aelt (assoc this-switch command-switch-alist))) - (setq x-invocation-args (cdr x-invocation-args)) - (if aelt - (funcall (cdr aelt) this-switch) - (setq args (cons this-switch args))))) - (setq args (nreverse args)) - (x-open-connection (or x-display-name - (setq x-display-name (getenv "DISPLAY")))) - ;; - ;; This is the place to handle Xresources - ;; - ) - (error "Loading x-win.el but not compiled for X")) - - -;; This is the function which creates the first X window. It is called -;; from startup.el after the user's init file is processed. - -(defun x-pop-initial-window () - ;; xterm.c depends on using interrupt-driven input. - (set-input-mode t nil t) - (setq mouse-motion-handler 'x-track-pointer) - (setq x-switches-specified (append x-switches-specified - initial-screen-alist - screen-default-alist)) - ;; see screen.el for this function - (pop-initial-screen x-switches-specified) - (delete-screen terminal-screen)) - - -;; -;; Standard X cursor shapes, courtesy of Mr. Fox, who wanted ALL of them. -;; - -(defconst x-pointer-X-cursor 0) -(defconst x-pointer-arrow 2) -(defconst x-pointer-based-arrow-down 4) -(defconst x-pointer-based-arrow-up 6) -(defconst x-pointer-boat 8) -(defconst x-pointer-bogosity 10) -(defconst x-pointer-bottom-left-corner 12) -(defconst x-pointer-bottom-right-corner 14) -(defconst x-pointer-bottom-side 16) -(defconst x-pointer-bottom-tee 18) -(defconst x-pointer-box-spiral 20) -(defconst x-pointer-center-ptr 22) -(defconst x-pointer-circle 24) -(defconst x-pointer-clock 26) -(defconst x-pointer-coffee-mug 28) -(defconst x-pointer-cross 30) -(defconst x-pointer-cross-reverse 32) -(defconst x-pointer-crosshair 34) -(defconst x-pointer-diamond-cross 36) -(defconst x-pointer-dot 38) -(defconst x-pointer-dotbox 40) -(defconst x-pointer-double-arrow 42) -(defconst x-pointer-draft-large 44) -(defconst x-pointer-draft-small 46) -(defconst x-pointer-draped-box 48) -(defconst x-pointer-exchange 50) -(defconst x-pointer-fleur 52) -(defconst x-pointer-gobbler 54) -(defconst x-pointer-gumby 56) -(defconst x-pointer-hand1 58) -(defconst x-pointer-hand2 60) -(defconst x-pointer-heart 62) -(defconst x-pointer-icon 64) -(defconst x-pointer-iron-cross 66) -(defconst x-pointer-left-ptr 68) -(defconst x-pointer-left-side 70) -(defconst x-pointer-left-tee 72) -(defconst x-pointer-leftbutton 74) -(defconst x-pointer-ll-angle 76) -(defconst x-pointer-lr-angle 78) -(defconst x-pointer-man 80) -(defconst x-pointer-middlebutton 82) -(defconst x-pointer-mouse 84) -(defconst x-pointer-pencil 86) -(defconst x-pointer-pirate 88) -(defconst x-pointer-plus 90) -(defconst x-pointer-question-arrow 92) -(defconst x-pointer-right-ptr 94) -(defconst x-pointer-right-side 96) -(defconst x-pointer-right-tee 98) -(defconst x-pointer-rightbutton 100) -(defconst x-pointer-rtl-logo 102) -(defconst x-pointer-sailboat 104) -(defconst x-pointer-sb-down-arrow 106) -(defconst x-pointer-sb-h-double-arrow 108) -(defconst x-pointer-sb-left-arrow 110) -(defconst x-pointer-sb-right-arrow 112) -(defconst x-pointer-sb-up-arrow 114) -(defconst x-pointer-sb-v-double-arrow 116) -(defconst x-pointer-shuttle 118) -(defconst x-pointer-sizing 120) -(defconst x-pointer-spider 122) -(defconst x-pointer-spraycan 124) -(defconst x-pointer-star 126) -(defconst x-pointer-target 128) -(defconst x-pointer-tcross 130) -(defconst x-pointer-top-left-arrow 132) -(defconst x-pointer-top-left-corner 134) -(defconst x-pointer-top-right-corner 136) -(defconst x-pointer-top-side 138) -(defconst x-pointer-top-tee 140) -(defconst x-pointer-trek 142) -(defconst x-pointer-ul-angle 144) -(defconst x-pointer-umbrella 146) -(defconst x-pointer-ur-angle 148) -(defconst x-pointer-watch 150) -(defconst x-pointer-xterm 152) - -;; -;; Available colors -;; - -(defvar x-colors '("aquamarine" - "Aquamarine" - "medium aquamarine" - "MediumAquamarine" - "black" - "Black" - "blue" - "Blue" - "cadet blue" - "CadetBlue" - "cornflower blue" - "CornflowerBlue" - "dark slate blue" - "DarkSlateBlue" - "light blue" - "LightBlue" - "light steel blue" - "LightSteelBlue" - "medium blue" - "MediumBlue" - "medium slate blue" - "MediumSlateBlue" - "midnight blue" - "MidnightBlue" - "navy blue" - "NavyBlue" - "navy" - "Navy" - "sky blue" - "SkyBlue" - "slate blue" - "SlateBlue" - "steel blue" - "SteelBlue" - "coral" - "Coral" - "cyan" - "Cyan" - "firebrick" - "Firebrick" - "brown" - "Brown" - "gold" - "Gold" - "goldenrod" - "Goldenrod" - "medium goldenrod" - "MediumGoldenrod" - "green" - "Green" - "dark green" - "DarkGreen" - "dark olive green" - "DarkOliveGreen" - "forest green" - "ForestGreen" - "lime green" - "LimeGreen" - "medium forest green" - "MediumForestGreen" - "medium sea green" - "MediumSeaGreen" - "medium spring green" - "MediumSpringGreen" - "pale green" - "PaleGreen" - "sea green" - "SeaGreen" - "spring green" - "SpringGreen" - "yellow green" - "YellowGreen" - "dark slate grey" - "DarkSlateGrey" - "dark slate gray" - "DarkSlateGray" - "dim grey" - "DimGrey" - "dim gray" - "DimGray" - "light grey" - "LightGrey" - "light gray" - "LightGray" - "gray" - "grey" - "Gray" - "Grey" - "khaki" - "Khaki" - "magenta" - "Magenta" - "maroon" - "Maroon" - "orange" - "Orange" - "orchid" - "Orchid" - "dark orchid" - "DarkOrchid" - "medium orchid" - "MediumOrchid" - "pink" - "Pink" - "plum" - "Plum" - "red" - "Red" - "indian red" - "IndianRed" - "medium violet red" - "MediumVioletRed" - "orange red" - "OrangeRed" - "violet red" - "VioletRed" - "salmon" - "Salmon" - "sienna" - "Sienna" - "tan" - "Tan" - "thistle" - "Thistle" - "turquoise" - "Turquoise" - "dark turquoise" - "DarkTurquoise" - "medium turquoise" - "MediumTurquoise" - "violet" - "Violet" - "blue violet" - "BlueViolet" - "wheat" - "Wheat" - "white" - "White" - "yellow" - "Yellow" - "green yellow" - "GreenYellow") - "The full list of X colors from the rgb.text file.") - -(defun x-defined-colors () - "Return a list of colors supported by the current X-Display." - (let ((all-colors x-colors) - (this-color nil) - (defined-colors nil)) - (while all-colors - (setq this-color (car all-colors) - all-colors (cdr all-colors)) - (and (x-defined-color this-color) - (setq defined-colors (cons this-color defined-colors)))) - defined-colors)) - - -;; -;; Function key processing under X. Function keys are received through -;; in the input stream as Lisp symbols. -;; - -(defun define-function-key (map sym definition) - (let ((exist (assq sym (cdr map)))) - (if exist - (setcdr exist definition) - (setcdr map - (cons (cons sym definition) - (cdr map)))))) - -;; For unused keysyms. If this happens, it's probably a server or -;; Xlib bug. - -(defun weird-x-keysym () - (interactive) - (error "Bizarre X keysym received.")) -(define-function-key global-function-map 'xk-not-serious 'weird-x-keysym) - -;; Keypad type things - -(define-function-key global-function-map 'xk-home 'beginning-of-line) -(define-function-key global-function-map 'xk-left 'backward-char) -(define-function-key global-function-map 'xk-up 'previous-line) -(define-function-key global-function-map 'xk-right 'forward-char) -(define-function-key global-function-map 'xk-down 'next-line) -(define-function-key global-function-map 'xk-prior 'previous-line) -(define-function-key global-function-map 'xk-next 'next-line) -(define-function-key global-function-map 'xk-end 'end-of-line) -(define-function-key global-function-map 'xk-begin 'beginning-of-line) - - ;; IsMiscFunctionKey - -(define-function-key global-function-map 'xk-select nil) -(define-function-key global-function-map 'xk-print nil) -(define-function-key global-function-map 'xk-execute nil) -(define-function-key global-function-map 'xk-insert nil) -(define-function-key global-function-map 'xk-undo nil) -(define-function-key global-function-map 'xk-redo nil) -(define-function-key global-function-map 'xk-menu nil) -(define-function-key global-function-map 'xk-find nil) -(define-function-key global-function-map 'xk-cancel nil) -(define-function-key global-function-map 'xk-help nil) -(define-function-key global-function-map 'xk-break nil) - - ;; IsKeypadKey - -(define-function-key global-function-map 'xk-kp-space - '(lambda nil (interactive) - (insert " "))) -(define-function-key global-function-map 'xk-kp-tab - '(lambda nil (interactive) - (insert "\t"))) -(define-function-key global-function-map 'xk-kp-enter - '(lambda nil (interactive) - (insert "\n"))) - -(define-function-key global-function-map 'xk-kp-f1 nil) -(define-function-key global-function-map 'xk-kp-f2 nil) -(define-function-key global-function-map 'xk-kp-f3 nil) -(define-function-key global-function-map 'xk-kp-f4 nil) - -(define-function-key global-function-map 'xk-kp-equal - '(lambda nil (interactive) - (insert "="))) -(define-function-key global-function-map 'xk-kp-multiply - '(lambda nil (interactive) - (insert "*"))) -(define-function-key global-function-map 'xk-kp-add - '(lambda nil (interactive) - (insert "+"))) -(define-function-key global-function-map 'xk-kp-separator - '(lambda nil (interactive) - (insert ";"))) -(define-function-key global-function-map 'xk-kp-subtract - '(lambda nil (interactive) - (insert "-"))) -(define-function-key global-function-map 'xk-kp-decimal - '(lambda nil (interactive) - (insert "."))) -(define-function-key global-function-map 'xk-kp-divide - '(lambda nil (interactive) - (insert "/"))) - -(define-function-key global-function-map 'xk-kp-0 - '(lambda nil (interactive) - (insert "0"))) -(define-function-key global-function-map 'xk-kp-1 - '(lambda nil (interactive) - (insert "1"))) -(define-function-key global-function-map 'xk-kp-2 - '(lambda nil (interactive) - (insert "2"))) -(define-function-key global-function-map 'xk-kp-3 - '(lambda nil (interactive) - (insert "3"))) -(define-function-key global-function-map 'xk-kp-4 - '(lambda nil (interactive) - (insert "4"))) -(define-function-key global-function-map 'xk-kp-5 - '(lambda nil (interactive) - (insert "5"))) -(define-function-key global-function-map 'xk-kp-6 - '(lambda nil (interactive) - (insert "6"))) -(define-function-key global-function-map 'xk-kp-7 - '(lambda nil (interactive) - (insert "7"))) -(define-function-key global-function-map 'xk-kp-8 - '(lambda nil (interactive) - (insert "8"))) -(define-function-key global-function-map 'xk-kp-9 - '(lambda nil (interactive) - (insert "9"))) - - ;; IsFunctionKey - -(define-function-key global-function-map 'xk-f1 'rmail) -(define-function-key global-function-map 'xk-f2 nil) -(define-function-key global-function-map 'xk-f3 nil) -(define-function-key global-function-map 'xk-f4 nil) -(define-function-key global-function-map 'xk-f5 nil) -(define-function-key global-function-map 'xk-f6 nil) -(define-function-key global-function-map 'xk-f7 nil) -(define-function-key global-function-map 'xk-f8 nil) -(define-function-key global-function-map 'xk-f9 nil) -(define-function-key global-function-map 'xk-f10 nil) -(define-function-key global-function-map 'xk-f11 nil) -(define-function-key global-function-map 'xk-f12 nil) -(define-function-key global-function-map 'xk-f13 nil) -(define-function-key global-function-map 'xk-f14 nil) -(define-function-key global-function-map 'xk-f15 nil) -(define-function-key global-function-map 'xk-f16 nil) -(define-function-key global-function-map 'xk-f17 nil) -(define-function-key global-function-map 'xk-f18 nil) -(define-function-key global-function-map 'xk-f19 nil) -(define-function-key global-function-map 'xk-f20 nil) -(define-function-key global-function-map 'xk-f21 nil) -(define-function-key global-function-map 'xk-f22 nil) -(define-function-key global-function-map 'xk-f23 nil) -(define-function-key global-function-map 'xk-f24 nil) -(define-function-key global-function-map 'xk-f25 nil) -(define-function-key global-function-map 'xk-f26 nil) -(define-function-key global-function-map 'xk-f27 nil) -(define-function-key global-function-map 'xk-f28 nil) -(define-function-key global-function-map 'xk-f29 nil) -(define-function-key global-function-map 'xk-f30 nil) -(define-function-key global-function-map 'xk-f31 nil) -(define-function-key global-function-map 'xk-f32 nil) -(define-function-key global-function-map 'xk-f33 nil) -(define-function-key global-function-map 'xk-f34 nil) -(define-function-key global-function-map 'xk-f35 nil) + (if (= window-system-version 10) + (progn + ;; xterm.c depends on using interrupt-driven input. + (set-input-mode t nil) + + (defun x-new-display (display) + "This function takes one argument, the display where you wish to +continue your editing session. Your current window will be unmapped and +the current display will be closed. The new X display will be opened and +the rubber-band outline of the new window will appear on the new X display." + (interactive "sDisplay to switch emacs to: ") + (x-change-display display) + (x-get-default-args)) + + ;; Not defvar! This is not DEFINING this variable, just specifying + ;; a value for it. + (setq window-setup-hook 'x-pop-up-window) + + ;; Process switch settings made by .emacs file. + (while x-switches + (x-handle-switch-1 (car (car x-switches)) (cdr (car x-switches))) + (setq x-switches (cdr x-switches))))) + + ;; On certain systems, turn off use of sigio, because it's broken. + (if x-sigio-bug + (set-input-mode nil nil)) + + (put 'suspend-emacs 'disabled + "Suspending a program running in an X window is silly +and you would not be able to start it again. Just switch windows instead.\n") + (setq suspend-hook '(lambda () (error "Suspending an emacs running under X makes no sense"))) + (substitute-key-definition 'suspend-emacs nil global-map) + (substitute-key-definition 'suspend-emacs nil esc-map) + (substitute-key-definition 'suspend-emacs nil ctl-x-map) + ;; Not needed any more -- done in C. + ;; (if (not x-processed-defaults) (x-get-default-args)) +)) |