Add 2010 to copyright years.
[bpt/emacs.git] / lisp / term / wyse50.el
index 1540173..5cb2829 100644 (file)
@@ -1,7 +1,7 @@
 ;;; wyse50.el --- terminal support code for Wyse 50 -*- no-byte-compile: t -*-
 
 ;; Copyright (C) 1989, 1993, 1994, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>,
 ;;     Jim Blandy <jimb@occs.cs.oberlin.edu>
@@ -9,10 +9,10 @@
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,9 +20,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 
 ;;; Code:
 
+(defvar wyse50-terminal-map
+  (let ((map (make-sparse-keymap)))
+    (dolist (key-definition
+             '( ;; These might be set up by termcap and terminfo
+               ("\C-k" [up])
+               ("\C-j" [down])
+               ("\C-l" [right])
+               ("\C-h" [left])
+               ("\^a@\^m"      [f1])
+               ("\^aA\^m"      [f2])
+               ("\^aB\^m"      [f3])
+               ("\^aC\^m"      [f4])
+               ("\^aD\^m"      [f5])
+               ("\^aE\^m"      [f6])
+               ("\^aF\^m"      [f7])
+               ("\^aG\^m"      [f8])
+               ("\^aH\^m"      [f9])
+
+               ;; These might be set up by terminfo
+               ("\eK"  [next])
+               ("\eT"  [clearline])
+               ("\^^"  [home])
+               ("\e\^^"        [end])
+               ("\eQ"  [insert])
+               ("\eE"  [insertline])
+               ("\eR"  [deleteline])
+               ("\eP"  [print])
+               ("\er"  [replace])
+               ("\^aI\^m"      [f10])
+               ("\^aJ\^m"      [f11])
+               ("\^aK\^m"      [f12])
+               ("\^aL\^m"      [f13])
+               ("\^aM\^m"      [f14])
+               ("\^aN\^m"      [f15])
+               ("\^aO\^m"      [f16])
+               ("\^a`\^m"      [f17])
+               ("\^aa\^m"      [f18])
+               ("\^ab\^m"      [f19])
+               ("\^ac\^m"      [f20])
+               ("\^ad\^m"      [f21])
+               ("\^ae\^m"      [f22])
+               ("\^af\^m"      [f23])
+               ("\^ag\^m"      [f24])
+               ("\^ah\^m"      [f25])
+               ("\^ai\^m"      [f26])
+               ("\^aj\^m"      [f27])
+               ("\^ak\^m"      [f28])
+               ("\^al\^m"      [f29])
+               ("\^am\^m"      [f30])
+               ("\^an\^m"      [f31])
+               ("\^ao\^m"      [f32])
+
+               ;; Terminfo may know about these, but X won't
+               ("\eI"  [key-stab])  ;; Not an X keysym
+               ("\eJ"  [key-snext]) ;; Not an X keysym
+               ("\eY"  [key-clear]) ;; Not an X keysym
+
+               ;; These are totally strange :-)
+               ("\eW"  [?\C-?])                ;; Not an X keysym
+               ("\^a\^k\^m"    [funct-up])     ;; Not an X keysym
+               ("\^a\^j\^m"    [funct-down])   ;; Not an X keysym
+               ("\^a\^l\^m"    [funct-right])  ;; Not an X keysym
+               ("\^a\^h\^m"    [funct-left])   ;; Not an X keysym
+               ("\^a\^m\^m"    [funct-return]) ;; Not an X keysym
+               ("\^a\^i\^m"    [funct-tab])    ;; Not an X keysym
+               ))
+      (define-key map
+        (car key-definition) (nth 1 key-definition)))
+    map))
+
 (defun terminal-init-wyse50 ()
   "Terminal initialization function for wyse50."
-  (define-key function-key-map "\C-a" (make-keymap))
-  (mapcar (function (lambda (key-definition)
-                     (define-key function-key-map
-                       (car key-definition) (nth 1 key-definition))))
-         '(
-           ;; These might be set up by termcap and terminfo
-           ("\C-k"     [up])
-           ("\C-j"     [down])
-           ("\C-l"     [right])
-           ("\C-h"     [left])
-           ("\^a@\^m"  [f1])
-           ("\^aA\^m"  [f2])
-           ("\^aB\^m"  [f3])
-           ("\^aC\^m"  [f4])
-           ("\^aD\^m"  [f5])
-           ("\^aE\^m"  [f6])
-           ("\^aF\^m"  [f7])
-           ("\^aG\^m"  [f8])
-           ("\^aH\^m"  [f9])
-
-           ;; These might be set up by terminfo
-           ("\eK"      [next])
-           ("\eT"      [clearline])
-           ("\^^"      [home])
-           ("\e\^^"    [end])
-           ("\eQ"      [insert])
-           ("\eE"      [insertline])
-           ("\eR"      [deleteline])
-           ("\eP"      [print])
-           ("\er"      [replace])
-           ("\^aI\^m"  [f10])
-           ("\^aJ\^m"  [f11])
-           ("\^aK\^m"  [f12])
-           ("\^aL\^m"  [f13])
-           ("\^aM\^m"  [f14])
-           ("\^aN\^m"  [f15])
-           ("\^aO\^m"  [f16])
-           ("\^a`\^m"  [f17])
-           ("\^aa\^m"  [f18])
-           ("\^ab\^m"  [f19])
-           ("\^ac\^m"  [f20])
-           ("\^ad\^m"  [f21])
-           ("\^ae\^m"  [f22])
-           ("\^af\^m"  [f23])
-           ("\^ag\^m"  [f24])
-           ("\^ah\^m"  [f25])
-           ("\^ai\^m"  [f26])
-           ("\^aj\^m"  [f27])
-           ("\^ak\^m"  [f28])
-           ("\^al\^m"  [f29])
-           ("\^am\^m"  [f30])
-           ("\^an\^m"  [f31])
-           ("\^ao\^m"  [f32])
-
-           ;; Terminfo may know about these, but X won't
-           ("\eI"      [key-stab])             ;; Not an X keysym
-           ("\eJ"      [key-snext])            ;; Not an X keysym
-           ("\eY"      [key-clear])            ;; Not an X keysym
-
-           ;; These are totally strange :-)
-           ("\eW"      [?\C-?])            ;; Not an X keysym
-           ("\^a\^k\^m"        [funct-up]) ;; Not an X keysym
-           ("\^a\^j\^m"        [funct-down])  ;; Not an X keysym
-           ("\^a\^l\^m"        [funct-right]) ;; Not an X keysym
-           ("\^a\^h\^m"        [funct-left])  ;; Not an X keysym
-           ("\^a\^m\^m"        [funct-return]) ;; Not an X keysym
-           ("\^a\^i\^m"        [funct-tab])    ;; Not an X keysym
-           ))
+  ;; Use inheritance to let the main keymap override these defaults.
+  ;; This way we don't override terminfo-derived settings or settings
+  ;; made in the .emacs file.
+  (let ((m (copy-keymap wyse50-terminal-map)))
+    (set-keymap-parent m (keymap-parent input-decode-map))
+    (set-keymap-parent input-decode-map m))
 
   ;; Miscellaneous hacks
 
                         (concat "\ea23R" (1+ (frame-width)) "C\eG0"))))))
 
 (defun enable-arrow-keys ()
-  "To be called by term-setup-hook. Overrides 6 Emacs standard keys
+  "To be called by `term-setup-hook'. Overrides 6 Emacs standard keys
 whose functions are then typed as follows:
 C-a    Funct Left-arrow
 C-h    M-?
 LFD    Funct Return, some modes override down-arrow via LFD
 C-k    CLR Line
 C-l    Scrn CLR
-M-r    M-x move-to-window-line, Funct up-arrow or down-arrow are similar
-"
+M-r    M-x move-to-window-line, Funct up-arrow or down-arrow are similar"
   (interactive)
-  (mapcar (function (lambda (key-definition)
-                     (global-set-key (car key-definition)
-                                     (nth 1 key-definition))))
-         ;; By unsetting C-a and then binding it to a prefix, we
-         ;; allow the rest of the function keys which start with C-a
-         ;; to be recognized.
-         '(("\C-a"     nil)
-           ("\C-k"     nil)
-           ("\C-j"     nil)
-           ("\C-l"     nil)
-           ("\C-h"     nil)
-           ("\er"      nil)))
+  ;; Not needed any more now that we use input-decode-map.
+  ;; (dolist (key-definition 
+  ;;         ;; By unsetting C-a and then binding it to a prefix, we
+  ;;         ;; allow the rest of the function keys which start with C-a
+  ;;         ;; to be recognized.
+  ;;         '(("\C-a" nil)
+  ;;           ("\C-k" nil)
+  ;;           ("\C-j" nil)
+  ;;           ("\C-l" nil)
+  ;;           ("\C-h" nil)
+  ;;           ("\er"  nil)))
+  ;;   (global-set-key (car key-definition)
+  ;;                   (nth 1 key-definition)))
   (fset 'enable-arrow-keys nil))
 
-;;; arch-tag: b6a05d37-eead-4cf6-b997-0f956c68881c
+;; arch-tag: b6a05d37-eead-4cf6-b997-0f956c68881c
 ;;; wyse50.el ends here