view lisp/term/wyse50.el @ 66230:4344fd52a670

Add autoloads of crypt++ and mailcrypt routines, all for encryption functionality. allout customization subgroup now positioned in `outlines' group instead of prior `editing' group. (allout-encrypt-string, allout-encryption-produce-work-buffer) (allout-encrypted-topic-p, allout-encrypted-text-type) (allout-mc-activate-passwd, allout-create-encryption-key-verifier) (allout-situate-encryption-key-verifier) (allout-get-encryption-key-verifier, allout-verify-key) (allout-next-topic-pending-encryption) (allout-encrypt-decrypted, allout-encrypted-type-prefix): New functions. (outline-topic-encryption-bullet, outline-default-encryption-scheme) (outline-key-verifier-handling, outline-key-hint-handling) (outline-encrypt-unencrypted-on-saves): New defcustoms. (allout-file-key-verifier-string, allout-encryption-scheme) (allout-key-verifier-string, allout-key-hint-string) (allout-after-save-decrypt): New variables. (allout-write-file-hook-handler, allout-auto-save-hook-handler) (allout-after-saves-handler): New hook functions. (allout-post-command-business): Do allout-after-save-decrypt. (allout-enable-file-variable-adjustment): Custom var to enable mechanism for adding and adjusting settings of Emacs file variables. (allout-adjust-file-variable, allout-file-vars-section-data): New functions, implement the mechanism. (outlineify-sticky): Use the file vars mechanism. (allout-inhibit-protection, allout-during-write-cue) (allout-override-protect, allout-before-change-protect): Removed. (allout-flag-region, allout-open-topic): Revised to adjust read-only text. (allout-open-line-not-read-only): Added to facilitate read-only text based protection. (allout-kill-line): Revised to adjust read-only text, clue the user about the inhibition. (allout-unprotected): Robustified with an unwind-protect. (allout-shift-in, allout-shift-out): Disallow manually shifting a topic deeper than the offspring depth of the previous topic - avoiding confusing "containment discontinuities". (allout-reindent-bodies): Fixed retention of body relative hanging indent during promotion of collapsed bodies. (allout-open-topic): Made it easy to open new topic with same bullet as current topic - topic creation functions provided with any universal argument provokes now prompt for bullet, defaulting to the bullet of the previous topic. (allout-plain-bullets-string, allout-distinctive-bullets-string): Plain bullet alternates '.' period and ',' comma only. All other bullets are relegated to special status (but customizable). (allout-end-of-entry): Renamed from 'allout-end-of-current-entry since it actually operates w.r.t. most immediately containing entry, visible or not. (allout-hide-current-entry, allout-show-current-entry): Use the revised version. (allout-old-expose-topic): Solidify deprecation. (allout-end-of-subtree): Added, so we can span concealed as well as visible topics. (allout-end-of-current-subtree): Use `allout-end-of-subtree'. (allout-end-of-current-heading): Tweaked to just respect the first line. (allout-get-body-text): Added. (allout-ascend-to-depth, allout-ascend): Position at end of prefix when invoked interactively. (allout-up-current-level): Use `interactive-p'. (allout-mode, allout-init): Miscellaneous docstring and operational refinements, as well as hookups of new encryption stuff. (allout-beginning-of-current-entry): Now works as advertised. (allout-end-of-current-entry): Relieved of superfluous allout-show-entry. (allout-isearch-rectification): Refine condition for isearching (allout-isearch-abort, allout-enwrap-isearch). (allout-flag-region, my-region-active-p): Relocated some macros. (allout-title): Fallback title is '(buffer-name)', not non-existing '(current-buffer-name)'. (subst-char-in-string): Define if absent (for some XEmacs versions). Corrected commentary 'keywords' to legitimate ones. Updated comentary author info (using my current email address, obscurified).
author Eli Zaretskii <eliz@gnu.org>
date Thu, 20 Oct 2005 14:59:51 +0000
parents 34bd8e434dd7
children 067115a6e738 532e0a9335a9 edf295560b5a
line wrap: on
line source

;;; wyse50.el --- terminal support code for Wyse 50 -*- no-byte-compile: t -*-

;; Copyright (C) 1989, 1993, 1994, 2002, 2003, 2004,
;;   2005 Free Software Foundation, Inc.

;; Author: Daniel Pfeiffer <occitan@esperanto.org>,
;;	Jim Blandy <jimb@occs.cs.oberlin.edu>
;; 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., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; Uses the Emacs 19 terminal initialization features --- won't work with 18.
;; Rewritten for Emacs 19 by jimb,  January 1992
;; Cleaned up for new terminal package conventions by esr, March 1993
;; Should work well for Televideo TVI 925 although it's overkill.
;;
;; The Wyse50 is ergonomically wonderful, but its escape-sequence design sucks
;; rocks.  The left-arrow key emits a backspace (!) and the down-arrow a line
;; feed (!!).  Thus, you have to unbind some commonly-used Emacs keys to
;; enable the arrows.

;;; Code:

(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
	    ))

  ;; Miscellaneous hacks

  ;; This is an ugly hack for a nasty problem:
  ;; Wyse 50 takes one character cell to store video attributes (which seems to
  ;; explain width 79 rather than 80, column 1 is not used!!!).
  ;; On killing (C-x C-c) the end inverse code (on column 1 of line 24)
  ;; of the mode line is overwritten AFTER all the y-or-n questions.
  ;; This causes the attribute to remain in effect until the mode line has
  ;; scrolled of the screen.  Suspending (C-z) does not cause this problem.
  ;; On such terminals, Emacs should sacrifice the first and last character of
  ;; each mode line, rather than a whole screen column!
  (add-hook 'kill-emacs-hook
	    (function (lambda () (interactive)
			(send-string-to-terminal
			 (concat "\ea23R" (1+ (frame-width)) "C\eG0"))))))

(defun enable-arrow-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
"
  (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)))
  (fset 'enable-arrow-keys nil))

;;; arch-tag: b6a05d37-eead-4cf6-b997-0f956c68881c
;;; wyse50.el ends here