summaryrefslogtreecommitdiff
path: root/language/hebrew/hebtex/editors
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/hebrew/hebtex/editors
Initial commit
Diffstat (limited to 'language/hebrew/hebtex/editors')
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el300
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snfbin0 -> 29456 bytes
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snfbin0 -> 22316 bytes
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el735
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacsbin0 -> 1581056 bytes
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el376
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme52
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s461
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el735
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el174
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps631
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el736
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/readme17
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/README68
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias2
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir2
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf3757
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snfbin0 -> 18540 bytes
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el217
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp34
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src442
-rw-r--r--language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont123
-rw-r--r--language/hebrew/hebtex/editors/unix/readme5
-rw-r--r--language/hebrew/hebtex/editors/unix/vi.iv/readme19
-rw-r--r--language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man1845
-rw-r--r--language/hebrew/hebtex/editors/unix/vim/readme.vim17
26 files changed, 10748 insertions, 0 deletions
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el
new file mode 100644
index 0000000000..6efd7f71ad
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/alex/hebrew.el
@@ -0,0 +1,300 @@
+;;; $Id: hebrew.el,v 1.4 1993/11/24 14:29:08 alexr Exp alexr $
+
+;;; $RCSfile: hebrew.el,v $ -- Simple hebrew support
+;;; Copyright (C) 1993 Alexander Rezinsky <alexr@msil.sps.mot.com>
+;;;
+;;; Author: Alex Rezinsky <alexr@msil.sps.mot.com>
+;;; Created: 24 Nov 1993
+;;; Version: 1.0
+;;; Keywords: hebrew language
+;;;
+;;; This program 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 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; This program 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 this program; if not, write to the Free Software
+;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; COMMENTARY
+;;; ----------
+;;; This package provide very simple hebrew (may be any other
+;;; right-to-left language ??) support. Unlike existing package
+;;; misc/hebrew.tar.Z (see elisp archive) it does not requires any
+;;; patches in emacs modules and it is very-very simple. This package
+;;; assumes that you already have hebrew font for your computer (see
+;;; misc/hebrew.tar.Z to X11 hebrew fonts). This package uses only
+;;; one key that toggles hebrew mode. Hebrew coding and keyboard
+;;; binding are Israel's standard, but you can redefine it. Digits
+;;; and any other special characters are left-to-right.
+;;;
+
+;;; INSTALLATION
+;;; ------------
+;;; Put this file in your load-path and insert the following in .emacs
+;;;
+(autoload 'hebr-switch "hebrew" "Toggle Hebrew mode.")
+;;;
+;;; And define your hebrew-toggle key as follow:
+;;;
+(global-set-key [f9] 'hebr-switch)
+;;; USAGE
+;;; -----
+;;; Now use key which you defined to toggle hebrew mode (in our example
+;;; Alt-a). It is one additional function "hebrew-sort-lines". It works
+;;; exactly as "sort-lines", but sorting is done in right-to-left order.
+
+;;; CUSTOMIZATION
+;;; -------------
+;;; You can redefine hebrew coding by redifinition variables "alef",
+;;; "bet", "gimel" etc. in your .emacs file. For example:
+;;; (setq alef ?\260)
+;;; (setq bet ?\261)
+;;; ....
+;;; (setq tav ?\312)
+;;;
+;;; If you want redefine keyboard binding, define two variables
+;;; "hebrew-from-table" and "hebrew-to-table" in your .emacs
+;;; file. In "hebrew-from-table" must be list of native keyboard
+;;; codes and in "hebrew-to-table" must be list of target codes.
+;;; These lists must have same length. See definition of these
+;;; variables below for details.
+
+;;; KNOWN BUGS
+;;; ----------
+;;; Because of stupid method of Hebrew sorting, function
+;;; "hebrew-sort-lines" is slow. In case very large file (great than
+;;; ~ 1M) this function may not work properly.
+
+;;; LCD Archive Entry:
+;;; simple-hebrew|Alex Rezinsky|alexr@msil.sps.mot.com|
+;;; Simple Hebrew language support.|
+;;; 24-Nov-1993|1.0|~/misc/hebrew.el.Z|
+
+;;; TODO LIST
+;;; ---------
+;;; 1. More intelligent "return" key processing.
+;;; 2. Filling and justifying region in right-to-left style.
+;;; 3. It is very stupid method of right-to-left sorting (see below).
+;;; Any ideas ?
+;;; 4. Must be difference between digits (always left-to-right) and
+;;; punctuation characters (in right-to-left mode also right-to-left).
+;;; 5. Must be two modes - Hebrew insertion in English text, and English
+;;; insertion in Hebrew text (now this package works in "Hebrew
+;;; insertion in English text").
+
+;;; HISTORY
+;;; -------
+;;; v1.0 November 24 1993 Alex Rezinsky
+;;; First release.
+
+
+;;; Code:
+
+;;
+;; Here default hebrew code table is defined
+;;
+(defvar alef ?\200)
+(defvar bet ?\201)
+(defvar gimel ?\202)
+(defvar dalet ?\203)
+(defvar hej ?\204)
+(defvar vav ?\205)
+(defvar zain ?\206)
+(defvar het ?\207)
+(defvar tet ?\210)
+(defvar jud ?\211)
+(defvar kafs ?\212)
+(defvar kaf ?\213)
+(defvar lamed ?\214)
+(defvar mems ?\215)
+(defvar mem ?\216)
+(defvar nuns ?\217)
+(defvar nun ?\220)
+(defvar sameh ?\221)
+(defvar ain ?\222)
+(defvar pejs ?\223)
+(defvar pej ?\224)
+(defvar tzadis ?\225)
+(defvar tzadi ?\226)
+(defvar kuv ?\227)
+(defvar resh ?\230)
+(defvar shin ?\231)
+(defvar tav ?\232)
+(defvar kav-nt ?/)
+(defvar psik ?,)
+(defvar nakuda ?.)
+(defvar geresh ?')
+
+;;
+;; Here default hebrew keyboard mapping is defined.
+;;
+(defvar hebrew-from-table
+ (list
+ ?q ?w ?e ?r ?t ?y ?u ?i ?o ?p
+ ?a ?s ?d ?f ?g ?h ?j ?k ?l ?; ?'
+ ?z ?x ?c ?v ?b ?n ?m ?, ?. ?/
+ ?\040
+ )
+)
+(defvar hebrew-to-table
+ (list
+ kav-nt geresh kuv resh alef tet vav nuns mems pej
+ shin dalet gimel kaf ain jud het lamed kafs pejs psik
+ zain sameh bet hej nun mem tzadi tav tzadis nakuda
+ ?\040
+ )
+)
+
+
+;;
+;;=======================================================================
+;; Tables and variables setup
+;;=======================================================================
+;;
+(defvar hebrew-table () "Hebrew keyboard translation table.")
+(if hebrew-table
+ ()
+ (setq hebrew-table (make-string 256 0))
+ (let ((i 0))
+ (while (< i 256)
+ (aset hebrew-table i i)
+ (setq i (1+ i))))
+ (let ((from hebrew-from-table) (to hebrew-to-table))
+ (while from
+ (aset hebrew-table (car from) (car to))
+ (setq from (cdr from))
+ (setq to (cdr to)))))
+
+(defvar hebrew-mode-map ()
+ "Keymap for hebrew.")
+(if hebrew-mode-map
+ ()
+ (setq hebrew-mode-map (make-keymap))
+ (define-key hebrew-mode-map "\C-m" 'return-hebrew)
+ (let ((from hebrew-from-table) (to hebrew-to-table))
+ (while from
+ (define-key hebrew-mode-map (char-to-string (car from)) 'cinsert-hebrew)
+ (setq from (cdr from))
+ (setq to (cdr to)))))
+
+(or (assq 'hebrew-mode minor-mode-alist)
+ (setq minor-mode-alist
+ (cons '(hebrew-mode " Hebrew") minor-mode-alist)))
+(or (assq 'hebrew-mode minor-mode-map-alist)
+ (setq minor-mode-map-alist
+ (cons (cons 'hebrew-mode hebrew-mode-map) minor-mode-map-alist)))
+
+
+;;
+;; HEBREW MODE TOGGLE
+;;
+(defun hebr-switch ()
+ (interactive nil)
+ (if (boundp 'hebrew-mode)
+ (setq hebrew-mode (not hebrew-mode))
+ (make-local-variable 'hebrew-mode)
+ (setq hebrew-mode t))
+ (force-mode-line-update)
+)
+
+;;
+;; HEBREW INSERTION
+;;
+(defun cinsert-hebrew (rpt)
+ (interactive "p")
+ (let ((i rpt) (dec-char (aref hebrew-table last-input-char)))
+ (while (> i 0)
+ (if overwrite-mode
+ (progn ;;; -- OVERWRITE MODE
+ (if (and (/= (following-char) ?\n) (/= (point) (point-max)))
+ (delete-char 1)
+ )
+ (insert-char dec-char 1)
+ (backward-char 1)
+ (if (or (= (preceding-char) ?\n) (= (point) 1))
+ (insert-char ? 1)
+ )
+ (backward-char 1)
+ )
+ (progn ;;; -- INSERT MODE
+ (insert-char dec-char 1)
+ (backward-char 1)
+ )
+ )
+ (setq i (1- i))
+ )
+ )
+)
+
+
+;;
+;; HEBREW RETURN
+;;
+(defun return-hebrew (rpt)
+ (interactive "p")
+ (let ((cur-point (point)))
+ (beginning-of-line)
+ (let ((first-part (buffer-substring (point) cur-point)))
+ (delete-char (- cur-point (point)))
+ (end-of-line)
+ (newline rpt)
+ (insert first-part)
+ )
+ )
+)
+
+
+;;--------------------------------------------------------
+;;
+;; HEBREW SORTING
+;;
+(defun hebrew-sort-lines (reverse beg end)
+ "Sort lines in region alphabetically, right-to-left;
+argument means descending order.
+Called from a program, there are three arguments:
+REVERSE (non-nil means reverse order), BEG and END (region to sort)."
+ (interactive "P\nr")
+ (require 'sort)
+ (save-restriction
+ (narrow-to-region beg end)
+ (revers-buffer)
+ (goto-char (point-min))
+ (sort-subr reverse 'forward-line 'end-of-line)
+ (goto-char (point-min))
+ (revers-buffer)
+ )
+)
+
+(defun revers-buffer ()
+ (goto-char (point-min))
+ (let ((begl 0)(endl 0)(not-end t))
+ (while not-end
+ (setq begl (point))
+ (end-of-line)
+ (setq endl (point))
+ (if (/= begl endl)
+ (let ((str (buffer-substring begl endl)))
+ (kill-region begl endl)
+ (insert (revers-string str))
+ )
+ )
+ (setq not-end (eq (forward-line 1) 0))
+ )
+ )
+)
+
+(defun revers-string (str)
+ (if (< (length str) 2)
+ str
+ (concat (revers-string (substring str 1)) (substring str 0 1))
+ )
+)
+
+;;; hebrew ends here.
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snf b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snf
new file mode 100644
index 0000000000..cf0098177b
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb10x20.snf
Binary files differ
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snf b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snf
new file mode 100644
index 0000000000..8a67ecfc26
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/heb6x13.snf
Binary files differ
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el
new file mode 100644
index 0000000000..555e41e51a
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hebrew.el
@@ -0,0 +1,735 @@
+
+;; >>.WARNING.<< This file contains (non-ascii) chars with the high-order
+;; bit set. Most mailers will choke on it.
+
+
+;; file "hebrew.el" ver 0.8
+;; last modified Jan. 2 1992
+
+;; Hebrew support for Emacs.
+;; Copyright (c) 1990-92 by Joel M. Hoffman.
+;;
+;; --> This project is dedicated to Orna Okouneff, who, against my
+;; will, insisted on teaching me Emacs.
+
+
+
+;; THIS IS A basic support package for editing Hebrew with Emacs. It
+;; assumes the keyboard layout of the VT* series for the purposes of
+;; mapping English keystrokes to their Hebrew equivilents. It also
+;; assumes the output hardware is compatible with the VT* series used
+;; in Israel, in that the high-order bit is assumed to indicate
+;; Hebrew; I believe this is incompatible with the DOS standard for
+;; hebrew. The package does not use the right-to-left facilites of
+;; the VT* terminals, so any terminal that converts characters >128
+;; decimal to Hebrew is supported. An EGA Hebrew font compatible with
+;; this package is available for the IBM.
+
+;; To work properly, the following files in Emacs 18.xx must be
+;; modified:
+;;
+;; xdisp.c
+;; indent.c
+
+;; You can use this package with the unmodified files, but the Hebrew
+;; letters will appear encoded as \xxx. I understand that ver. 19.00
+;; will have an option to support 8-bit-clean operation, and so will
+;; support this package. Demacs supports 8-bit-clean operation via
+;; the toggle-pass8 command.
+
+;; Currently, four major commands are supplied: C-Xh and C-Xe, which
+;; switch back and forth between Hebrew and English keyboards, and M-h
+;; and M-e, which switch back and forth between Hebrew and English
+;; "modes," which are not modes in the Emacs sense of the word, but
+;; rather determine if the margin is to be the left or right side of
+;; the screen, among other direction-specific paramaters.
+
+;; Emacs uses the eighth bit to indicate Hebrew letters. Most text
+;; formatters (TeX, *roff, etc.) use 7-bit character codes.
+;; Additionally, these formatters usually require Hebrew to appear in
+;; time-order. A pre-processor must be run before the formatter to
+;; effect these changes.
+
+
+
+;; I don't really know lisp or Emacs, or what I'm doing; comments and
+;; suggestions are welcome:
+;; joel@wam.umd.edu <-- Internet
+;; 72700,402 <-- Compuserve
+;; 72700.402@compuserve.com <-- Compuserve from Internet
+
+;; This package is not finished. The bugs herein defy enumeration.
+
+(defun hebrew-grab-keys ()
+ "take control of the keyboard and auto-fill."
+ (interactive)
+ (define-key global-map " " 'let-space)
+ (define-key global-map "a" 'let-a)
+ (define-key global-map "b" 'let-b)
+ (define-key global-map "c" 'let-c)
+ (define-key global-map "d" 'let-d)
+ (define-key global-map "e" 'let-e)
+ (define-key global-map "f" 'let-f)
+ (define-key global-map "g" 'let-g)
+ (define-key global-map "h" 'let-h)
+ (define-key global-map "i" 'let-i)
+ (define-key global-map "j" 'let-j)
+ (define-key global-map "k" 'let-k)
+ (define-key global-map "l" 'let-l)
+ (define-key global-map "m" 'let-m)
+ (define-key global-map "n" 'let-n)
+ (define-key global-map "o" 'let-o)
+ (define-key global-map "p" 'let-p)
+ (define-key global-map "q" 'let-q)
+ (define-key global-map "r" 'let-r)
+ (define-key global-map "s" 'let-s)
+ (define-key global-map "t" 'let-t)
+ (define-key global-map "u" 'let-u)
+ (define-key global-map "v" 'let-v)
+ (define-key global-map "w" 'let-w)
+ (define-key global-map "x" 'let-x)
+ (define-key global-map "y" 'let-y)
+ (define-key global-map "z" 'let-z)
+ (define-key global-map "," 'let-comma)
+ (define-key global-map ";" 'let-semi)
+ (define-key global-map ":" 'let-colon)
+ (define-key global-map "." 'let-period)
+ (define-key global-map "/" 'let-slash)
+ (define-key global-map "'" 'let-aigu)
+ (define-key global-map "`" 'let-grave)
+ (define-key global-map "\\" 'let-bslash)
+ (define-key global-map "-" 'let-hyphen)
+ (define-key global-map "!" 'let-xmark)
+ (define-key global-map "@" 'let-at)
+ (define-key global-map "#" 'let-pound)
+ (define-key global-map "$" 'let-dollar)
+ (define-key global-map "%" 'let-percent)
+ (define-key global-map "^" 'let-carrat)
+ (define-key global-map "&" 'let-ampersand)
+ (define-key global-map "*" 'let-asterisk)
+ (define-key global-map "(" 'let-lparend)
+ (define-key global-map ")" 'let-rparend)
+ (define-key global-map "{" 'let-lcbrace)
+ (define-key global-map "}" 'let-rcbrace)
+ (define-key global-map "[" 'let-lbrace)
+ (define-key global-map "]" 'let-rbrace)
+ (define-key global-map ">" 'let-gt)
+ (define-key global-map "~" 'let-tilde)
+ (define-key global-map "+" 'let-plus)
+ (define-key global-map "+" 'let-equal)
+ (define-key global-map "<" 'let-lt)
+ (define-key global-map "?" 'let-question))
+
+
+(defun let-plus ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "+" "+"))
+
+(defun let-equal ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "=" "="))
+
+
+(defun let-tilde ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "~" "~"))
+
+(defun let-gt ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ">" ">"))
+
+(defun let-lt ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "<" "<"))
+
+(defun let-question ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "?" "?"))
+
+(defun let-hyphen ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "-" "-"))
+
+(defun let-xmark ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "!" "!"))
+
+(defun let-at ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "@" "@"))
+
+(defun let-pound ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "#" "#"))
+
+(defun let-dollar ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "$" "$"))
+
+(defun let-percent ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "%" "%"))
+
+(defun let-carrat ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "^" "^"))
+
+(defun let-ampersand ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "&" "&"))
+
+(defun let-asterisk ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "*" "*"))
+
+(defun let-lparend ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "(" "("))
+
+(defun let-rparend ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ")" ")"))
+
+(defun let-lcbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "{" "{"))
+
+(defun let-rcbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "}" "}"))
+
+(defun let-lbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "[" "["))
+
+(defun let-rbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "]" "]"))
+
+(defun let-colon ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ":" ":"))
+
+
+(defun let-a ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char"ù" "a"))
+(defun let-b ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ð" "b"))
+(defun let-c ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "á" "c"))
+(defun let-d ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "â" "d"))
+(defun let-e ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "÷" "e"))
+(defun let-f ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ë" "f"))
+(defun let-g ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ò" "g"))
+(defun let-h ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "é" "h"))
+(defun let-i ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ï" "i"))
+(defun let-j ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ç" "j"))
+(defun let-k ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ì" "k"))
+(defun let-l ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ê" "l"))
+(defun let-m ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ö" "m"))
+(defun let-n ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "î" "n"))
+(defun let-o ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "í" "o"))
+(defun let-p ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ô" "p"))
+(defun let-q ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "\\" "q"))
+(defun let-r ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ø" "r"))
+(defun let-s ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ã" "s"))
+(defun let-t ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "à" "t"))
+(defun let-u ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "å" "u"))
+(defun let-v ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ä" "v"))
+(defun let-w ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "'" "w"))
+(defun let-x ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ñ" "x"))
+(defun let-y ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "è" "y"))
+(defun let-z ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "æ" "z"))
+
+(defun let-space ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char " " " ")) ;;English auto-fill will be
+ ;;automatic. Hebrew auto-fill is
+ ;;still a problem.
+(defun let-comma ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ú" ","))
+
+(defun let-semi ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ó" ";"))
+
+(defun let-period ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "õ" "."))
+
+(defun let-slash ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "." "/"))
+
+(defun let-aigu ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "," "'"))
+
+(defun let-grave ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "/" "`"))
+
+(defun let-bslash ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ";" "\\"))
+
+
+(defun hebrew-set-up ()
+ "Comments will be here"
+ (interactive)
+
+
+;; Following are the ANSI-like codes to control the tty. Currently,
+;; they are unused.
+;; Changes may be necessary. Ideally, the code should consult a data-
+;; base, but we don't live in an ideal world.
+
+ (make-local-variable 'left-to-right-code)
+ (setq left-to-right-code "[?34l")
+ (make-local-variable 'right-to-left-code)
+ (setq right-to-left-code "[?34h")
+ (make-local-variable 'hebrew-keyboard-code)
+ (setq hebrew-keyboard-code "[?35h")
+ (make-local-variable 'english-keyboard-code)
+ (setq english-keyboard-code "[?35l")
+ (make-local-variable 'keyboard-off-code)
+ (setq keyboard-off-code "")
+ (make-local-variable 'keyboard-on-code)
+ (setq keyboard-on-code "")
+ (set-variable 'hebrew-keyboard ())
+ (make-variable-buffer-local 'hebrew-keyboard)
+ (set-variable 'hebrew-mode ())
+ (make-variable-buffer-local 'hebrew-mode)
+ (make-local-variable 'hebrew-mode)
+ (hebrew-grab-keys)
+; (global-set-key "\C-r" 'search-backward)
+; (global-set-key "\C-s" 'search-forward) ;;Good luck using this one!
+; (define-key esc-map "s" 'search-forward)
+
+;; Here are some constants:
+ (set-variable 'hebrew-right-margin 77) ;; Can't use 80, so we may as
+ ;; well leave some extra room.
+
+;;(Fine, so it was only ONE constant....)
+
+
+;; Now we take control over some of the major editing keys. The
+;; backspace has to delete the correct char. in Hebrew mode; return has
+;; know what to do with Hebrew, etc. I've left the arrow keys, but ^B,
+;; and ^F still mean "backward" and "forward." With ^A/^E I've got a
+;; problem, because ^A (to me) is "all the way left" but ^E is "end,"
+;; both of which would move to the left in Hebrew mode. Also
+;; "end-of-line" in Hebrew-mode has to ignore the spaces used to
+;; right-align the line. It would be silly for ^A to do that, so ^A is
+;; always "beginning-of-line," and ^E always "end-of-line." I've also
+;; left some of the more obscure commands/keys, ("obscure" being defined
+;; as things I don't use), because I'm too lazy to change them. ("Left
+;; as an excercise to the reader....")
+
+ (define-key global-map "\C-h" 'bilingual-backspace)
+ ;; I'd like to use \177, but Emacs ignores
+ ;; me when I try. (Don't know why.)
+ ;; But Real Emacs-Users don't need help
+ ;; (^h) anyway....
+
+ (define-key global-map "\C-i" 'bilingual-tab)
+ (define-key global-map "\C-k" 'bilingual-kill-line)
+ (define-key global-map "\C-m" 'bilingual-return)
+ (define-key esc-map "d" 'bilingual-kill-word)
+ (define-key global-map "\C-a" 'bilingual-beginning-of-line)
+ (define-key global-map "\C-e" 'bilingual-end-of-line)
+ (define-key global-map "\C-f" 'bilingual-forward-char)
+ (define-key global-map "\C-b" 'bilingual-backward-char)
+ (define-key global-map "\C-d" 'bilingual-delete-char)
+
+
+;; Be user friendly:
+ (message
+"Use C-Xh for Hebrew, M-h for Hebrew mode. .úéøáò ãåîì M-h ,úéøáòì C-Xh ù÷ä")
+ (setq hebrew-keyboard ()) ;;start with English keyboard
+ (setq hebrew-mode ()) ;;and in English mode
+ )
+
+
+(defun bilingual-return ()
+ "In English mode, just return. In Hebrew mode, do the right thing."
+ (interactive)
+ (if (not hebrew-keyboard)
+ (newline)
+ (left-align-line)
+ (let ((here (point)))
+ (beginning-of-line)
+ (copy-to-register 'a (point) here t)
+ (if (eq hebrew-mode t)
+ (right-align-line)
+ (left-align-line))
+ (end-of-line)
+ (newline)
+ (insert-register 'a)
+ (if (eq hebrew-mode t)
+ (right-align-line)
+ (left-align-line))
+ (end-of-line))))
+
+(defun bilingual-beginning-of-line ()
+ "Move to the beginning of the current line, remembering that ``beginning
+of line'' is language-dependent"
+ (interactive)
+ (if (not hebrew-mode)
+ (beginning-of-line)
+ (end-of-line)
+ (backward-char 1)))
+
+
+
+(defun bilingual-end-of-line ()
+ "Move to the end of the current line, remembering that ``end of
+line'' is language-dependent"
+ (interactive)
+ (if (not hebrew-mode)
+ (end-of-line)
+ (beginning-of-line)
+ (while (looking-at "[ \t]")
+ (forward-char 1))
+ (if (not (bolp))
+ (backward-char 1))))
+
+
+(defun bilingual-forward-char (arg)
+ "forward-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (forward-char arg)
+ (backward-char arg)))
+
+(defun bilingual-backward-char (arg)
+ "backward-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (backward-char arg)
+ (forward-char arg)))
+
+(defun bilingual-delete-char (arg)
+ "delete-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (delete-char arg)
+ (delete-char 1)
+ (backward-char 1)
+ (if (eq hebrew-mode t)
+ (right-align-line))))
+
+
+
+(defun bilingual-kill-word (arg)
+ "Kill the rest of the current word, remembering that ``the rest''
+is language dependent"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (kill-word arg)
+ (backward-kill-word arg))) ;;nothing to it! (but this doesn't work)
+
+(defun bilingual-kill-line ()
+ "Kill the rest of the line, remembering that ``the rest'' is language
+dependant"
+ (interactive)
+ (if (not hebrew-mode)
+ (kill-line)
+;;We'd like to use "kill-line -1" here, but it doesn't work right.
+ (if (not (eolp))
+ (forward-char 1))
+ (kill-region (point) ;; But let's copy as much of the code in
+ ;; simple.el as possible
+ (progn
+ (if (bobp)
+ (signal 'beginning-of-buffer nil)
+ (beginning-of-line)
+ (if (looking-at "$")
+ (progn
+ (forward-line -1)
+ (end-of-line))))
+ (point)))
+ (right-align-line)))
+
+
+(defun bilingual-tab ()
+ "right-align-line"
+ (interactive)
+ (if (eq hebrew-keyboard t)
+ (right-align-line)
+ (left-align-line)))
+
+(defun bilingual-backspace () ;;This is mapped to ^h
+ "Backspace that knows that hebrew goes right-to-left."
+ (interactive)
+ (if (not hebrew-keyboard)
+ (delete-backward-char 1)
+ (if (not (eolp))
+ (forward-char 1))
+ (delete-backward-char -1)
+ (if (not (bolp))
+ (backward-char 1)))
+ (if (eq hebrew-mode t)
+ (right-align-line)))
+
+
+(defun goto-rl-mode ()
+ "Go to right-to-left mode (tty)"
+ (interactive)
+ (send-string-to-terminal right-to-left-code)
+ (redraw-display))
+
+(defun goto-lr-mode ()
+ "Go to left-to-right mode (tty)"
+ (interactive)
+ (send-string-to-terminal left-to-right-code)
+ (redraw-display))
+
+(defun goto-tty-hebrew-mode ()
+ "Go to Hebrew mode (tty)"
+ (interactive)
+ (send-string-to-terminal hebrew-keyboard-code))
+
+(defun goto-tty-english-mode ()
+ "Go to English mode (tty)"
+ (interactive)
+ (send-string-to-terminal english-keyboard-code))
+
+(defun goto-hebrew-keyboard ()
+ "Go to Hebrew keyboard (as far as Emacs is concerned)"
+ (interactive)
+ (setq hebrew-keyboard t)
+ (message "úéøáò úãì÷î (Hebrew keyboard) "))
+
+(defun goto-english-keyboard ()
+ "Go to English keyboard (as far as Emacs is concerned)"
+ (interactive)
+ (setq hebrew-keyboard ())
+ (message "English keyboard (úéìâðà úãì÷î)"))
+
+(defun goto-hebrew-mode ()
+ "Go to Hebrew mode (not a ``mode'' in the Emacs sense of the word, though)"
+ (interactive)
+ (setq hebrew-mode t)
+ (setq hebrew-keyboard t)
+ (message "úéøáò ãåî (Hebrew mode)"))
+
+(defun goto-english-mode ()
+ "Go to English mode (not a real ``mode'')"
+ (interactive)
+ (setq hebrew-mode ())
+ (setq hebrew-keyboard ())
+ (message "English mode (úéìâðà ãåî)"))
+
+
+
+(defun hebrew ()
+ "Basic definitions and key bindings"
+ (interactive)
+ (global-set-key "\C-xx" 'call-last-kbd-macro)
+ (global-set-key "\C-xz" 'goto-rl-mode)
+ (global-set-key "\C-xq" 'goto-lr-mode)
+ (global-set-key "\C-xh" 'goto-hebrew-keyboard)
+ (global-set-key "\C-xe" 'goto-english-keyboard)
+ (define-key esc-map "h" 'goto-hebrew-mode)
+ (define-key esc-map "e" 'goto-english-mode)
+ (global-set-key "\C-x\C-h" 'back-to-hebrew-keyboard)
+ (global-set-key "\C-x\C-e" 'back-to-english-keyboard)
+ (hebrew-set-up))
+
+
+
+(defun bilingual-insert-char (heb eng)
+ "Insert either the Hebrew or English code for the key pressed"
+ (interactive "P")
+ (if (not hebrew-keyboard)
+ (progn
+ (self-insert-command (prefix-numeric-value eng))
+ (if (eq hebrew-mode t)
+ (right-align-line)))
+ (if (eolp)
+ (insert " ")
+ (forward-char 1))
+ (insert heb)
+ (backward-char 2)
+ (if (eq hebrew-mode t)
+ (right-align-line))))
+
+(defun right-align-line ()
+ "Add spaces at the beginning of the current line so that the end is
+aligned with the fill column."
+ (interactive)
+ (progn ;;save-excursion doesn't always work. I wonder why not.
+ (let ((col (current-column)))
+ (end-of-line)
+ (let ((ecol (current-column)) (ecol2 (current-column)))
+ (beginning-of-line)
+ (while (and (looking-at "[ \t]") (> ecol hebrew-right-margin))
+ (delete-char 1)
+ (setq ecol (- ecol 1)))
+ (insert-char ?\ (- hebrew-right-margin ecol ))
+;;if save-excursion worked above, we could omit this:
+ (beginning-of-line) ;;
+ (forward-char (- hebrew-right-margin (- ecol2 col)))))))
+
+(defun left-align-line ()
+ "Delete leading white space so as to left-align the current line."
+ (interactive)
+ (let ((col (current-column)) (deleted 0))
+ (beginning-of-line)
+ (while (looking-at "[ \t]")
+ (delete-char 1)
+ (setq deleted (+ deleted 1)))
+ (if (> (- col deleted) 0)
+ (forward-char (- col deleted)))))
+
+
+;; Now lets make some commands for skipping over newly inserted text
+;; in the "other" language. The idea is to make the inseration of Hebrew
+;; words in an English document and vice versa as easy as possible.
+;; I wonder what to do with punctuation here....
+
+(defun back-to-english-keyboard ()
+ "Go back to the English keyboard after inserting a Hebrew segment of text.
+Skip over the Hebrew text."
+ (interactive)
+ (goto-english-keyboard) ;; that's the easy part.
+ (if (looking-at " ") ;; Assume the space was inserted when we..
+ (delete-char 1)) ;; ..went into Hebrew mode.
+ (if (not (eolp)) ;; Now move past the Hebrew
+ (while (looking-at "[íïõêóúùø÷öôòñðîìëéèçæåäãâáà]")
+ (forward-char 1))))
+
+(defun back-to-hebrew-keyboard ()
+ "Go back to the Hebrew keyboard after inserting an English segment of
+text. Skip of the English text."
+ (interactive)
+ (goto-hebrew-keyboard) ;; that's the easy part.
+ (if (not (bolp))
+ (backward-char 1)) ;; we're probably on a space or something.
+ (if (not (bolp)) ;; Now move past the English
+ (while (looking-at
+ "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\$=<>\\()]")
+ (backward-char 1)))) ;; I threw the dollar in --------^
+ ;; because (La)TeX uses it so often.
+
+(defun fix-backspace ()
+ "Make backspace key 'bilingual-backspace"
+ (interactive)
+ (global-set-key "\177" 'bilingual-backspace))
+
+
+(global-set-key "\C-xz" 'fix-backspace)
+
+;; This is the last line of "hebrew.el" ìù äðåøçàä äøåùä úàæ
+
+;; to-do:
+;; add quote-char
+;; fix backspace over nl
+;; fix delete at eolp \ No newline at end of file
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacs b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacs
new file mode 100644
index 0000000000..6138314ac0
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/hemacs
Binary files differ
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el
new file mode 100644
index 0000000000..3403ba96cb
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/isearch.el
@@ -0,0 +1,376 @@
+;; Incremental search
+;; Copyright (C) 1985, 1986 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.
+
+; in loaddefs.el
+;(defvar search-last-string ""
+; "Last string search for by a search command.
+;This does not include direct calls to the primitive search functions,
+;and does not include searches that are aborted.")
+;(defvar search-last-regexp ""
+; "Last string searched for by a regexp search command.
+;This does not include direct calls to the primitive search functions,
+;and does not include searches that are aborted.")
+;
+;(defconst search-repeat-char ?\C-s
+; "Character to repeat incremental search forwards.")
+;(defconst search-reverse-char ?\C-r
+; "Character to repeat incremental search backwards.")
+;(defconst search-exit-char ?\e
+; "Character to exit incremental search.")
+;(defconst search-delete-char ?\177
+; "Character to delete from incremental search string.")
+;(defconst search-quote-char ?\C-q
+; "Character to quote special characters for incremental search.")
+;(defconst search-yank-word-char ?\C-w
+; "Character to pull next word from buffer into search string.")
+;(defconst search-yank-line-char ?\C-y
+; "Character to pull rest of line from buffer into search string.")
+;(defconst search-exit-option t
+; "Non-nil means random control characters terminate incremental search.")
+;
+;(defvar search-slow-window-lines 1
+; "*Number of lines in slow search display windows.")
+;(defconst search-slow-speed 1200
+; "*Highest terminal speed at which to use \"slow\" style incremental search.
+;This is the style where a one-line window is created to show the line
+;that the search has reached.")
+
+;; This function does all the work of incremental search.
+;; The functions attached to ^R and ^S are trivial,
+;; merely calling this one, but they are always loaded by default
+;; whereas this file can optionally be autoloadable.
+;; This is the only entry point in this file.
+
+(defun isearch (forward &optional regexp)
+ (let ((search-string "")
+ (search-message "")
+ (cmds nil)
+ (success t)
+ (wrapped nil)
+ (barrier (point))
+ adjusted
+ (invalid-regexp nil)
+ (slow-terminal-mode (and (<= (baud-rate) search-slow-speed)
+ (> (window-height)
+ (* 4 search-slow-window-lines))))
+ (other-end nil) ;Start of last match if fwd, end if backwd.
+ (small-window nil) ;if t, using a small window
+ (found-point nil) ;to restore point from a small window
+ ;; This is the window-start value found by the search.
+ (found-start nil)
+ (opoint (point))
+ (inhibit-quit t)) ;Prevent ^G from quitting immediately.
+ (isearch-push-state)
+ (save-window-excursion
+ (catch 'search-done
+ (while t
+ (or (>= unread-command-char 0)
+ (progn
+ (or (input-pending-p)
+ (isearch-message))
+ (if (and slow-terminal-mode
+ (not (or small-window (pos-visible-in-window-p))))
+ (progn
+ (setq small-window t)
+ (setq found-point (point))
+ (move-to-window-line 0)
+ (let ((window-min-height 1))
+ (split-window nil (if (< search-slow-window-lines 0)
+ (1+ (- search-slow-window-lines))
+ (- (window-height)
+ (1+ search-slow-window-lines)))))
+ (if (< search-slow-window-lines 0)
+ (progn (vertical-motion (- 1 search-slow-window-lines))
+ (set-window-start (next-window) (point))
+ (set-window-hscroll (next-window)
+ (window-hscroll))
+ (set-window-hscroll (selected-window) 0))
+ (other-window 1))
+ (goto-char found-point)))))
+ (let ((char (if quit-flag
+ ?\C-g
+ (read-char))))
+ (setq quit-flag nil adjusted nil)
+ ;; Meta character means exit search.
+ (cond ((and (>= char 128)
+ search-exit-option)
+ (setq unread-command-char char)
+ (throw 'search-done t))
+ ((eq char search-exit-char)
+ ;; Esc means exit search normally.
+ ;; Except, if first thing typed, it means do nonincremental
+ (if (= 0 (length search-string))
+ (nonincremental-search forward regexp))
+ (throw 'search-done t))
+ ((= char ?\C-g)
+ ;; ^G means the user tried to quit.
+ (ding)
+ (discard-input)
+ (if success
+ ;; If search is successful, move back to starting point
+ ;; and really do quit.
+ (progn (goto-char opoint)
+ (signal 'quit nil))
+ ;; If search is failing, rub out until it is once more
+ ;; successful.
+ (while (not success) (isearch-pop))))
+ ((or (eq char search-repeat-char)
+ (eq char search-reverse-char))
+ (if (eq forward (eq char search-repeat-char))
+ ;; C-s in forward or C-r in reverse.
+ (if (equal search-string "")
+ ;; If search string is empty, use last one.
+ (setq search-string
+ (if regexp
+ search-last-regexp search-last-string)
+ search-message
+ (mapconcat 'text-char-description
+ search-string ""))
+ ;; If already have what to search for, repeat it.
+ (or success
+ (progn (goto-char (if forward (point-min) (point-max)))
+ (setq wrapped t))))
+ ;; C-s in reverse or C-r in forward, change direction.
+ (setq forward (not forward)))
+ (setq barrier (point)) ; For subsequent \| if regexp.
+ (setq success t)
+ (or (equal search-string "")
+ (isearch-search))
+ (isearch-push-state))
+ ((= char search-delete-char)
+ ;; Rubout means discard last input item and move point
+ ;; back. If buffer is empty, just beep.
+ (if (null (cdr cmds))
+ (ding)
+ (isearch-pop)))
+ (t
+ (cond ((or (eq char search-yank-word-char)
+ (eq char search-yank-line-char))
+ ;; ^W means gobble next word from buffer.
+ ;; ^Y means gobble rest of line from buffer.
+ (let ((word (save-excursion
+ (and (not forward) other-end
+ (goto-char other-end))
+ (buffer-substring
+ (point)
+ (save-excursion
+ (if (eq char search-yank-line-char)
+ (end-of-line)
+ (forward-word 1))
+ (point))))))
+ (setq search-string (concat search-string word)
+ search-message
+ (concat search-message
+ (mapconcat 'text-char-description
+ word "")))))
+ ;; Any other control char =>
+ ;; unread it and exit the search normally.
+ ((and search-exit-option
+ (/= char search-quote-char)
+ (or (= char ?\177)
+ (and (< char ? ) (/= char ?\t) (/= char ?\r))))
+ (setq unread-command-char char)
+ (throw 'search-done t))
+ (t
+ ;; Any other character => add it to the
+ ;; search string and search.
+ (cond ((= char search-quote-char)
+ (setq char (read-quoted-char
+ (isearch-message t))))
+ ((= char ?\r)
+ ;; unix braindeath
+ (setq char ?\n)))
+ (setq search-string (concat search-string
+ (char-to-string char))
+ search-message (concat search-message
+ (text-char-description char)))))
+ (if (and (not success)
+ ;; unsuccessful regexp search may become
+ ;; successful by addition of characters which
+ ;; make search-string valid
+ (not regexp))
+ nil
+ ;; If a regexp search may have been made more
+ ;; liberal, retreat the search start.
+ ;; Go back to place last successful search started
+ ;; or to the last ^S/^R (barrier), whichever is nearer.
+ (and regexp success cmds
+ (cond ((memq char '(?* ??))
+ (setq adjusted t)
+ (let ((cs (nth (if forward
+ 5 ; other-end
+ 2) ; saved (point)
+ (car (cdr cmds)))))
+ ;; (car cmds) is after last search;
+ ;; (car (cdr cmds)) is from before it.
+ (setq cs (or cs barrier))
+ (goto-char
+ (if forward
+ (max cs barrier)
+ (min cs barrier)))))
+ ((eq char ?\|)
+ (setq adjusted t)
+ (goto-char barrier))))
+ ;; In reverse regexp search, adding a character at
+ ;; the end may cause zero or many more chars to be
+ ;; matched, in the string following point.
+ ;; Allow all those possibiities without moving point as
+ ;; long as the match does not extend past search origin.
+ (if (and regexp (not forward) (not adjusted)
+ (condition-case ()
+ (looking-at search-string)
+ (error nil))
+ (<= (match-end 0) (min opoint barrier)))
+ (setq success t invalid-regexp nil
+ other-end (match-end 0))
+ ;; Not regexp, not reverse, or no match at point.
+ (if (and other-end (not adjusted))
+ (goto-char (if forward other-end
+ (min opoint barrier (1+ other-end)))))
+ (isearch-search)))
+ (isearch-push-state))))))
+ (setq found-start (window-start (selected-window)))
+ (setq found-point (point)))
+ (if (> (length search-string) 0)
+ (if regexp
+ (setq search-last-regexp search-string)
+ (setq search-last-string search-string)))
+ ;; If there was movement, mark the starting position.
+ ;; Maybe should test difference between and set mark iff > threshold.
+ (if (/= (point) opoint)
+ (push-mark opoint)
+ (message ""))
+ (if small-window
+ (goto-char found-point)
+ ;; Exiting the save-window-excursion clobbers this; restore it.
+ (set-window-start (selected-window) found-start t))))
+
+(defun isearch-message (&optional c-q-hack ellipsis)
+ ;; If about to search, and previous search regexp was invalid,
+ ;; check that it still is. If it is valid now,
+ ;; let the message we display while searching say that it is valid.
+ (and invalid-regexp ellipsis
+ (condition-case ()
+ (progn (re-search-forward search-string (point) t)
+ (setq invalid-regexp nil))
+ (error nil)))
+ ;; If currently failing, display no ellipsis.
+ (or success (setq ellipsis nil))
+ (let ((m (concat (if success "" "failing ")
+ (if wrapped "wrapped ")
+ (if regexp "regexp " "")
+ "I-search"
+ (if forward ": " " backward: ")
+ search-message
+ (if c-q-hack "^Q" "")
+ (if invalid-regexp
+ (concat " [" invalid-regexp "]")
+ ""))))
+ (aset m 0 (upcase (aref m 0)))
+ (let ((cursor-in-echo-area ellipsis))
+ (if c-q-hack m (message "%s" m)))))
+
+(defun isearch-pop ()
+ (setq cmds (cdr cmds))
+ (let ((cmd (car cmds)))
+ (setq search-string (car cmd)
+ search-message (car (cdr cmd))
+ success (nth 3 cmd)
+ forward (nth 4 cmd)
+ other-end (nth 5 cmd)
+ invalid-regexp (nth 6 cmd)
+ wrapped (nth 7 cmd)
+ barrier (nth 8 cmd))
+ (goto-char (car (cdr (cdr cmd))))))
+
+(defun isearch-push-state ()
+ (setq cmds (cons (list search-string search-message (point)
+ success forward other-end invalid-regexp
+ wrapped barrier)
+ cmds)))
+
+(defun isearch-search ()
+ (isearch-message nil t)
+ (condition-case lossage
+ (let ((inhibit-quit nil))
+ (if regexp (setq invalid-regexp nil))
+ (setq success
+ (funcall
+ (if regexp
+ (if forward 're-search-forward 're-search-backward)
+ (if forward 'search-forward 'search-backward))
+ search-string nil t))
+ (if success
+ (setq other-end
+ (if forward (match-beginning 0) (match-end 0)))))
+ (quit (setq unread-command-char ?\C-g)
+ (setq success nil))
+ (invalid-regexp (setq invalid-regexp (car (cdr lossage)))
+ (if (string-match "\\`Premature \\|\\`Unmatched \\|\\`Invalid "
+ invalid-regexp)
+ (setq invalid-regexp "incomplete input"))))
+ (if success
+ nil
+ ;; Ding if failed this time after succeeding last time.
+ (and (nth 3 (car cmds))
+ (ding))
+ (goto-char (nth 2 (car cmds)))))
+
+;; This is called from incremental-search
+;; if the first input character is the exit character.
+;; The interactive-arg-reader uses free variables `forward' and `regexp'
+;; which are bound by `incremental-search'.
+
+;; We store the search string in `search-string'
+;; which has been bound already by `incremental-search'
+;; so that, when we exit, it is copied into `search-last-string'.
+
+(defun nonincremental-search (forward regexp)
+ (let (message char function string inhibit-quit
+ (cursor-in-echo-area t))
+ ;; Prompt assuming not word search,
+ (setq message (if regexp
+ (if forward "Regexp search: "
+ "Regexp search backward: ")
+ (if forward "Search: " "Search backward: ")))
+ (message "%s" message)
+ ;; Read 1 char and switch to word search if it is ^W.
+ (setq char (read-char))
+ (if (eq char search-yank-word-char)
+ (setq message (if forward "Word search: " "Word search backward: "))
+ ;; Otherwise let that 1 char be part of the search string.
+ (setq unread-command-char char))
+ (setq function
+ (if (eq char search-yank-word-char)
+ (if forward 'word-search-forward 'word-search-backward)
+ (if regexp
+ (if forward 're-search-forward 're-search-backward)
+ (if forward 'search-forward 'search-backward))))
+ ;; Read the search string with corrected prompt.
+ (setq string (read-string message))
+ ;; Empty means use default.
+ (if (= 0 (length string))
+ (setq string search-last-string)
+ ;; Set last search string now so it is set even if we fail.
+ (setq search-last-string string))
+ ;; Since we used the minibuffer, we should be available for redo.
+ (setq command-history (cons (list function string) command-history))
+ ;; Go ahead and search.
+ (funcall function string)))
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme
new file mode 100644
index 0000000000..c7898c9d6b
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/readme
@@ -0,0 +1,52 @@
+How to install hemacs (Hebrew Emacs) on X windows?
+--------------------------------------------------
+
+1. If you have a sparc workstation, you can use the exe file hemacs.
+ It is contained here; huji users can also copy it from
+ sunrise:/usr/huji.
+
+ Otherwise we have to recompile. See the available 3 versions
+ yossi/ alex/ hoffman/ .
+
+2. Install the hebrew support:
+ Copy the heb*.snf files to /X11/lib/fonts/misc
+ Note that font files having the suffix .pcf are suitable
+ for version 5 of Xwindows.
+
+ Then perform (I guess you will have to be a super user)
+ mkfontdir
+ a new fonts.dir file will be created, containing lines
+ starting with heb.....
+
+ Copy the new lines to
+ fonts.alias
+ while omitting suffix .snf from the font's name.
+ and then do
+ xset fp rehash
+ (or,alternatively, xset +fp /X11/lib/fonts/misc)
+
+3. hemacs has to load the hebrew library.
+ Copy the library hebrew.el to /usr/local/emacs/hlisp
+
+ Apart from that, copy the file isearch.el to /usr/local/emacs/hlisp
+
+4. Copy the file .emacs to your home directory.
+ It contains the definition of ESC M for hebrew-english toggle.
+
+5. Enter hemacs by typing
+ hemacs -fn heb10x20
+
+ Inside hemacs, load the hebrew library by typing
+ esc-x load-l
+ and as an answer to the question: Load Library: enter hebrew
+
+ In hemacs, do esc x hebrew-mode
+ and then esc m for change of direction.
+
+ ----------------
+ Outside emacs, you do xterm with -fn heb10x20 to get a window
+ which displays Hebrew.
+
+
+-------------------------------------------------------------------
+Rama -- rama@cc.huji.ac.il May 26, 1992.
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s
new file mode 100644
index 0000000000..66fb3d4962
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/s
@@ -0,0 +1,461 @@
+begin 640 hebrew.el
+M"CL[(#X^+E=!4DY)3D<N/#P@(%1H:7,@9FEL92!C;VYT86EN<R`H;F]N+6%S
+M8VEI*2!C:&%R<R!W:71H('1H92!H:6=H+6]R9&5R"CL[(&)I="!S970N("!-
+M;W-T(&UA:6QE<G,@=VEL;"!C:&]K92!O;B!I="X*"@H[.R!F:6QE(")H96)R
+M97<N96PB('9E<B`P+C@*.SL@;&%S="!M;V1I9FEE9"!*86XN(#(@,3DY,@H*
+M.SL@2&5B<F5W('-U<'!O<G0@9F]R($5M86-S+B`*.SL@0V]P>7)I9VAT("AC
+M*2`Q.3DP+3DR(&)Y($IO96P@32X@2&]F9FUA;BX*.SL*.SL@("TM/B`@5&AI
+M<R!P<F]J96-T(&ES(&1E9&EC871E9"!T;R!/<FYA($]K;W5N969F+"!W:&\L
+M(&%G86EN<W0@;7D*.SL@("`@("`@=VEL;"P@:6YS:7-T960@;VX@=&5A8VAI
+M;F<@;64@16UA8W,N"@H*"CL[(%1(25,@25,@02!B87-I8R!S=7!P;W)T('!A
+M8VMA9V4@9F]R(&5D:71I;F<@2&5B<F5W('=I=&@@16UA8W,N("!)=`H[.R!A
+M<W-U;65S('1H92!K97EB;V%R9"!L87EO=70@;V8@=&AE(%94*B!S97)I97,@
+M9F]R('1H92!P=7)P;W-E<R!O9@H[.R!M87!P:6YG($5N9VQI<V@@:V5Y<W1R
+M;VME<R!T;R!T:&5I<B!(96)R97<@97%U:79I;&5N=',N("!)="!A;'-O"CL[
+M(&%S<W5M97,@=&AE(&]U='!U="!H87)D=V%R92!I<R!C;VUP871I8FQE('=I
+M=&@@=&AE(%94*B!S97)I97,@=7-E9`H[.R!I;B!)<W)A96PL(&EN('1H870@
+M=&AE(&AI9V@M;W)D97(@8FET(&ES(&%S<W5M960@=&\@:6YD:6-A=&4*.SL@
+M2&5B<F5W.R!)(&)E;&EE=F4@=&AI<R!I<R!I;F-O;7!A=&EB;&4@=VET:"!T
+M:&4@1$]3('-T86YD87)D(&9O<@H[.R!H96)R97<N("!4:&4@<&%C:V%G92!D
+M;V5S(&YO="!U<V4@=&AE(')I9VAT+71O+6QE9G0@9F%C:6QI=&5S(&]F"CL[
+M('1H92!65"H@=&5R;6EN86QS+"!S;R!A;GD@=&5R;6EN86P@=&AA="!C;VYV
+M97)T<R!C:&%R86-T97)S(#XQ,C@*.SL@9&5C:6UA;"!T;R!(96)R97<@:7,@
+M<W5P<&]R=&5D+B`@06X@14=!($AE8G)E=R!F;VYT(&-O;7!A=&EB;&4@=VET
+M:`H[.R!T:&ES('!A8VMA9V4@:7,@879A:6QA8FQE(&9O<B!T:&4@24)-+@H*
+M.SL@5&\@=V]R:R!P<F]P97)L>2P@=&AE(&9O;&QO=VEN9R!F:6QE<R!I;B!%
+M;6%C<R`Q."YX>"!M=7-T(&)E"CL[(&UO9&EF:65D.@H[.PH[.R`@("`@>&1I
+M<W`N8PH[.R`@("`@:6YD96YT+F,*"CL[(%EO=2!C86X@=7-E('1H:7,@<&%C
+M:V%G92!W:71H('1H92!U;FUO9&EF:65D(&9I;&5S+"!B=70@=&AE($AE8G)E
+M=PH[.R!L971T97)S('=I;&P@87!P96%R(&5N8V]D960@87,@7'AX>"X@($D@
+M=6YD97)S=&%N9"!T:&%T('9E<BX@(#$Y+C`P"CL[('=I;&P@:&%V92!A;B!O
+M<'1I;VX@=&\@<W5P<&]R="`X+6)I="UC;&5A;B!O<&5R871I;VXL(&%N9"!S
+M;R!W:6QL"CL[('-U<'!O<G0@=&AI<R!P86-K86=E+B`@1&5M86-S('-U<'!O
+M<G1S(#@M8FET+6-L96%N(&]P97)A=&EO;B!V:6$*.SL@=&AE('1O9V=L92UP
+M87-S."!C;VUM86YD+@H*.SL@0W5R<F5N=&QY+"!F;W5R(&UA:F]R(&-O;6UA
+M;F1S(&%R92!S=7!P;&EE9#H@0RU8:"!A;F0@0RU892P@=VAI8V@*.SL@<W=I
+M=&-H(&)A8VL@86YD(&9O<G1H(&)E='=E96X@2&5B<F5W(&%N9"!%;F=L:7-H
+M(&ME>6)O87)D<RP@86YD($TM:`H[.R!A;F0@32UE+"!W:&EC:"!S=VET8V@@
+M8F%C:R!A;F0@9F]R=&@@8F5T=V5E;B!(96)R97<@86YD($5N9VQI<V@*.SL@
+M(FUO9&5S+"(@=VAI8V@@87)E(&YO="!M;V1E<R!I;B!T:&4@16UA8W,@<V5N
+M<V4@;V8@=&AE('=O<F0L(&)U=`H[.R!R871H97(@9&5T97)M:6YE(&EF('1H
+M92!M87)G:6X@:7,@=&\@8F4@=&AE(&QE9G0@;W(@<FEG:'0@<VED92!O9@H[
+M.R!T:&4@<V-R965N+"!A;6]N9R!O=&AE<B!D:7)E8W1I;VXM<W!E8VEF:6,@
+M<&%R86UA=&5R<RX*"CL[($5M86-S('5S97,@=&AE(&5I9VAT:"!B:70@=&\@
+M:6YD:6-A=&4@2&5B<F5W(&QE='1E<G,N("!-;W-T('1E>'0*.SL@9F]R;6%T
+M=&5R<R`H5&58+"`J<F]F9BP@971C+BD@=7-E(#<M8FET(&-H87)A8W1E<B!C
+M;V1E<RX*.SL@061D:71I;VYA;&QY+"!T:&5S92!F;W)M871T97)S('5S=6%L
+M;'D@<F5Q=6ER92!(96)R97<@=&\@87!P96%R(&EN"CL[('1I;64M;W)D97(N
+M("!!('!R92UP<F]C97-S;W(@;75S="!B92!R=6X@8F5F;W)E('1H92!F;W)M
+M871T97(@=&\*.SL@969F96-T('1H97-E(&-H86YG97,N"@H*"CL[($D@9&]N
+M)W0@<F5A;&QY(&MN;W<@;&ES<"!O<B!%;6%C<RP@;W(@=VAA="!))VT@9&]I
+M;F<[(&-O;6UE;G1S(&%N9`H[.R!S=6=G97-T:6]N<R!A<F4@=V5L8V]M93H*
+M.SL@("`@(&IO96Q`=V%M+G5M9"YE9'4@("`@("`@("`@/"TM($EN=&5R;F5T
+M"CL[("`@("`W,C<P,"PT,#(@("`@("`@("`@("`@("`@(#PM+2!#;VUP=7-E
+M<G9E"CL[("`@("`W,C<P,"XT,#)`8V]M<'5S97)V92YC;VT@(#PM+2!#;VUP
+M=7-E<G9E(&9R;VT@26YT97)N970*"CL[(%1H:7,@<&%C:V%G92!I<R!N;W0@
+M9FEN:7-H960N("!4:&4@8G5G<R!H97)E:6X@9&5F>2!E;G5M97)A=&EO;BX*
+M"BAD969U;B!H96)R97<M9W)A8BUK97ES("@I"B`@(G1A:V4@8V]N=')O;"!O
+M9B!T:&4@:V5Y8F]A<F0@86YD(&%U=&\M9FEL;"XB"B`@*&EN=&5R86-T:79E
+M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B`B("=L970M<W!A8V4I"B`@
+M*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B82(@)VQE="UA*0H@("AD969I;F4M
+M:V5Y(&=L;V)A;"UM87`@(F(B("=L970M8BD*("`H9&5F:6YE+6ME>2!G;&]B
+M86PM;6%P(")C(B`G;&5T+6,I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B
+M9"(@)VQE="UD*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(F4B("=L970M
+M92D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")F(B`G;&5T+68I"B`@*&1E
+M9FEN92UK97D@9VQO8F%L+6UA<"`B9R(@)VQE="UG*0H@("AD969I;F4M:V5Y
+M(&=L;V)A;"UM87`@(F@B("=L970M:"D*("`H9&5F:6YE+6ME>2!G;&]B86PM
+M;6%P(")I(B`G;&5T+6DI"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B:B(@
+M)VQE="UJ*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(FLB("=L970M:RD*
+M("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")L(B`G;&5T+6PI"B`@*&1E9FEN
+M92UK97D@9VQO8F%L+6UA<"`B;2(@)VQE="UM*0H@("AD969I;F4M:V5Y(&=L
+M;V)A;"UM87`@(FXB("=L970M;BD*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P
+M(")O(B`G;&5T+6\I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B<"(@)VQE
+M="UP*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(G$B("=L970M<2D*("`H
+M9&5F:6YE+6ME>2!G;&]B86PM;6%P(")R(B`G;&5T+7(I"B`@*&1E9FEN92UK
+M97D@9VQO8F%L+6UA<"`B<R(@)VQE="US*0H@("AD969I;F4M:V5Y(&=L;V)A
+M;"UM87`@(G0B("=L970M="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")U
+M(B`G;&5T+74I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B=B(@)VQE="UV
+M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(G<B("=L970M=RD*("`H9&5F
+M:6YE+6ME>2!G;&]B86PM;6%P(")X(B`G;&5T+7@I"B`@*&1E9FEN92UK97D@
+M9VQO8F%L+6UA<"`B>2(@)VQE="UY*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM
+M87`@(GHB("=L970M>BD*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(L(B`G
+M;&5T+6-O;6UA*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(CLB("=L970M
+M<V5M:2D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(Z(B`G;&5T+6-O;&]N
+M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(BXB("=L970M<&5R:6]D*0H@
+M("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B\B("=L970M<VQA<V@I"B`@*&1E
+M9FEN92UK97D@9VQO8F%L+6UA<"`B)R(@)VQE="UA:6=U*0H@("AD969I;F4M
+M:V5Y(&=L;V)A;"UM87`@(F`B("=L970M9W)A=F4I"B`@*&1E9FEN92UK97D@
+M9VQO8F%L+6UA<"`B7%PB("=L970M8G-L87-H*0H@("AD969I;F4M:V5Y(&=L
+M;V)A;"UM87`@(BTB("=L970M:'EP:&5N*0H@("AD969I;F4M:V5Y(&=L;V)A
+M;"UM87`@(B$B("=L970M>&UA<FLI"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA
+M<"`B0"(@)VQE="UA="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(C(B`G
+M;&5T+7!O=6YD*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B0B("=L970M
+M9&]L;&%R*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B4B("=L970M<&5R
+M8V5N="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")>(B`G;&5T+6-A<G)A
+M="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(F(B`G;&5T+6%M<&5R<V%N
+M9"D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(J(B`G;&5T+6%S=&5R:7-K
+M*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(B@B("=L970M;'!A<F5N9"D*
+M("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(I(B`G;&5T+7)P87)E;F0I"B`@
+M*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B>R(@)VQE="UL8V)R86-E*0H@("AD
+M969I;F4M:V5Y(&=L;V)A;"UM87`@(GTB("=L970M<F-B<F%C92D*("`H9&5F
+M:6YE+6ME>2!G;&]B86PM;6%P(");(B`G;&5T+6QB<F%C92D*("`H9&5F:6YE
+M+6ME>2!G;&]B86PM;6%P(")=(B`G;&5T+7)B<F%C92D*("`H9&5F:6YE+6ME
+M>2!G;&]B86PM;6%P("(^(B`G;&5T+6=T*0H@("AD969I;F4M:V5Y(&=L;V)A
+M;"UM87`@(GXB("=L970M=&EL9&4I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA
+M<"`B*R(@)VQE="UP;'5S*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM87`@(BLB
+M("=L970M97%U86PI"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B/"(@)VQE
+M="UL="D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P("(_(B`G;&5T+7%U97-T
+M:6]N*2D*"@HH9&5F=6X@;&5T+7!L=7,@*"D*("`B8V]M;65N="(*("`H:6YT
+M97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B*R(@(BLB*2D*
+M"BAD969U;B!L970M97%U86P@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I
+M=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B/2(@(CTB*2D*"@HH9&5F
+M=6X@;&5T+71I;&1E("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@
+M("AB:6QI;F=U86PM:6YS97)T+6-H87(@(GXB(")^(BDI"@HH9&5F=6X@;&5T
+M+6=T("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U
+M86PM:6YS97)T+6-H87(@(CXB("(^(BDI"@HH9&5F=6X@;&5T+6QT("@I"B`@
+M(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T
+M+6-H87(@(CPB("(\(BDI"@HH9&5F=6X@;&5T+7%U97-T:6]N("@I"B`@(F-O
+M;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H
+M87(@(C\B("(_(BDI"@HH9&5F=6X@;&5T+6AY<&AE;B`H*0H@(")C;VUM96YT
+M(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("(M
+M(B`B+2(I*0H**&1E9G5N(&QE="UX;6%R:R`H*0H@(")C;VUM96YT(@H@("AI
+M;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("(A(B`B(2(I
+M*0H**&1E9G5N(&QE="UA="`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV
+M92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R(")`(B`B0"(I*0H**&1E9G5N
+M(&QE="UP;W5N9"`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H
+M8FEL:6YG=6%L+6EN<V5R="UC:&%R("(C(B`B(R(I*0H**&1E9G5N(&QE="UD
+M;VQL87(@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN
+M9W5A;"UI;G-E<G0M8VAA<B`B)"(@(B0B*2D*"BAD969U;B!L970M<&5R8V5N
+M="`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L
+M+6EN<V5R="UC:&%R("(E(B`B)2(I*0H**&1E9G5N(&QE="UC87)R870@*"D*
+M("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E
+M<G0M8VAA<B`B7B(@(EXB*2D*"BAD969U;B!L970M86UP97)S86YD("@I"B`@
+M(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T
+M+6-H87(@(B8B("(F(BDI"@HH9&5F=6X@;&5T+6%S=&5R:7-K("@I"B`@(F-O
+M;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H
+M87(@(BHB("(J(BDI"@HH9&5F=6X@;&5T+6QP87)E;F0@*"D*("`B8V]M;65N
+M="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B
+M*"(@(B@B*2D*"BAD969U;B!L970M<G!A<F5N9"`H*0H@(")C;VUM96YT(@H@
+M("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("(I(B`B
+M*2(I*0H**&1E9G5N(&QE="UL8V)R86-E("@I"B`@(F-O;6UE;G0B"B`@*&EN
+M=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(GLB(")[(BDI
+M"@HH9&5F=6X@;&5T+7)C8G)A8V4@*"D*("`B8V]M;65N="(*("`H:6YT97)A
+M8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B?2(@(GTB*2D*"BAD
+M969U;B!L970M;&)R86-E("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E
+M*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(ELB(");(BDI"@HH9&5F=6X@
+M;&5T+7)B<F%C92`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H
+M8FEL:6YG=6%L+6EN<V5R="UC:&%R(")=(B`B72(I*0H**&1E9G5N(&QE="UC
+M;VQO;B`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG
+M=6%L+6EN<V5R="UC:&%R("(Z(B`B.B(I*0H*"BAD969U;B!L970M82`H*0H@
+M(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R
+M="UC:&%R(ODB(")A(BDI"BAD969U;B!L970M8B`H*0H@(")C;VUM96YT(@H@
+M("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+P(B`B
+M8B(I*0HH9&5F=6X@;&5T+6,@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I
+M=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`BX2(@(F,B*2D**&1E9G5N
+M(&QE="UD("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI
+M;F=U86PM:6YS97)T+6-H87(@(N(B(")D(BDI"BAD969U;B!L970M92`H*0H@
+M(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R
+M="UC:&%R("+W(B`B92(I*0HH9&5F=6X@;&5T+68@*"D*("`B8V]M;65N="(*
+M("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`BZR(@
+M(F8B*2D**&1E9G5N(&QE="UG("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T
+M:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(O(B(")G(BDI"BAD969U
+M;B!L970M:"`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL
+M:6YG=6%L+6EN<V5R="UC:&%R("+I(B`B:"(I*0HH9&5F=6X@;&5T+6D@*"D*
+M("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E
+M<G0M8VAA<B`B[R(@(FDB*2D**&1E9G5N(&QE="UJ("@I"B`@(F-O;6UE;G0B
+M"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(N<B
+M(")J(BDI"BAD969U;B!L970M:R`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C
+M=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+L(B`B:R(I*0HH9&5F
+M=6X@;&5T+6P@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I
+M;&EN9W5A;"UI;G-E<G0M8VAA<B`BZB(@(FPB*2D**&1E9G5N(&QE="UM("@I
+M"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS
+M97)T+6-H87(@(O8B(")M(BDI"BAD969U;B!L970M;B`H*0H@(")C;VUM96YT
+M(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+N
+M(B`B;B(I*0HH9&5F=6X@;&5T+6\@*"D*("`B8V]M;65N="(*("`H:6YT97)A
+M8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B[2(@(F\B*2D**&1E
+M9G5N(&QE="UP("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB
+M:6QI;F=U86PM:6YS97)T+6-H87(@(O0B(")P(BDI"BAD969U;B!L970M<2`H
+M*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN
+M<V5R="UC:&%R(")<7"(@(G$B*2D**&1E9G5N(&QE="UR("@I"B`@(F-O;6UE
+M;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@
+M(O@B(")R(BDI"BAD969U;B!L970M<R`H*0H@(")C;VUM96YT(@H@("AI;G1E
+M<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R("+C(B`B<R(I*0HH
+M9&5F=6X@;&5T+70@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@
+M*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`BX"(@(G0B*2D**&1E9G5N(&QE="UU
+M("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM
+M:6YS97)T+6-H87(@(N4B(")U(BDI"BAD969U;B!L970M=B`H*0H@(")C;VUM
+M96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L+6EN<V5R="UC:&%R
+M("+D(B`B=B(I*0HH9&5F=6X@;&5T+7<@*"D*("`B8V]M;65N="(*("`H:6YT
+M97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B)R(@(G<B*2D*
+M*&1E9G5N(&QE="UX("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@
+M("AB:6QI;F=U86PM:6YS97)T+6-H87(@(O$B(")X(BDI"BAD969U;B!L970M
+M>2`H*0H@(")C;VUM96YT(@H@("AI;G1E<F%C=&EV92D*("`H8FEL:6YG=6%L
+M+6EN<V5R="UC:&%R("+H(B`B>2(I*0HH9&5F=6X@;&5T+7H@*"D*("`B8V]M
+M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA
+M<B`BYB(@(GHB*2D*"BAD969U;B!L970M<W!A8V4@*"D*("`B8V]M;65N="(*
+M("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B("(@
+M(B`B*2D@("`[.T5N9VQI<V@@875T;RUF:6QL('=I;&P@8F4*"0D)"2`@("`@
+M.SMA=71O;6%T:6,N("!(96)R97<@875T;RUF:6QL(&ES"@D)"0D@("`@(#L[
+M<W1I;&P@82!P<F]B;&5M+@HH9&5F=6X@;&5T+6-O;6UA("@I"B`@(F-O;6UE
+M;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@
+M(OHB("(L(BDI"@HH9&5F=6X@;&5T+7-E;6D@*"D*("`B8V]M;65N="(*("`H
+M:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`B\R(@(CLB
+M*2D*"BAD969U;B!L970M<&5R:6]D("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R
+M86-T:79E*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(O4B("(N(BDI"@HH
+M9&5F=6X@;&5T+7-L87-H("@I"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E
+M*0H@("AB:6QI;F=U86PM:6YS97)T+6-H87(@(BXB("(O(BDI"@HH9&5F=6X@
+M;&5T+6%I9W4@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I
+M;&EN9W5A;"UI;G-E<G0M8VAA<B`B+"(@(B<B*2D*"BAD969U;B!L970M9W)A
+M=F4@*"D*("`B8V]M;65N="(*("`H:6YT97)A8W1I=F4I"B`@*&)I;&EN9W5A
+M;"UI;G-E<G0M8VAA<B`B+R(@(F`B*2D*"BAD969U;B!L970M8G-L87-H("@I
+M"B`@(F-O;6UE;G0B"B`@*&EN=&5R86-T:79E*0H@("AB:6QI;F=U86PM:6YS
+M97)T+6-H87(@(CLB(")<7"(I*0H*"BAD969U;B!H96)R97<M<V5T+75P("@I
+M"B`@(D-O;6UE;G1S('=I;&P@8F4@:&5R92(*("`H:6YT97)A8W1I=F4I"@H*
+M.SL@1F]L;&]W:6YG(&%R92!T:&4@04Y322UL:6ME(&-O9&5S('1O(&-O;G1R
+M;VP@=&AE('1T>2X@($-U<G)E;G1L>2P*.SL@=&AE>2!A<F4@=6YU<V5D+@H[
+M.R!#:&%N9V5S(&UA>2!B92!N96-E<W-A<GDN("!)9&5A;&QY+"!T:&4@8V]D
+M92!S:&]U;&0@8V]N<W5L="!A(&1A=&$M"CL[(&)A<V4L(&)U="!W92!D;VXG
+M="!L:79E(&EN(&%N(&ED96%L('=O<FQD+@H*("`H;6%K92UL;V-A;"UV87)I
+M86)L92`G;&5F="UT;RUR:6=H="UC;V1E*0H@("AS971Q(&QE9G0M=&\M<FEG
+M:'0M8V]D92`B&UL_,S1L(BD*("`H;6%K92UL;V-A;"UV87)I86)L92`G<FEG
+M:'0M=&\M;&5F="UC;V1E*0H@("AS971Q(')I9VAT+71O+6QE9G0M8V]D92`B
+M&UL_,S1H(BD*("`H;6%K92UL;V-A;"UV87)I86)L92`G:&5B<F5W+6ME>6)O
+M87)D+6-O9&4I"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D+6-O9&4@(AM;/S,U
+M:"(I"B`@*&UA:V4M;&]C86PM=F%R:6%B;&4@)V5N9VQI<V@M:V5Y8F]A<F0M
+M8V]D92D*("`H<V5T<2!E;F=L:7-H+6ME>6)O87)D+6-O9&4@(AM;/S,U;"(I
+M"B`@*&UA:V4M;&]C86PM=F%R:6%B;&4@)VME>6)O87)D+6]F9BUC;V1E*0H@
+M("AS971Q(&ME>6)O87)D+6]F9BUC;V1E("(;6S)H(BD*("`H;6%K92UL;V-A
+M;"UV87)I86)L92`G:V5Y8F]A<F0M;VXM8V]D92D*("`H<V5T<2!K97EB;V%R
+M9"UO;BUC;V1E("(;6S)L(BD*("`H<V5T+79A<FEA8FQE("=H96)R97<M:V5Y
+M8F]A<F0@*"DI"B`@*&UA:V4M=F%R:6%B;&4M8G5F9F5R+6QO8V%L("=H96)R
+M97<M:V5Y8F]A<F0I"B`@*'-E="UV87)I86)L92`G:&5B<F5W+6UO9&4@*"DI
+M"B`@*&UA:V4M=F%R:6%B;&4M8G5F9F5R+6QO8V%L("=H96)R97<M;6]D92D*
+M("`H;6%K92UL;V-A;"UV87)I86)L92`G:&5B<F5W+6UO9&4I"B`@*&AE8G)E
+M=RUG<F%B+6ME>7,I"CL@("AG;&]B86PM<V5T+6ME>2`B7$,M<B(@("`@("=S
+M96%R8V@M8F%C:W=A<F0I"CL@("AG;&]B86PM<V5T+6ME>2`B7$,M<R(@("`@
+M("=S96%R8V@M9F]R=V%R9"D@(#L[1V]O9"!L=6-K('5S:6YG('1H:7,@;VYE
+M(0H[("`H9&5F:6YE+6ME>2!E<V,M;6%P(")S(B`@("`G<V5A<F-H+69O<G=A
+M<F0I"@H[.R!(97)E(&%R92!S;VUE(&-O;G-T86YT<SH*("`H<V5T+79A<FEA
+M8FQE("=H96)R97<M<FEG:'0M;6%R9VEN(#<W*2`[.R!#86XG="!U<V4@.#`L
+M('-O('=E(&UA>2!A<PH@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@(#L[('=E;&P@;&5A=F4@<V]M92!E>'1R82!R;V]M+@H*.SLH
+M1FEN92P@<V\@:70@=V%S(&]N;'D@3TY%(&-O;G-T86YT+BXN+BD*"@H[.R!.
+M;W<@=V4@=&%K92!C;VYT<F]L(&]V97(@<V]M92!O9B!T:&4@;6%J;W(@961I
+M=&EN9R!K97ES+B`@5&AE"CL[(&)A8VMS<&%C92!H87,@=&\@9&5L971E('1H
+M92!C;W)R96-T(&-H87(N(&EN($AE8G)E=R!M;V1E.R!R971U<FX@:&%S"CL[
+M(&MN;W<@=VAA="!T;R!D;R!W:71H($AE8G)E=RP@971C+B`@22=V92!L969T
+M('1H92!A<G)O=R!K97ES+"!B=70@7D(L"CL[(&%N9"!>1B!S=&EL;"!M96%N
+M(")B86-K=V%R9"(@86YD(")F;W)W87)D+B(@(%=I=&@@7D$O7D4@22=V92!G
+M;W0@80H[.R!P<F]B;&5M+"!B96-A=7-E(%Y!("AT;R!M92D@:7,@(F%L;"!T
+M:&4@=V%Y(&QE9G0B(&)U="!>12!I<R`B96YD+"(*.SL@8F]T:"!O9B!W:&EC
+M:"!W;W5L9"!M;W9E('1O('1H92!L969T(&EN($AE8G)E=R!M;V1E+B`@06QS
+M;PH[.R`B96YD+6]F+6QI;F4B(&EN($AE8G)E=RUM;V1E(&AA<R!T;R!I9VYO
+M<F4@=&AE('-P86-E<R!U<V5D('1O"CL[(')I9VAT+6%L:6=N('1H92!L:6YE
+M+B`@270@=V]U;&0@8F4@<VEL;'D@9F]R(%Y!('1O(&1O('1H870L('-O(%Y!
+M(&ES"CL[(&%L=V%Y<R`B8F5G:6YN:6YG+6]F+6QI;F4L(B!A;F0@7D4@86QW
+M87ES(")E;F0M;V8M;&EN92XB("!))W9E(&%L<V\*.SL@;&5F="!S;VUE(&]F
+M('1H92!M;W)E(&]B<V-U<F4@8V]M;6%N9',O:V5Y<RP@*")O8G-C=7)E(B!B
+M96EN9R!D969I;F5D"CL[(&%S('1H:6YG<R!)(&1O;B=T('5S92DL(&)E8V%U
+M<V4@22=M('1O;R!L87IY('1O(&-H86YG92!T:&5M+B`@*"),969T"CL[(&%S
+M(&%N(&5X8V5R8VES92!T;R!T:&4@<F5A9&5R+BXN+B(I"@H@("AD969I;F4M
+M:V5Y(&=L;V)A;"UM87`@(EQ#+6@B("=B:6QI;F=U86PM8F%C:W-P86-E*0H@
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`[.R!))V0@;&EK92!T;R!U
+M<V4@7#$W-RP@8G5T($5M86-S(&EG;F]R97,*("`@("`@("`@("`@("`@("`@
+M("`@("`@("`@("`@.SL@;64@=VAE;B!)('1R>2X@("A$;VXG="!K;F]W('=H
+M>2XI"@D)"2`@("`@(#L[($)U="!296%L($5M86-S+55S97)S(&1O;B=T(&YE
+M960@:&5L<`H)"0D@("`@("`[.R`H7F@I(&%N>7=A>2XN+BX*("`*("`H9&5F
+M:6YE+6ME>2!G;&]B86PM;6%P(")<0RUI(B`G8FEL:6YG=6%L+71A8BD*("`H
+M9&5F:6YE+6ME>2!G;&]B86PM;6%P(")<0RUK(B`G8FEL:6YG=6%L+6MI;&PM
+M;&EN92D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")<0RUM(B`G8FEL:6YG
+M=6%L+7)E='5R;BD*("`H9&5F:6YE+6ME>2!E<V,M;6%P(")D(B`G8FEL:6YG
+M=6%L+6MI;&PM=V]R9"D*("`H9&5F:6YE+6ME>2!G;&]B86PM;6%P(")<0RUA
+M(B`G8FEL:6YG=6%L+6)E9VEN;FEN9RUO9BUL:6YE*0H@("AD969I;F4M:V5Y
+M(&=L;V)A;"UM87`@(EQ#+64B("=B:6QI;F=U86PM96YD+6]F+6QI;F4I"B`@
+M*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B7$,M9B(@)V)I;&EN9W5A;"UF;W)W
+M87)D+6-H87(I"B`@*&1E9FEN92UK97D@9VQO8F%L+6UA<"`B7$,M8B(@)V)I
+M;&EN9W5A;"UB86-K=V%R9"UC:&%R*0H@("AD969I;F4M:V5Y(&=L;V)A;"UM
+M87`@(EQ#+60B("=B:6QI;F=U86PM9&5L971E+6-H87(I"@H*.SL@0F4@=7-E
+M<B!F<FEE;F1L>3H*("`H;65S<V%G92`*(E5S92!#+5AH(&9O<B!(96)R97<L
+M($TM:"!F;W(@2&5B<F5W(&UO9&4N("`N^NGXX?(@X^7N["!-+6@@+/KI^.'R
+M["!#+5AH(/GWY"(I"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D("@I*2`[.W-T
+M87)T('=I=&@@16YG;&ES:"!K97EB;V%R9`H@("AS971Q(&AE8G)E=RUM;V1E
+M("@I*2`@("`@.SMA;F0@:6X@16YG;&ES:"!M;V1E"B`@*0H*"BAD969U;B!B
+M:6QI;F=U86PM<F5T=7)N("@I"B`@(DEN($5N9VQI<V@@;6]D92P@:G5S="!R
+M971U<FXN("!);B!(96)R97<@;6]D92P@9&\@=&AE(')I9VAT('1H:6YG+B(*
+M("`H:6YT97)A8W1I=F4I"B`@*&EF("AN;W0@:&5B<F5W+6ME>6)O87)D*0H@
+M("`@("`H;F5W;&EN92D*("`@("AL969T+6%L:6=N+6QI;F4I"B`@("`H;&5T
+M("@H:&5R92`H<&]I;G0I*2D*("`@("`@*&)E9VEN;FEN9RUO9BUL:6YE*0H@
+M("`@("`H8V]P>2UT;RUR96=I<W1E<B`G82`H<&]I;G0I(&AE<F4@="D*("`@
+M("`@*&EF("AE<2!H96)R97<M;6]D92!T*0H)("`H<FEG:'0M86QI9VXM;&EN
+M92D*"2AL969T+6%L:6=N+6QI;F4I*0H@("`@("`H96YD+6]F+6QI;F4I"B`@
+M("`@("AN97=L:6YE*0H@("`@("`H:6YS97)T+7)E9VES=&5R("=A*0H@("`@
+M("`H:68@*&5Q(&AE8G)E=RUM;V1E('0I"@D@("AR:6=H="UA;&EG;BUL:6YE
+M*0H)*&QE9G0M86QI9VXM;&EN92DI"B`@("`@("AE;F0M;V8M;&EN92DI*2D*
+M"BAD969U;B!B:6QI;F=U86PM8F5G:6YN:6YG+6]F+6QI;F4@*"D*("`B36]V
+M92!T;R!T:&4@8F5G:6YN:6YG(&]F('1H92!C=7)R96YT(&QI;F4L(')E;65M
+M8F5R:6YG('1H870@8&!B96=I;FYI;F<*;V8@;&EN92<G(&ES(&QA;F=U86=E
+M+61E<&5N9&5N="(*("`H:6YT97)A8W1I=F4I"B`@*&EF("AN;W0@:&5B<F5W
+M+6UO9&4I"B`@("`@("AB96=I;FYI;F<M;V8M;&EN92D*("`@("AE;F0M;V8M
+M;&EN92D*("`@("AB86-K=V%R9"UC:&%R(#$I*2D*("`@("`@"@H**&1E9G5N
+M(&)I;&EN9W5A;"UE;F0M;V8M;&EN92`H*0H@(")-;W9E('1O('1H92!E;F0@
+M;V8@=&AE(&-U<G)E;G0@;&EN92P@<F5M96UB97)I;F<@=&AA="!@8&5N9"!O
+M9@IL:6YE)R<@:7,@;&%N9W5A9V4M9&5P96YD96YT(@H@("AI;G1E<F%C=&EV
+M92D*("`H:68@*&YO="!H96)R97<M;6]D92D*("`@("`@*&5N9"UO9BUL:6YE
+M*0H@("`@*&)E9VEN;FEN9RUO9BUL:6YE*0H@("`@*'=H:6QE("AL;V]K:6YG
+M+6%T(");(%QT72(I"B`@("`@("AF;W)W87)D+6-H87(@,2DI"B`@("`H:68@
+M*&YO="`H8F]L<"DI"@DH8F%C:W=A<F0M8VAA<B`Q*2DI*0H*"BAD969U;B!B
+M:6QI;F=U86PM9F]R=V%R9"UC:&%R("AA<F<I"B`@(F9O<G=A<F0M8VAA<B!T
+M:&%T(&MN;W=S(&%B;W5T($AE8G)E=R!V<RX@16YG;&ES:"(*("`H:6YT97)A
+M8W1I=F4@(G`B*0H@("AI9B`H;F]T(&AE8G)E=RUK97EB;V%R9"D*("`@("`@
+M*&9O<G=A<F0M8VAA<B!A<F<I"B`@("`H8F%C:W=A<F0M8VAA<B!A<F<I*2D*
+M"BAD969U;B!B:6QI;F=U86PM8F%C:W=A<F0M8VAA<B`H87)G*0H@(")B86-K
+M=V%R9"UC:&%R('1H870@:VYO=W,@86)O=70@2&5B<F5W('9S+B!%;F=L:7-H
+M(@H@("AI;G1E<F%C=&EV92`B<"(I"B`@*&EF("AN;W0@:&5B<F5W+6ME>6)O
+M87)D*0H@("`@("`H8F%C:W=A<F0M8VAA<B!A<F<I"B`@("`H9F]R=V%R9"UC
+M:&%R(&%R9RDI*0H**&1E9G5N(&)I;&EN9W5A;"UD96QE=&4M8VAA<B`H87)G
+M*0H@(")D96QE=&4M8VAA<B!T:&%T(&MN;W=S(&%B;W5T($AE8G)E=R!V<RX@
+M16YG;&ES:"(*("`H:6YT97)A8W1I=F4@(G`B*0H@("AI9B`H;F]T(&AE8G)E
+M=RUK97EB;V%R9"D*("`@("`@*&1E;&5T92UC:&%R(&%R9RD*("`@("AD96QE
+M=&4M8VAA<B`Q*0H@("`@*&)A8VMW87)D+6-H87(@,2D*("`@("AI9B`H97$@
+M:&5B<F5W+6UO9&4@="D*"2AR:6=H="UA;&EG;BUL:6YE*2DI*0H@("`@"B`@
+M"@HH9&5F=6X@8FEL:6YG=6%L+6MI;&PM=V]R9"`H87)G*0H@(")+:6QL('1H
+M92!R97-T(&]F('1H92!C=7)R96YT('=O<F0L(')E;65M8F5R:6YG('1H870@
+M8&!T:&4@<F5S="<G"FES(&QA;F=U86=E(&1E<&5N9&5N="(*("`H:6YT97)A
+M8W1I=F4@(G`B*0H@("AI9B`H;F]T(&AE8G)E=RUK97EB;V%R9"D*("`@("`@
+M*&MI;&PM=V]R9"!A<F<I"B`@("`H8F%C:W=A<F0M:VEL;"UW;W)D(&%R9RDI
+M*2`[.VYO=&AI;F<@=&\@:70A("AB=70@=&AI<R!D;V5S;B=T('=O<FLI"@HH
+M9&5F=6X@8FEL:6YG=6%L+6MI;&PM;&EN92`H*0H@(")+:6QL('1H92!R97-T
+M(&]F('1H92!L:6YE+"!R96UE;6)E<FEN9R!T:&%T(&!@=&AE(')E<W0G)R!I
+M<R!L86YG=6%G90ID97!E;F1A;G0B"B`@*&EN=&5R86-T:79E*0H@("AI9B`H
+M;F]T(&AE8G)E=RUM;V1E*0H@("`@("`H:VEL;"UL:6YE*0H[.U=E)V0@;&EK
+M92!T;R!U<V4@(FMI;&PM;&EN92`M,2(@:&5R92P@8G5T(&ET(&1O97-N)W0@
+M=V]R:R!R:6=H="X*("`@("AI9B`H;F]T("AE;VQP*2D@"@DH9F]R=V%R9"UC
+M:&%R(#$I*0H@("`@*&MI;&PM<F5G:6]N("AP;VEN="D@.SL@0G5T(&QE="=S
+M(&-O<'D@87,@;75C:"!O9B!T:&4@8V]D92!I;@H)"0D@.SL@<VEM<&QE+F5L
+M(&%S('!O<W-I8FQE"@D@("AP<F]G;@H)("`@("AI9B`H8F]B<"D*"0DH<VEG
+M;F%L("=B96=I;FYI;F<M;V8M8G5F9F5R(&YI;"D*"2`@("`@("AB96=I;FYI
+M;F<M;V8M;&EN92D*"2`@("`@("AI9B`H;&]O:VEN9RUA="`B)"(I"@D)*'!R
+M;V=N"@D)("`H9F]R=V%R9"UL:6YE("TQ*0H)"2`@*&5N9"UO9BUL:6YE*2DI
+M*0H)("`@("AP;VEN="DI*0H@("`@*')I9VAT+6%L:6=N+6QI;F4I*2D*"@HH
+M9&5F=6X@8FEL:6YG=6%L+71A8B`H*0H@(")R:6=H="UA;&EG;BUL:6YE(@H@
+M("AI;G1E<F%C=&EV92D*("`H:68@*&5Q(&AE8G)E=RUK97EB;V%R9"!T*0H@
+M("`@("`H<FEG:'0M86QI9VXM;&EN92D*("`@("AL969T+6%L:6=N+6QI;F4I
+M*2D*"BAD969U;B!B:6QI;F=U86PM8F%C:W-P86-E("@I("`[.U1H:7,@:7,@
+M;6%P<&5D('1O(%YH"B`@(D)A8VMS<&%C92!T:&%T(&MN;W=S('1H870@:&5B
+M<F5W(&=O97,@<FEG:'0M=&\M;&5F="XB"B`@*&EN=&5R86-T:79E*0H@("AI
+M9B`H;F]T(&AE8G)E=RUK97EB;V%R9"D*("`@("`@*&1E;&5T92UB86-K=V%R
+M9"UC:&%R(#$I"B`@("`H:68@*&YO="`H96]L<"DI"@DH9F]R=V%R9"UC:&%R
+M(#$I*0H@("`@*&1E;&5T92UB86-K=V%R9"UC:&%R("TQ*0H@("`@*&EF("AN
+M;W0@*&)O;'`I*0H)*&)A8VMW87)D+6-H87(@,2DI*0H@("AI9B`H97$@:&5B
+M<F5W+6UO9&4@="D*("`@("`@*')I9VAT+6%L:6=N+6QI;F4I*2D*"@HH9&5F
+M=6X@9V]T;RUR;"UM;V1E("@I"B`@(D=O('1O(')I9VAT+71O+6QE9G0@;6]D
+M92`H='1Y*2(*("`H:6YT97)A8W1I=F4I"B`@*'-E;F0M<W1R:6YG+71O+71E
+M<FUI;F%L(')I9VAT+71O+6QE9G0M8V]D92D*("`H<F5D<F%W+61I<W!L87DI
+M*0H**&1E9G5N(&=O=&\M;'(M;6]D92`H*0H@(")';R!T;R!L969T+71O+7)I
+M9VAT(&UO9&4@*'1T>2DB"B`@*&EN=&5R86-T:79E*0H@("AS96YD+7-T<FEN
+M9RUT;RUT97)M:6YA;"!L969T+71O+7)I9VAT+6-O9&4I"B`@*')E9')A=RUD
+M:7-P;&%Y*2D*"BAD969U;B!G;W1O+71T>2UH96)R97<M;6]D92`H*0H@(")'
+M;R!T;R!(96)R97<@;6]D92`H='1Y*2(*("`H:6YT97)A8W1I=F4I"B`@*'-E
+M;F0M<W1R:6YG+71O+71E<FUI;F%L(&AE8G)E=RUK97EB;V%R9"UC;V1E*2D*
+M"BAD969U;B!G;W1O+71T>2UE;F=L:7-H+6UO9&4@*"D*("`B1V\@=&\@16YG
+M;&ES:"!M;V1E("AT='DI(@H@("AI;G1E<F%C=&EV92D*("`H<V5N9"US=')I
+M;F<M=&\M=&5R;6EN86P@96YG;&ES:"UK97EB;V%R9"UC;V1E*2D*"BAD969U
+M;B!G;W1O+6AE8G)E=RUK97EB;V%R9"`H*0H@(")';R!T;R!(96)R97<@:V5Y
+M8F]A<F0@*&%S(&9A<B!A<R!%;6%C<R!I<R!C;VYC97)N960I(@H@("AI;G1E
+M<F%C=&EV92D*("`H<V5T<2!H96)R97<M:V5Y8F]A<F0@="D*("`H;65S<V%G
+M92`B^NGXX?(@^N/L]^X@*$AE8G)E=R!K97EB;V%R9"D@(BDI"@HH9&5F=6X@
+M9V]T;RUE;F=L:7-H+6ME>6)O87)D("@I"B`@(D=O('1O($5N9VQI<V@@:V5Y
+M8F]A<F0@*&%S(&9A<B!A<R!%;6%C<R!I<R!C;VYC97)N960I(@H@("AI;G1E
+M<F%C=&EV92D*("`H<V5T<2!H96)R97<M:V5Y8F]A<F0@*"DI"B`@*&UE<W-A
+M9V4@(D5N9VQI<V@@:V5Y8F]A<F0@*/KI[.+PX"#ZX^SW[BDB*2D*"BAD969U
+M;B!G;W1O+6AE8G)E=RUM;V1E("@I"B`@(D=O('1O($AE8G)E=R!M;V1E("AN
+M;W0@82!@8&UO9&4G)R!I;B!T:&4@16UA8W,@<V5N<V4@;V8@=&AE('=O<F0L
+M('1H;W5G:"DB"B`@*&EN=&5R86-T:79E*0H@("AS971Q(&AE8G)E=RUM;V1E
+M('0I"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D('0I"B`@*&UE<W-A9V4@(OKI
+M^.'R(./E[B`H2&5B<F5W(&UO9&4I(BDI"@HH9&5F=6X@9V]T;RUE;F=L:7-H
+M+6UO9&4@*"D*("`B1V\@=&\@16YG;&ES:"!M;V1E("AN;W0@82!R96%L(&!@
+M;6]D92<G*2(*("`H:6YT97)A8W1I=F4I"B`@*'-E='$@:&5B<F5W+6UO9&4@
+M*"DI"B`@*'-E='$@:&5B<F5W+6ME>6)O87)D("@I*0H@("AM97-S86=E(")%
+M;F=L:7-H(&UO9&4@*/KI[.+PX"#CY>XI(BDI"B`@"@H**&1E9G5N(&AE8G)E
+M=R`H*0H@(")"87-I8R!D969I;FET:6]N<R!A;F0@:V5Y(&)I;F1I;F=S(@H@
+M("AI;G1E<F%C=&EV92D*("`H9VQO8F%L+7-E="UK97D@(EQ#+7AX(B`@("`G
+M8V%L;"UL87-T+6MB9"UM86-R;RD*("`H9VQO8F%L+7-E="UK97D@(EQ#+7AZ
+M(B`@("`G9V]T;RUR;"UM;V1E*0H@("AG;&]B86PM<V5T+6ME>2`B7$,M>'$B
+M("`@("=G;W1O+6QR+6UO9&4I"B`@*&=L;V)A;"US970M:V5Y(")<0RUX:"(@
+M("`@)V=O=&\M:&5B<F5W+6ME>6)O87)D*0H@("AG;&]B86PM<V5T+6ME>2`B
+M7$,M>&4B("`@("=G;W1O+65N9VQI<V@M:V5Y8F]A<F0I"B`@*&1E9FEN92UK
+M97D@97-C+6UA<"`B:"(@("`@)V=O=&\M:&5B<F5W+6UO9&4I"B`@*&1E9FEN
+M92UK97D@97-C+6UA<"`B92(@("`@)V=O=&\M96YG;&ES:"UM;V1E*0H@("AG
+M;&]B86PM<V5T+6ME>2`B7$,M>%Q#+6@B("=B86-K+71O+6AE8G)E=RUK97EB
+M;V%R9"D*("`H9VQO8F%L+7-E="UK97D@(EQ#+7A<0RUE(B`G8F%C:RUT;RUE
+M;F=L:7-H+6ME>6)O87)D*0H@("AH96)R97<M<V5T+75P*2D@"@H@(`H**&1E
+M9G5N(&)I;&EN9W5A;"UI;G-E<G0M8VAA<B`H:&5B(&5N9RD*("`B26YS97)T
+M(&5I=&AE<B!T:&4@2&5B<F5W(&]R($5N9VQI<V@@8V]D92!F;W(@=&AE(&ME
+M>2!P<F5S<V5D(@H@("AI;G1E<F%C=&EV92`B4"(I"B`@*&EF("AN;W0@:&5B
+M<F5W+6ME>6)O87)D*0H@("`@*'!R;V=N"B`@("`@("AS96QF+6EN<V5R="UC
+M;VUM86YD("AP<F5F:7@M;G5M97)I8RUV86QU92!E;F<I*0H@("`@("`H:68@
+M*&5Q(&AE8G)E=RUM;V1E('0I"@D@("AR:6=H="UA;&EG;BUL:6YE*2DI"B`@
+M("`H:68@*&5O;'`I"@DH:6YS97)T("(@(BD*("`@("`@*&9O<G=A<F0M8VAA
+M<B`Q*2D*("`@("AI;G-E<G0@:&5B*0H@("`@*&)A8VMW87)D+6-H87(@,BD*
+M("`@("AI9B`H97$@:&5B<F5W+6UO9&4@="D*"2AR:6=H="UA;&EG;BUL:6YE
+M*2DI*0H**&1E9G5N(')I9VAT+6%L:6=N+6QI;F4@*"D*("`B061D('-P86-E
+M<R!A="!T:&4@8F5G:6YN:6YG(&]F('1H92!C=7)R96YT(&QI;F4@<V\@=&AA
+M="!T:&4@96YD(&ES"F%L:6=N960@=VET:"!T:&4@9FEL;"!C;VQU;6XN(@H@
+M("AI;G1E<F%C=&EV92D*("`H<')O9VX@.SMS879E+65X8W5R<VEO;B!D;V5S
+M;B=T(&%L=V%Y<R!W;W)K+B`@22!W;VYD97(@=VAY(&YO="X*("`@("AL970@
+M*"AC;VP@*&-U<G)E;G0M8V]L=6UN*2DI"B`@("`@("AE;F0M;V8M;&EN92D*
+M("`@("`@*&QE="`H*&5C;VP@*&-U<G)E;G0M8V]L=6UN*2D@*&5C;VPR("AC
+M=7)R96YT+6-O;'5M;BDI*0H)*&)E9VEN;FEN9RUO9BUL:6YE*0H)*'=H:6QE
+M("AA;F0@*&QO;VMI;F<M870@(EL@7'1=(BD@*#X@96-O;"!H96)R97<M<FEG
+M:'0M;6%R9VEN*2D*"2`@*&1E;&5T92UC:&%R(#$I"@D@("AS971Q(&5C;VP@
+M*"T@96-O;"`Q*2DI"@DH:6YS97)T+6-H87(@/UP@("@M(&AE8G)E=RUR:6=H
+M="UM87)G:6X@96-O;"`I*0H[.VEF('-A=F4M97AC=7)S:6]N('=O<FME9"!A
+M8F]V92P@=V4@8V]U;&0@;VUI="!T:&ES.@H)*&)E9VEN;FEN9RUO9BUL:6YE
+M*2`[.R`*"2AF;W)W87)D+6-H87(@*"T@:&5B<F5W+7)I9VAT+6UA<F=I;B`H
+M+2!E8V]L,B!C;VPI*2DI*2DI"@HH9&5F=6X@;&5F="UA;&EG;BUL:6YE("@I
+M"B`@(D1E;&5T92!L96%D:6YG('=H:71E('-P86-E('-O(&%S('1O(&QE9G0M
+M86QI9VX@=&AE(&-U<G)E;G0@;&EN92XB"B`@*&EN=&5R86-T:79E*0H@("AL
+M970@*"AC;VP@*&-U<G)E;G0M8V]L=6UN*2D@*&1E;&5T960@,"DI"B`@("`H
+M8F5G:6YN:6YG+6]F+6QI;F4I"B`@("`H=VAI;&4@*&QO;VMI;F<M870@(EL@
+M7'1=(BD*("`@("`@*&1E;&5T92UC:&%R(#$I"B`@("`@("AS971Q(&1E;&5T
+M960@*"L@9&5L971E9"`Q*2DI"B`@("`H:68@*#X@*"T@8V]L(&1E;&5T960I
+M(#`I"@DH9F]R=V%R9"UC:&%R("@M(&-O;"!D96QE=&5D*2DI*2D*"@H[.R!.
+M;W<@;&5T<R!M86ME('-O;64@8V]M;6%N9',@9F]R('-K:7!P:6YG(&]V97(@
+M;F5W;'D@:6YS97)T960@=&5X=`H[.R!I;B!T:&4@(F]T:&5R(B!L86YG=6%G
+M92X@(%1H92!I9&5A(&ES('1O(&UA:V4@=&AE(&EN<V5R871I;VX@;V8@2&5B
+M<F5W"CL[('=O<F1S(&EN(&%N($5N9VQI<V@@9&]C=6UE;G0@86YD('9I8V4@
+M=F5R<V$@87,@96%S>2!A<R!P;W-S:6)L92X*.SL@22!W;VYD97(@=VAA="!T
+M;R!D;R!W:71H('!U;F-T=6%T:6]N(&AE<F4N+BXN"@HH9&5F=6X@8F%C:RUT
+M;RUE;F=L:7-H+6ME>6)O87)D("@I"B`@(D=O(&)A8VL@=&\@=&AE($5N9VQI
+M<V@@:V5Y8F]A<F0@869T97(@:6YS97)T:6YG(&$@2&5B<F5W('-E9VUE;G0@
+M;V8@=&5X="X*4VMI<"!O=F5R('1H92!(96)R97<@=&5X="XB"B`@*&EN=&5R
+M86-T:79E*0H@("AG;W1O+65N9VQI<V@M:V5Y8F]A<F0I(#L[('1H870G<R!T
+M:&4@96%S>2!P87)T+@H@("AI9B`H;&]O:VEN9RUA="`B("(I("`@(#L[($%S
+M<W5M92!T:&4@<W!A8V4@=V%S(&EN<V5R=&5D('=H96X@=V4N+@H@("`@("`H
+M9&5L971E+6-H87(@,2DI("`@(#L[("XN=V5N="!I;G1O($AE8G)E=R!M;V1E
+M+@H@("AI9B`H;F]T("AE;VQP*2D@("`@("`@(#L[($YO=R!M;W9E('!A<W0@
+M=&AE($AE8G)E=PH@("`@("`H=VAI;&4@*&QO;VMI;F<M870@(EOM[_7J\_KY
+M^/?V]/+Q\.[LZ^GHY^;EY./BX>!=(BD*"2AF;W)W87)D+6-H87(@,2DI*2D*
+M"BAD969U;B!B86-K+71O+6AE8G)E=RUK97EB;V%R9"`H*0H@(")';R!B86-K
+M('1O('1H92!(96)R97<@:V5Y8F]A<F0@869T97(@:6YS97)T:6YG(&%N($5N
+M9VQI<V@@<V5G;65N="!O9@IT97AT+B`@4VMI<"!O9B!T:&4@16YG;&ES:"!T
+M97AT+B(*("`H:6YT97)A8W1I=F4I"B`@*&=O=&\M:&5B<F5W+6ME>6)O87)D
+M*2`@.SL@=&AA="=S('1H92!E87-Y('!A<G0N"B`@*&EF("AN;W0@*&)O;'`I
+M*0H@("`@("`H8F%C:W=A<F0M8VAA<B`Q*2D@(#L[('=E)W)E('!R;V)A8FQY
+M(&]N(&$@<W!A8V4@;W(@<V]M971H:6YG+@H@("AI9B`H;F]T("AB;VQP*2D@
+M("`@("`@(#L[($YO=R!M;W9E('!A<W0@=&AE($5N9VQI<V@*("`@("`@*'=H
+M:6QE("AL;V]K:6YG+6%T(`H@("`@("`@(EMA8F-D969G:&EJ:VQM;F]P<7)S
+M='5V=WAY>D%"0T1%1D=(24I+3$U.3U!14E-455976%E:7"0]/#Y<7"@I72(I
+M"@DH8F%C:W=A<F0M8VAA<B`Q*2DI*2`[.R!)('1H<F5W('1H92!D;VQL87(@
+M:6X@+2TM+2TM+2U>"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@.SL@
+M8F5C875S92`H3&$I5&58('5S97,@:70@<V\@;V9T96XN"@HH9&5F=6X@9FEX
+M+6)A8VMS<&%C92`H*0H@(")-86ME(&)A8VMS<&%C92!K97D@)V)I;&EN9W5A
+M;"UB86-K<W!A8V4B"B`@*&EN=&5R86-T:79E*0H@("AG;&]B86PM<V5T+6ME
+M>2`B7#$W-R(@)V)I;&EN9W5A;"UB86-K<W!A8V4I*0H*"BAG;&]B86PM<V5T
+M+6ME>2`B7$,M>'HB("=F:7@M8F%C:W-P86-E*0H*.SL@5&AI<R!I<R!T:&4@
+M;&%S="!L:6YE(&]F(")H96)R97<N96PB(.SY(.3PY?CGX.0@Y/CE^>0@^N#F
+M"@H[.R!T;RUD;SH*.SL@861D('%U;W1E+6-H87(*.SL@9FEX(&)A8VMS<&%C
+?92!O=F5R(&YL"CL[(&9I>"!D96QE=&4@870@96]L<#L@
+`
+end
+
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el
new file mode 100644
index 0000000000..555e41e51a
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/hebrew.el
@@ -0,0 +1,735 @@
+
+;; >>.WARNING.<< This file contains (non-ascii) chars with the high-order
+;; bit set. Most mailers will choke on it.
+
+
+;; file "hebrew.el" ver 0.8
+;; last modified Jan. 2 1992
+
+;; Hebrew support for Emacs.
+;; Copyright (c) 1990-92 by Joel M. Hoffman.
+;;
+;; --> This project is dedicated to Orna Okouneff, who, against my
+;; will, insisted on teaching me Emacs.
+
+
+
+;; THIS IS A basic support package for editing Hebrew with Emacs. It
+;; assumes the keyboard layout of the VT* series for the purposes of
+;; mapping English keystrokes to their Hebrew equivilents. It also
+;; assumes the output hardware is compatible with the VT* series used
+;; in Israel, in that the high-order bit is assumed to indicate
+;; Hebrew; I believe this is incompatible with the DOS standard for
+;; hebrew. The package does not use the right-to-left facilites of
+;; the VT* terminals, so any terminal that converts characters >128
+;; decimal to Hebrew is supported. An EGA Hebrew font compatible with
+;; this package is available for the IBM.
+
+;; To work properly, the following files in Emacs 18.xx must be
+;; modified:
+;;
+;; xdisp.c
+;; indent.c
+
+;; You can use this package with the unmodified files, but the Hebrew
+;; letters will appear encoded as \xxx. I understand that ver. 19.00
+;; will have an option to support 8-bit-clean operation, and so will
+;; support this package. Demacs supports 8-bit-clean operation via
+;; the toggle-pass8 command.
+
+;; Currently, four major commands are supplied: C-Xh and C-Xe, which
+;; switch back and forth between Hebrew and English keyboards, and M-h
+;; and M-e, which switch back and forth between Hebrew and English
+;; "modes," which are not modes in the Emacs sense of the word, but
+;; rather determine if the margin is to be the left or right side of
+;; the screen, among other direction-specific paramaters.
+
+;; Emacs uses the eighth bit to indicate Hebrew letters. Most text
+;; formatters (TeX, *roff, etc.) use 7-bit character codes.
+;; Additionally, these formatters usually require Hebrew to appear in
+;; time-order. A pre-processor must be run before the formatter to
+;; effect these changes.
+
+
+
+;; I don't really know lisp or Emacs, or what I'm doing; comments and
+;; suggestions are welcome:
+;; joel@wam.umd.edu <-- Internet
+;; 72700,402 <-- Compuserve
+;; 72700.402@compuserve.com <-- Compuserve from Internet
+
+;; This package is not finished. The bugs herein defy enumeration.
+
+(defun hebrew-grab-keys ()
+ "take control of the keyboard and auto-fill."
+ (interactive)
+ (define-key global-map " " 'let-space)
+ (define-key global-map "a" 'let-a)
+ (define-key global-map "b" 'let-b)
+ (define-key global-map "c" 'let-c)
+ (define-key global-map "d" 'let-d)
+ (define-key global-map "e" 'let-e)
+ (define-key global-map "f" 'let-f)
+ (define-key global-map "g" 'let-g)
+ (define-key global-map "h" 'let-h)
+ (define-key global-map "i" 'let-i)
+ (define-key global-map "j" 'let-j)
+ (define-key global-map "k" 'let-k)
+ (define-key global-map "l" 'let-l)
+ (define-key global-map "m" 'let-m)
+ (define-key global-map "n" 'let-n)
+ (define-key global-map "o" 'let-o)
+ (define-key global-map "p" 'let-p)
+ (define-key global-map "q" 'let-q)
+ (define-key global-map "r" 'let-r)
+ (define-key global-map "s" 'let-s)
+ (define-key global-map "t" 'let-t)
+ (define-key global-map "u" 'let-u)
+ (define-key global-map "v" 'let-v)
+ (define-key global-map "w" 'let-w)
+ (define-key global-map "x" 'let-x)
+ (define-key global-map "y" 'let-y)
+ (define-key global-map "z" 'let-z)
+ (define-key global-map "," 'let-comma)
+ (define-key global-map ";" 'let-semi)
+ (define-key global-map ":" 'let-colon)
+ (define-key global-map "." 'let-period)
+ (define-key global-map "/" 'let-slash)
+ (define-key global-map "'" 'let-aigu)
+ (define-key global-map "`" 'let-grave)
+ (define-key global-map "\\" 'let-bslash)
+ (define-key global-map "-" 'let-hyphen)
+ (define-key global-map "!" 'let-xmark)
+ (define-key global-map "@" 'let-at)
+ (define-key global-map "#" 'let-pound)
+ (define-key global-map "$" 'let-dollar)
+ (define-key global-map "%" 'let-percent)
+ (define-key global-map "^" 'let-carrat)
+ (define-key global-map "&" 'let-ampersand)
+ (define-key global-map "*" 'let-asterisk)
+ (define-key global-map "(" 'let-lparend)
+ (define-key global-map ")" 'let-rparend)
+ (define-key global-map "{" 'let-lcbrace)
+ (define-key global-map "}" 'let-rcbrace)
+ (define-key global-map "[" 'let-lbrace)
+ (define-key global-map "]" 'let-rbrace)
+ (define-key global-map ">" 'let-gt)
+ (define-key global-map "~" 'let-tilde)
+ (define-key global-map "+" 'let-plus)
+ (define-key global-map "+" 'let-equal)
+ (define-key global-map "<" 'let-lt)
+ (define-key global-map "?" 'let-question))
+
+
+(defun let-plus ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "+" "+"))
+
+(defun let-equal ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "=" "="))
+
+
+(defun let-tilde ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "~" "~"))
+
+(defun let-gt ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ">" ">"))
+
+(defun let-lt ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "<" "<"))
+
+(defun let-question ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "?" "?"))
+
+(defun let-hyphen ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "-" "-"))
+
+(defun let-xmark ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "!" "!"))
+
+(defun let-at ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "@" "@"))
+
+(defun let-pound ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "#" "#"))
+
+(defun let-dollar ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "$" "$"))
+
+(defun let-percent ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "%" "%"))
+
+(defun let-carrat ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "^" "^"))
+
+(defun let-ampersand ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "&" "&"))
+
+(defun let-asterisk ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "*" "*"))
+
+(defun let-lparend ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "(" "("))
+
+(defun let-rparend ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ")" ")"))
+
+(defun let-lcbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "{" "{"))
+
+(defun let-rcbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "}" "}"))
+
+(defun let-lbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "[" "["))
+
+(defun let-rbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "]" "]"))
+
+(defun let-colon ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ":" ":"))
+
+
+(defun let-a ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char"ù" "a"))
+(defun let-b ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ð" "b"))
+(defun let-c ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "á" "c"))
+(defun let-d ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "â" "d"))
+(defun let-e ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "÷" "e"))
+(defun let-f ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ë" "f"))
+(defun let-g ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ò" "g"))
+(defun let-h ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "é" "h"))
+(defun let-i ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ï" "i"))
+(defun let-j ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ç" "j"))
+(defun let-k ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ì" "k"))
+(defun let-l ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ê" "l"))
+(defun let-m ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ö" "m"))
+(defun let-n ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "î" "n"))
+(defun let-o ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "í" "o"))
+(defun let-p ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ô" "p"))
+(defun let-q ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "\\" "q"))
+(defun let-r ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ø" "r"))
+(defun let-s ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ã" "s"))
+(defun let-t ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "à" "t"))
+(defun let-u ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "å" "u"))
+(defun let-v ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ä" "v"))
+(defun let-w ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "'" "w"))
+(defun let-x ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ñ" "x"))
+(defun let-y ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "è" "y"))
+(defun let-z ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "æ" "z"))
+
+(defun let-space ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char " " " ")) ;;English auto-fill will be
+ ;;automatic. Hebrew auto-fill is
+ ;;still a problem.
+(defun let-comma ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ú" ","))
+
+(defun let-semi ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ó" ";"))
+
+(defun let-period ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "õ" "."))
+
+(defun let-slash ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "." "/"))
+
+(defun let-aigu ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "," "'"))
+
+(defun let-grave ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "/" "`"))
+
+(defun let-bslash ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ";" "\\"))
+
+
+(defun hebrew-set-up ()
+ "Comments will be here"
+ (interactive)
+
+
+;; Following are the ANSI-like codes to control the tty. Currently,
+;; they are unused.
+;; Changes may be necessary. Ideally, the code should consult a data-
+;; base, but we don't live in an ideal world.
+
+ (make-local-variable 'left-to-right-code)
+ (setq left-to-right-code "[?34l")
+ (make-local-variable 'right-to-left-code)
+ (setq right-to-left-code "[?34h")
+ (make-local-variable 'hebrew-keyboard-code)
+ (setq hebrew-keyboard-code "[?35h")
+ (make-local-variable 'english-keyboard-code)
+ (setq english-keyboard-code "[?35l")
+ (make-local-variable 'keyboard-off-code)
+ (setq keyboard-off-code "")
+ (make-local-variable 'keyboard-on-code)
+ (setq keyboard-on-code "")
+ (set-variable 'hebrew-keyboard ())
+ (make-variable-buffer-local 'hebrew-keyboard)
+ (set-variable 'hebrew-mode ())
+ (make-variable-buffer-local 'hebrew-mode)
+ (make-local-variable 'hebrew-mode)
+ (hebrew-grab-keys)
+; (global-set-key "\C-r" 'search-backward)
+; (global-set-key "\C-s" 'search-forward) ;;Good luck using this one!
+; (define-key esc-map "s" 'search-forward)
+
+;; Here are some constants:
+ (set-variable 'hebrew-right-margin 77) ;; Can't use 80, so we may as
+ ;; well leave some extra room.
+
+;;(Fine, so it was only ONE constant....)
+
+
+;; Now we take control over some of the major editing keys. The
+;; backspace has to delete the correct char. in Hebrew mode; return has
+;; know what to do with Hebrew, etc. I've left the arrow keys, but ^B,
+;; and ^F still mean "backward" and "forward." With ^A/^E I've got a
+;; problem, because ^A (to me) is "all the way left" but ^E is "end,"
+;; both of which would move to the left in Hebrew mode. Also
+;; "end-of-line" in Hebrew-mode has to ignore the spaces used to
+;; right-align the line. It would be silly for ^A to do that, so ^A is
+;; always "beginning-of-line," and ^E always "end-of-line." I've also
+;; left some of the more obscure commands/keys, ("obscure" being defined
+;; as things I don't use), because I'm too lazy to change them. ("Left
+;; as an excercise to the reader....")
+
+ (define-key global-map "\C-h" 'bilingual-backspace)
+ ;; I'd like to use \177, but Emacs ignores
+ ;; me when I try. (Don't know why.)
+ ;; But Real Emacs-Users don't need help
+ ;; (^h) anyway....
+
+ (define-key global-map "\C-i" 'bilingual-tab)
+ (define-key global-map "\C-k" 'bilingual-kill-line)
+ (define-key global-map "\C-m" 'bilingual-return)
+ (define-key esc-map "d" 'bilingual-kill-word)
+ (define-key global-map "\C-a" 'bilingual-beginning-of-line)
+ (define-key global-map "\C-e" 'bilingual-end-of-line)
+ (define-key global-map "\C-f" 'bilingual-forward-char)
+ (define-key global-map "\C-b" 'bilingual-backward-char)
+ (define-key global-map "\C-d" 'bilingual-delete-char)
+
+
+;; Be user friendly:
+ (message
+"Use C-Xh for Hebrew, M-h for Hebrew mode. .úéøáò ãåîì M-h ,úéøáòì C-Xh ù÷ä")
+ (setq hebrew-keyboard ()) ;;start with English keyboard
+ (setq hebrew-mode ()) ;;and in English mode
+ )
+
+
+(defun bilingual-return ()
+ "In English mode, just return. In Hebrew mode, do the right thing."
+ (interactive)
+ (if (not hebrew-keyboard)
+ (newline)
+ (left-align-line)
+ (let ((here (point)))
+ (beginning-of-line)
+ (copy-to-register 'a (point) here t)
+ (if (eq hebrew-mode t)
+ (right-align-line)
+ (left-align-line))
+ (end-of-line)
+ (newline)
+ (insert-register 'a)
+ (if (eq hebrew-mode t)
+ (right-align-line)
+ (left-align-line))
+ (end-of-line))))
+
+(defun bilingual-beginning-of-line ()
+ "Move to the beginning of the current line, remembering that ``beginning
+of line'' is language-dependent"
+ (interactive)
+ (if (not hebrew-mode)
+ (beginning-of-line)
+ (end-of-line)
+ (backward-char 1)))
+
+
+
+(defun bilingual-end-of-line ()
+ "Move to the end of the current line, remembering that ``end of
+line'' is language-dependent"
+ (interactive)
+ (if (not hebrew-mode)
+ (end-of-line)
+ (beginning-of-line)
+ (while (looking-at "[ \t]")
+ (forward-char 1))
+ (if (not (bolp))
+ (backward-char 1))))
+
+
+(defun bilingual-forward-char (arg)
+ "forward-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (forward-char arg)
+ (backward-char arg)))
+
+(defun bilingual-backward-char (arg)
+ "backward-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (backward-char arg)
+ (forward-char arg)))
+
+(defun bilingual-delete-char (arg)
+ "delete-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (delete-char arg)
+ (delete-char 1)
+ (backward-char 1)
+ (if (eq hebrew-mode t)
+ (right-align-line))))
+
+
+
+(defun bilingual-kill-word (arg)
+ "Kill the rest of the current word, remembering that ``the rest''
+is language dependent"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (kill-word arg)
+ (backward-kill-word arg))) ;;nothing to it! (but this doesn't work)
+
+(defun bilingual-kill-line ()
+ "Kill the rest of the line, remembering that ``the rest'' is language
+dependant"
+ (interactive)
+ (if (not hebrew-mode)
+ (kill-line)
+;;We'd like to use "kill-line -1" here, but it doesn't work right.
+ (if (not (eolp))
+ (forward-char 1))
+ (kill-region (point) ;; But let's copy as much of the code in
+ ;; simple.el as possible
+ (progn
+ (if (bobp)
+ (signal 'beginning-of-buffer nil)
+ (beginning-of-line)
+ (if (looking-at "$")
+ (progn
+ (forward-line -1)
+ (end-of-line))))
+ (point)))
+ (right-align-line)))
+
+
+(defun bilingual-tab ()
+ "right-align-line"
+ (interactive)
+ (if (eq hebrew-keyboard t)
+ (right-align-line)
+ (left-align-line)))
+
+(defun bilingual-backspace () ;;This is mapped to ^h
+ "Backspace that knows that hebrew goes right-to-left."
+ (interactive)
+ (if (not hebrew-keyboard)
+ (delete-backward-char 1)
+ (if (not (eolp))
+ (forward-char 1))
+ (delete-backward-char -1)
+ (if (not (bolp))
+ (backward-char 1)))
+ (if (eq hebrew-mode t)
+ (right-align-line)))
+
+
+(defun goto-rl-mode ()
+ "Go to right-to-left mode (tty)"
+ (interactive)
+ (send-string-to-terminal right-to-left-code)
+ (redraw-display))
+
+(defun goto-lr-mode ()
+ "Go to left-to-right mode (tty)"
+ (interactive)
+ (send-string-to-terminal left-to-right-code)
+ (redraw-display))
+
+(defun goto-tty-hebrew-mode ()
+ "Go to Hebrew mode (tty)"
+ (interactive)
+ (send-string-to-terminal hebrew-keyboard-code))
+
+(defun goto-tty-english-mode ()
+ "Go to English mode (tty)"
+ (interactive)
+ (send-string-to-terminal english-keyboard-code))
+
+(defun goto-hebrew-keyboard ()
+ "Go to Hebrew keyboard (as far as Emacs is concerned)"
+ (interactive)
+ (setq hebrew-keyboard t)
+ (message "úéøáò úãì÷î (Hebrew keyboard) "))
+
+(defun goto-english-keyboard ()
+ "Go to English keyboard (as far as Emacs is concerned)"
+ (interactive)
+ (setq hebrew-keyboard ())
+ (message "English keyboard (úéìâðà úãì÷î)"))
+
+(defun goto-hebrew-mode ()
+ "Go to Hebrew mode (not a ``mode'' in the Emacs sense of the word, though)"
+ (interactive)
+ (setq hebrew-mode t)
+ (setq hebrew-keyboard t)
+ (message "úéøáò ãåî (Hebrew mode)"))
+
+(defun goto-english-mode ()
+ "Go to English mode (not a real ``mode'')"
+ (interactive)
+ (setq hebrew-mode ())
+ (setq hebrew-keyboard ())
+ (message "English mode (úéìâðà ãåî)"))
+
+
+
+(defun hebrew ()
+ "Basic definitions and key bindings"
+ (interactive)
+ (global-set-key "\C-xx" 'call-last-kbd-macro)
+ (global-set-key "\C-xz" 'goto-rl-mode)
+ (global-set-key "\C-xq" 'goto-lr-mode)
+ (global-set-key "\C-xh" 'goto-hebrew-keyboard)
+ (global-set-key "\C-xe" 'goto-english-keyboard)
+ (define-key esc-map "h" 'goto-hebrew-mode)
+ (define-key esc-map "e" 'goto-english-mode)
+ (global-set-key "\C-x\C-h" 'back-to-hebrew-keyboard)
+ (global-set-key "\C-x\C-e" 'back-to-english-keyboard)
+ (hebrew-set-up))
+
+
+
+(defun bilingual-insert-char (heb eng)
+ "Insert either the Hebrew or English code for the key pressed"
+ (interactive "P")
+ (if (not hebrew-keyboard)
+ (progn
+ (self-insert-command (prefix-numeric-value eng))
+ (if (eq hebrew-mode t)
+ (right-align-line)))
+ (if (eolp)
+ (insert " ")
+ (forward-char 1))
+ (insert heb)
+ (backward-char 2)
+ (if (eq hebrew-mode t)
+ (right-align-line))))
+
+(defun right-align-line ()
+ "Add spaces at the beginning of the current line so that the end is
+aligned with the fill column."
+ (interactive)
+ (progn ;;save-excursion doesn't always work. I wonder why not.
+ (let ((col (current-column)))
+ (end-of-line)
+ (let ((ecol (current-column)) (ecol2 (current-column)))
+ (beginning-of-line)
+ (while (and (looking-at "[ \t]") (> ecol hebrew-right-margin))
+ (delete-char 1)
+ (setq ecol (- ecol 1)))
+ (insert-char ?\ (- hebrew-right-margin ecol ))
+;;if save-excursion worked above, we could omit this:
+ (beginning-of-line) ;;
+ (forward-char (- hebrew-right-margin (- ecol2 col)))))))
+
+(defun left-align-line ()
+ "Delete leading white space so as to left-align the current line."
+ (interactive)
+ (let ((col (current-column)) (deleted 0))
+ (beginning-of-line)
+ (while (looking-at "[ \t]")
+ (delete-char 1)
+ (setq deleted (+ deleted 1)))
+ (if (> (- col deleted) 0)
+ (forward-char (- col deleted)))))
+
+
+;; Now lets make some commands for skipping over newly inserted text
+;; in the "other" language. The idea is to make the inseration of Hebrew
+;; words in an English document and vice versa as easy as possible.
+;; I wonder what to do with punctuation here....
+
+(defun back-to-english-keyboard ()
+ "Go back to the English keyboard after inserting a Hebrew segment of text.
+Skip over the Hebrew text."
+ (interactive)
+ (goto-english-keyboard) ;; that's the easy part.
+ (if (looking-at " ") ;; Assume the space was inserted when we..
+ (delete-char 1)) ;; ..went into Hebrew mode.
+ (if (not (eolp)) ;; Now move past the Hebrew
+ (while (looking-at "[íïõêóúùø÷öôòñðîìëéèçæåäãâáà]")
+ (forward-char 1))))
+
+(defun back-to-hebrew-keyboard ()
+ "Go back to the Hebrew keyboard after inserting an English segment of
+text. Skip of the English text."
+ (interactive)
+ (goto-hebrew-keyboard) ;; that's the easy part.
+ (if (not (bolp))
+ (backward-char 1)) ;; we're probably on a space or something.
+ (if (not (bolp)) ;; Now move past the English
+ (while (looking-at
+ "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\$=<>\\()]")
+ (backward-char 1)))) ;; I threw the dollar in --------^
+ ;; because (La)TeX uses it so often.
+
+(defun fix-backspace ()
+ "Make backspace key 'bilingual-backspace"
+ (interactive)
+ (global-set-key "\177" 'bilingual-backspace))
+
+
+(global-set-key "\C-xz" 'fix-backspace)
+
+;; This is the last line of "hebrew.el" ìù äðåøçàä äøåùä úàæ
+
+;; to-do:
+;; add quote-char
+;; fix backspace over nl
+;; fix delete at eolp \ No newline at end of file
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el
new file mode 100644
index 0000000000..0095056561
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/for_sparc/usr/local/emacs/hlisp/old.hebrew.el
@@ -0,0 +1,174 @@
+;;;
+;;; hebrew.el -- Hebrew editing mode.
+;;; For more information, see documentation of `hebrew-mode'.
+;;;
+;;; Copyright (c) Yossi Friedman, April 1990
+;;;
+
+(defvar running-epoch nil "*Non-nil means Epoch is running.")
+
+(defvar hebrew-mode-hook () "*Called when entering hebrew-mode")
+
+(defvar hebrew-mode nil "*Non nil when Hebrew mode is turned on.")
+(make-variable-buffer-local 'hebrew-mode)
+
+(or (assoc 'hebrew-mode minor-mode-alist)
+ (setq minor-mode-alist
+ (cons '(hebrew-mode " Hebrew") minor-mode-alist)))
+
+(defun hebrew-mode ()
+"\
+Toggles hebrew-mode on/off. Hebrew-mode is a minor mode which allows
+reversing the editor display and changing the keyboard in order to
+enter and edit text in a semitic language, such as Hebrew.
+
+By default, hebrew-mode stays in \"normal\" state. The \"reversed\"
+state is activated with \"\\[hebrew-toggle-reversed]\". (In Epoch, this
+is also bound to \"F3\".) In the \"reversed\" state, hebrew-mode emulates
+a Hebrew keyboard both during direct insertion and during searches.
+
+Hebrew-mode calls hebrew-mode-hook upon entering."
+
+
+ (interactive)
+ (if (null hebrew-mode)
+ (let (char)
+
+ ; signal hebrew minor mode in the mode-line
+ (setq hebrew-mode t)
+
+ ; activate the hebrew insertion function
+ (setq char ? )
+ (while (<= char ?~)
+ (local-set-key (format "%c" char) 'hebrew-insert)
+ (setq char (1+ char)))
+
+ ; display-literal, display-reversed
+ (setq display-literal t)
+ (local-set-key "\C-cR" 'hebrew-toggle-reversed)
+
+ ; syntax table stuff
+ (setq char ?\340) ; aleph
+ (while (<= char ?\372) ; taf
+ (modify-syntax-entry char "w")
+ (setq char (1+ char)))
+
+ ; search stuff
+ (local-set-key "\C-s" 'hebrew-ctrl-s)
+ (local-set-key "\C-r" 'hebrew-ctrl-r)
+
+ ; hooks
+ (run-hooks 'hebrew-mode-hook))
+
+ (let (char)
+
+ ; turn off hebrew minor mode in the mode-line
+ (setq hebrew-mode nil)
+
+ ; deactivate the hebrew insertion function
+ (setq char ? )
+ (while (<= char ?~)
+ (local-unset-key (format "%c" char))
+ (setq char (1+ char)))
+
+ ; deactivate display-literal and display-reversed
+ (setq display-literal nil)
+ (local-unset-key "\C-cR")
+
+ ; search stuff
+ (local-unset-key "\C-s")
+ (local-unset-key "\C-r")
+
+ ; restore syntax-table
+ (setq char ?\340) ; aleph
+ (while (<= char ?\372) ; taf
+ (modify-syntax-entry char " ")
+ (setq char (1+ char))))))
+
+(if running-epoch
+ (epoch::rebind-key "F3" 0 "\C-cR"))
+(defun hebrew-toggle-reversed ()
+ "Toggle whether or not the display is laterally reversed."
+ (interactive)
+ (setq display-reversed (null display-reversed))
+ (if running-epoch
+ (epoch::redisplay-screen)
+ (x-smart-redisplay)))
+
+(defun hebrew-insert (&optional arg)
+ "\
+If display-reversed is nil, behaves like self-insert-command.
+If display-reversed is t, simulates a Hebrew typewriter keyboard."
+
+ (interactive)
+ (or (numberp arg) (setq arg 1))
+ (let ((char (if display-reversed
+ (aref hebrew-keyboard last-command-char)
+ (format "%c" last-command-char))))
+ (while (> arg 0)
+ (insert char)
+ (setq arg (1- arg)))))
+
+(defun hebrew-ctrl-s () "The Hebrew-mode version of \C-s"
+ (interactive)
+ (let ((old-read-char (symbol-function 'read-char))
+ (old-text-char-description (symbol-function 'text-char-description))
+ (search-exit-option nil)
+ res)
+ (fset 'read-char (symbol-function 'hebrew-read-char))
+ (fset 'text-char-description
+ (symbol-function 'hebrew-text-char-description))
+ (setq res (funcall (global-key-binding "\C-s")))
+ (fset 'read-char old-read-char)
+ (fset 'text-char-description old-text-char-description)
+ res))
+
+(defun hebrew-ctrl-r () "The Hebrew-mode version of \C-r"
+ (interactive)
+ (let ((old-read-char (symbol-function 'read-char))
+ (old-text-char-description (symbol-function 'text-char-description))
+ (search-exit-option nil)
+ res)
+ (fset 'read-char (symbol-function 'hebrew-read-char))
+ (fset 'text-char-description
+ (symbol-function 'hebrew-text-char-description))
+ (setq res (funcall (global-key-binding "\C-r")))
+ (fset 'read-char old-read-char)
+ (fset 'text-char-description old-text-char-description)
+ res))
+
+(defun hebrew-read-char ()
+ "The hebrew-mode version of read-char."
+ (let ((char (funcall old-read-char)))
+ (if (and display-reversed (>= char ? ) (<= char ?~))
+ (string-to-char (aref hebrew-keyboard char))
+ char)))
+
+(defun hebrew-text-char-description (char)
+ "The hebrew-mode version of text-char-description."
+ (if display-reversed
+ (char-to-string char)
+ (funcall old-text-char-description char)))
+
+; for the search function to work, we can't use a byte-compiled version of
+; isearch.el, so load it back:
+(load-library "isearch.el")
+
+(setq hebrew-keyboard
+ [
+ "" "" "" "" "" "" "" ""
+ "" "" "" "" "" "" "" ""
+ "" "" "" "" "" "" "" ""
+ "" "" "" "" "" "" "" ""
+ " " "!" "\"" "#" "$" "%" "&" "'"
+ "(" ")" "*" "+" "\372" "-" "\365" "."
+ "0" "1" "2" "3" "4" "5" "6" "7"
+ "8" "9" ":" "\363" "<" "=" ">" "?"
+ "@" "A" "B" "C" "D" "E" "F" "G"
+ "H" "I" "J" "K" "L" "M" "N" "O"
+ "P" "Q" "R" "S" "T" "U" "V" "W"
+ "X" "Y" "Z" "[" "\\" "]" "^" "_"
+ ";" "\371" "\360" "\341" "\342" "\367" "\353" "\362"
+ "\351" "\357" "\347" "\354" "\352" "\366" "\356" "\355"
+ "\364" "\\" "\370" "\343" "\340" "\345" "\344" ","
+ "\361" "\350" "\346" "{" "|" "}" "~" ""])
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps
new file mode 100644
index 0000000000..bea7fc6542
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/doc.ps
@@ -0,0 +1,631 @@
+%!
+%%Creator: dvips 5.497 Copyright 1986, 1992 Radical Eye Software
+%%Title: doc.dvi
+%%CreationDate: Mon Apr 18 09:18:19 1994
+%%Pages: 2
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSCommandLine: dvips doc.dvi
+%DVIPSSource: TeX output 1993.01.04:1934
+%%BeginProcSet: tex.pro
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255
+{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76
+div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N
+/ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{
+pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4
+getinterval(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{
+gsave transform round exch round exch itransform moveto rulex 0 rlineto 0
+ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N
+/tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
+B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B
+/w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{
+p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save
+N}B /eos{SS restore}B end
+%%EndProcSet
+TeXDict begin 40258437 52099154 1000 300 300 (/acc/joel/hemacs/doc.dvi)
+@start /Fa 11 118 df<00000600000000000F00000000000F00000000000F00000000000F00
+000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000
+000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00
+000000000F00000000000F00000000000F0000007FFFFFFFFFE0FFFFFFFFFFF0FFFFFFFFFFF07F
+FFFFFFFFE000000F00000000000F00000000000F00000000000F00000000000F00000000000F00
+000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000
+000F00000000000F00000000000F00000000000F00000000000F00000000000F00000000000F00
+000000000F0000000000060000002C2E7CA535>43 D<FFFFFFF80000FFFFFFFF8000FFFFFFFFC0
+0003F8001FF00003F8000FF80003F80007FC0003F80003FC0003F80003FC0003F80003FE0003F8
+0001FE0003F80001FE0003F80001FE0003F80003FE0003F80003FC0003F80003FC0003F80007F8
+0003F8000FF00003F8001FE00003F800FFC00003FFFFFE000003FFFFFFE00003F80007F00003F8
+0003FC0003F80001FE0003F80001FE0003F80000FF0003F80000FF0003F80000FF8003F80000FF
+8003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F80000FF0003F80001FF0003F8
+0003FE0003F80007FC0003F8001FF800FFFFFFFFF000FFFFFFFFC000FFFFFFFE000029297DA831
+>66 D<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003
+FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C038
+03FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C0
+0003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00
+001C03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFF
+FFFFF0FFFFFFFFF0FFFFFFFFF027297DA82D>69 D<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC0
+7F803FC03FC07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0F0003F
+C001E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC00000
+00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F
+C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
+00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F
+C0000000003FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>84
+D<7FFFF81FFFF07FFFF81FFFF07FFFF81FFFF001FF0000780000FF8000F000007FC001E000007F
+C001C000003FE003C000001FF0078000000FF80F0000000FF80E00000007FC1E00000003FE3C00
+000003FE7800000001FF7000000000FFF0000000007FE0000000007FC0000000003FE000000000
+1FF0000000001FF0000000001FF8000000001FFC000000003FFE000000007BFE00000000F1FF00
+000000E0FF80000001E0FFC0000003C07FC0000007803FE0000007001FF000000F001FF000001E
+000FF800003C0007FC0000380003FE0000780003FE0000F00001FF0000E00000FF80FFFF801FFF
+FEFFFF801FFFFEFFFF801FFFFE2F297EA834>88 D<01FF800007FFF0000F81F8001FC07E001FC0
+7E001FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800F
+E03F803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF80
+3F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F
+801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF00
+0000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003
+F01E0000FFFC00001FE0001A1B7E9A1F>99 D<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C38
+3F007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC
+000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFF
+FF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C
+0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>103
+D<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801
+FF003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F80
+0FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC
+003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
+E001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3A
+>109 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007FFF
+803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC0070FF01
+E0F7FFC0C1FF00161B7E9A1B>115 D<FFE03FF800FFE03FF800FFE03FF8000FE003F8000FE003
+F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
+03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
+E003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF80211B7D9A26
+>117 D E /Fb 23 122 df<E038F078F078F078F078F078F078F078E038E03860300D0B7C9816>
+34 D<30787C3C1C1C1C1C3878F0E040060D789816>39 D<00E001E0038007000E001C001C0038
+003800700070007000E000E000E000E000E000E000E000E000E000700070007000380038001C00
+1C000E000700038001E000E00B217A9C16>I<C000E000700038001C000E000E00070007000380
+0380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E001C0038
+007000E000C0000A217B9C16>I<387C7E7E3E0E1E1C78F060070B798416>44
+D<FFFF80FFFF80FFFF8011037E8D16>I<00F80003FC0007FE000F07001C3F80387F8078FF8071
+C3C071C3C0E381C0E381C0E381C0E381C0E381C0E381C0E381C071C38071C38078FF00387E001C
+3C000F03C007FFC003FF0000FC0012197E9816>64 D<01F18007FB800FFF801F0F803C07803803
+80700380700380F00000E00000E00000E00000E00000E00000E00000E00000F000007003807003
+803803803C07001F0F000FFE0007FC0001F00011197E9816>67 D<FC07E0FE0FE0FE0FE03A0B80
+3B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B38039B38039F38038E38038E380
+380380380380380380380380380380FE0FE0FE0FE0FE0FE013197F9816>77
+D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E
+00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E00000E0000
+0E00000E00000E3E000EFF000FFF800F83C00F00E00E00E00E00700E00700E00700E00700E0070
+0E00700E00E00F01E00F83C00FFF800EFF00063C001419809816>I<003F00007F00003F000007
+0000070000070000070003C7000FF7001FFF003C1F00780F00700700E00700E00700E00700E007
+00E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>100
+D<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F01012
+7D9116>I<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F
+03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87F
+C7F01519809816>104 D<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E
+7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F
+87F0FFCFF07F87F01419809816>107 D<FFC000FFC000FFC00001C00001C00001C00001C00001
+C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
+C00001C000FFFF80FFFF80FFFF8011197E9816>I<7E3C00FEFE007FFF000F87800F03800E0380
+0E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F0151280
+9116>110 D<FF0FC0FF3FE0FF7FE007F04007C000078000078000070000070000070000070000
+070000070000070000070000FFFC00FFFC00FFFC0013127F9116>114 D<030000070000070000
+0700000700007FFF00FFFF00FFFF00070000070000070000070000070000070000070000070100
+07038007038007038007870003FE0001FC0000F80011177F9616>116 D<7E1F80FE3F807E1F80
+0E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF0
+07FBF803E3F01512809116>I<FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F3
+0019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>119
+D<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C
+00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E
+0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000
+E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I
+E /Fc 20 122 df<0001FC000703000C03001C07001C0300180000380000380000380000380000
+700007FFFC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001
+C0E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC000070
+00001825819C17>12 D<00000200000600000600000C00000C0000180000300000300000600000
+600000C00000C0000180000180000300000600000600000C00000C000018000018000030000030
+0000600000C00000C0000180000180000300000300000600000C00000C00001800001800003000
+00300000600000600000C0000080000017297F9E15>47 D<03CC063C0C3C181C38383038703870
+38E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E00
+0E000E001C001C001C001C0039C03E60383038307038703870387038E070E070E070E060E0E0C0
+C0C1C0618063003C000D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000E0
+00E000E008E010602030C01F000E127B9113>I<01E007100C1018083810701070607F80E000E0
+00E000E000E000E0086010602030C01F000D127B9113>101 D<0FC00001C00001C00003800003
+80000380000380000700000700000700000700000E78000E8C000F0E000E0E001C0E001C0E001C
+0E001C0E00381C00381C00381C00383800703880703880707080707100E03200601C00111D7D9C
+15>104 D<01800380010000000000000000000000000000001C002600470047008E008E000E00
+1C001C001C0038003800710071007100720072003C00091C7C9B0D>I<0006000E000600000000
+0000000000000000000000F00118021802180438043800380038007000700070007000E000E000
+E000E001C001C001C001C003800380C300E700CE0078000F24819B0D>I<1F8003800380070007
+00070007000E000E000E000E001C001C001C001C0038003800380038007000700070007000E400
+E400E400E40068003800091D7C9C0B>108 D<3C1E0780266318C04683A0E04703C0E08E0380E0
+8E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C070380380E0388380E0388380E07
+08380E0710701C0320300C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E
+07000E07001C0E001C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C91
+17>I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E00
+0F127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381
+C00381800703800703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00
+003C0000FF8000131A7F9115>I<3C3C26C2468747078E068E000E000E001C001C001C001C0038
+003800380038007000300010127C9112>114 D<00C001C001C001C00380038003800380FFE007
+00070007000E000E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E>
+116 D<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C00
+3838803838801838801839001C5900078E0011127C9116>I<1E01832703874703874703838707
+018707010E07010E07011C0E021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3
+C018127C911C>119 D<070E0019910010E38020E38041C30041C00001C00001C0000380000380
+00038000038000070200670200E70400CB04008B080070F00011127D9113>I<1E032707470747
+07870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0E0C0E1C0
+818047003C00101A7C9114>I E /Fd 3 56 df<03C00C301818300C300C700E60066006E007E0
+07E007E007E007E007E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0
+101D7E9B15>48 D<030007003F00C7000700070007000700070007000700070007000700070007
+0007000700070007000700070007000700070007000F80FFF80D1C7C9B15>I<4000007FFF807F
+FF007FFF0040020080040080040080080000100000100000200000600000400000C00000C00001
+C00001800001800003800003800003800003800007800007800007800007800007800007800003
+0000111D7E9B15>55 D E /Fe 3 121 df<E0000000780000001E0000000780000001E0000000
+780000001E0000000780000001E0000000780000001E00000007800000078000001E0000007800
+0001E00000078000001E00000078000001E00000078000001E00000078000000E000000019187D
+9520>62 D<01F0030C0E0C1C1E383C301870007000E000E000E000E000E000E004600860103060
+1F800F127E9112>99 D<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001C0
+0001C00001C000638080F38080F38100E5810084C60078780013127E9118>120
+D E /Ff 32 123 df<0304081030306060E0E0E0E0E0E0E0E060606030301008040108197D970D
+>40 D<806030181C1C0E0E0F0F0F0F0F0F0F0F0F0E0E0E1C1C18306080081A7C970E>I<307070
+3030302020404080040B7E8309>44 D<7FE07FE0FFC00B037E8D10>I<60F0F06004047E8108>I<
+200000003000040078000C00FC001E007F003E003F803E001FC01E000FE01E0007F01E0007F81C
+000EFC1C000E7E38001C3F38001C1FB000380FF0003807E0007803F0007801F8007800FC007800
+7C0078003E007F003F007F001F807F000F80FE000700FE00070000000300191B7F991B>96
+D<0800001800001800003FFC003FFE007FFF007FFF00000F800007800007800007C00003C00003
+C00003C00003C00003C00003C00003C00003C00003C00003C00003C03FFFF87FFFF07FFFF0FFFF
+E0151A7F9917>I<38003E007F00FF803FC00FC007E003E001E001E001E000E000F000F000F000
+F000F000F001F003F80FB83F387F387E38FC10F01080100D1B7F980F>I<1001003803003FFFF0
+7FFFF0FFFFE0FFFFE0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F00000F00000F00000F00000F00000F00000E00000C00000800141B7E9817>
+I<0800001800003FFFE07FFFF87FFFFCFFFFFC00003E00001E00001E00001E04001E0C001E1C00
+1E3C001E3C001E3C001E3C001E3C001E3C001E3C001E3C001E3C001E3C001E38001C38001C3000
+18200010171B7F981A>I<100038007C00FF007F803FC01FC007E003E001E001E001E001E001E0
+01E001E001E001E001E001E001E001E001E001E001E001C00180010001000B1D7F990D>I<3800
+7C00FE007F003F801FC00FE007F00DE00CE01C401C001C001C001E001E000E000F000F00078007
+8007C003C003800380010001000C1B7F980E>I<0800001800003FFC007FFF80FFFFE0FFFFF07C
+03F87C00F87C007C3C007C3C003C3C003E3C003E3C001E3C001E3C001E3C001E38001E38001E38
+001E38001E78001E78001E70001E70001C600018400010171B7F9819>I<200000007001F00070
+0FFC00F00FFE00F01FFF00F81FFF0078381F8078000F8078000F803C0007803C0007803C000780
+3C0007003C0007003E0007003E000E001E000E001E001C001F003C001F0078001F01F0000F87E0
+000FFFC0000FFF800007FE000003F00000191A7F981B>I<3C007E00FF007F803F800FC007C003
+E001E001E001E001C003C0038007000E001C00180020000B137F980D>I<1000003000007FFFE0
+7FFFC0FFFFC0FFFF80001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00
+001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00
+001E00001E00001C0000180000100013227E9816>I<1000003000003800007FFE007FFF80FFFF
+C0FFFFE00007E00003E00001F00001F00000F00000F00000F00000F00000F00000E00000E00001
+E00001C00001C00003803FFF807FFF007FFE00FFFE00141A7F9917>I<100000300000700000F0
+00007000007000007000007000007FFFC07FFFE07FFFE07FFFE00003E00001E00001E00001E000
+01E00001C00003C00003C0000780000780000F00001F00003E0000FC0007F8001FF0001FE0003F
+80003E000078000040000013217F9E15>I<040000000C0000001C0000003FFFFE007FFFFF80FF
+FFFFC03FFFFFC01C0007E01C0003E01C0003E01C0001E01C0001E01C0001E01C0001E01C0001E0
+1C0001E01C0001E01C0001E01C0001E01C0001E01E0001E01F0001E01FFFFFC00FFFFF800FFFFF
+0007FFFE001B1A7F991D>I<1000003000003803E0780FF0FC1FF87C3FFC7E787C3E703C3EE01E
+1FC01E1FC00E1F800F1F800F1F000F1F00073E00073E00073C00073C00073C0007780007780007
+707FFE707FFE60FFFCE0FFFCC00000800000181C7F991A>I<100038007C00FF007F803FC01FC0
+07E003E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001
+E001E001E001E001E001E001C0018001000B237F990C>I<04000E001F001F803FC01FE007F003
+F001F000F00070007000700070007000700070007000700070007000703FF07FE0FFE0FFC00C1A
+7F990E>I<040000000C0000001C0000003FFFFF807FFFFFC0FFFFFFE0FFFFFFE07E0003F03E00
+03F03F0001F01F0001F01F0001F00F0001F00F0001F00F8001F00F8003E0078003E0078007C007
+8007C007C00F8003C01F0003C03E0003E0FC0003FFF80001FFF00001FFC00000FF8000007E0000
+1C1C7F991E>I<1800C03801C07C03C07C07C07C03E03E03E03E01E01F01E01F01E00F00E00F80
+E00780E00780E003C0C003C0C001C1C001E38000E78000EF0000FE0001FC001FF8007FE0007F80
+007E0000F00000C00000131B7F9816>I<03000007E0000FF8001FFC003C7F00381F807007C070
+03C0F001E0F001E0F800E0F800E0FC00E07F00E03F00E01F00E00E00E00400E00000E00000E000
+00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000C000
+008013227F9916>I<03800007F0000FFC001FFE001DFF803C3FC0380FE07803F07801F07801F0
+7C00F07E00F07F00F03F00F01E00F00400F00000F00000F00000F00000F00000F00000E03FFFE0
+7FFFC07FFFC0FFFF80141A7F9916>I<200000300080700180F80380FC0380FC07807E07803F07
+801F07800F870007870007C70003CE0001EE0001FC0000FC00007800007800003C00001C00001E
+00000E00000F000007000007000003800003800003800001C00001C00001C00000C00000800000
+8012227E9915>I<0800000800601C00603C00F07E01F03F01F01F80F01FC0F00FC0E007E0E003
+F0C001F9C000FD80007F00003F00001F80000FC00007E00003E00001F00000F80000F03FFFE07F
+FFE07FFFC0FFFF80151A7F9917>I<0800000018000000180000003FFFFF007FFFFF807FFFFFC0
+FFFFFFC000000FC0000007C0000003C0040003C00C0003800C0003801C0003803C0007003C0007
+003C0007003C000E003C000E003C001C003C0038003C00F8003C07F0003C1FE0003C1FC0003C1F
+00003C3C00003C3000003C0000003C0000003C0000003C0000003C000000380000003800000030
+000000200000001A257F991D>I<0800001800003FFE007FFF807FFFC0FFFFE00007E00003F000
+01F00001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
+00F00000F00000F00000E00000C0000080141B7F9816>I<1001004030030040780700C0F80F81
+C0F80F83E0F80F83E07C0F83E07C0F83E07C0F81E03E0F81E03E0F01E03E0F01E01E1E01E01F1E
+01C01F7C01C01FF801C00FF001800FE003800F8003000780070007800E0007801C0003C0780003
+C3F00003FFE00001FFC00001FF000000FE0000007800001B1D7F991E>I<040000000C0000001C
+0000003FFFFF003FFFFF807FFFFF80FFFFFFC0078007C003C003C003C003C003C001C001C001C0
+01C001C001C001C001E001C001E001C000E001C000E001C000E001C000E001C000E001C000C001
+C03FC001C03FC001C07F8001C0FF80018000000180000001001A1C7F991C>I
+E /Fg 54 127 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F807C
+000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F80
+7C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C007F
+E1FFC07FE1FFC01F1D809C1C>11 D<003FC00001F0300003C0380007C07C000F807C000F807C00
+0F8038000F8000000F8000000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C
+000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F80
+7C000F807C007FE1FF807FE1FF80191D809C1B>I<781E00FC3F00FC3F00FE3F80FE3F807A1E80
+020080020080040100040100080200080200300C00401000110E7E9C19>34
+D<078000180018600038003830007800703C01F0007013FEE000F01801C000F01803C000F01807
+8000F018070000F0180E0000F0181E0000F0183C0000701038000070307000003820F000001841
+E000000781C07800000381840000078382000007070300000E070100001E0F0180003C0F018000
+380F018000700F018000F00F018001E00F018001C00F0180038007010007800703000700038200
+0E00018400060000780021217D9E28>37 D<0020004001800380030006000E001C001C003C0038
+003800780078007800F800F000F000F000F000F000F000F000F000F000F8007800780078003800
+38003C001C001C000E000600030003800180004000200B297C9E13>40 D<800040003000380018
+000C000E000700070007800380038003C003C003C003E001E001E001E001E001E001E001E001E0
+01E003E003C003C003C0038003800780070007000E000C00180038003000400080000B297D9E13
+>I<01C00003E00001C00041C100F1C780F9CF80FDDF803EBE0007F00007F0003EBE00FDDF80F9
+CF80F1C78041C10001C00003E00001C00011127D9E18>I<78FCFCFEFE7A020204040808304007
+0E7D850D>44 D<FFE0FFE0FFE0FFE00B047F8A10>I<78FCFCFCFC7806067D850D>I<0001800003
+80000380000700000700000700000E00000E00001C00001C00001C000038000038000038000070
+0000700000E00000E00000E00001C00001C00001C0000380000380000380000700000700000E00
+000E00000E00001C00001C00001C0000380000380000700000700000700000E00000E00000C000
+0011297D9E18>I<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003
+E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
+E00003E0007FFF807FFF80111B7D9A18>49 D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03
+E0FC03E07803E00007E00007C00007C0000F80001F00001E0000380000700000E0000180600300
+600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F8000FFE001E0F8038
+07803803C07803C07803C07E03C07F83807FC7003FFE001FFC000FFE0007FF801DFF80387FC078
+1FE0F007E0F003E0F001E0F001E0F001E07801C07803803E07801FFE0003F800131B7E9A18>56
+D<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58 D<FFFFFFFCFFFFFFFC7FFFFFFC
+000000000000000000000000000000000000000000000000000000007FFFFFFCFFFFFFFCFFFFFF
+FC1E0D7D9025>61 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E00
+00607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC
+0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC00
+001FE0001B1C7D9B22>67 D<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003
+800FC181800FC181800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC1
+80000FC180600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FF
+FFFF80FFFFFF801B1C7E9B1F>69 D<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC00380
+0FC003800FC001800FC181800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380
+000FC180000FC180000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC0
+0000FFFF0000FFFF0000191C7E9B1E>I<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F00FC0
+03F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003F00F
+C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F0
+0FC003F0FFFC3FFFFFFC3FFF201C7E9B25>72 D<FFFF00FFFF000FC0000FC0000FC0000FC0000F
+C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0030F
+C0030FC0070FC0070FC0060FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76
+D<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C1F80300C1F
+C0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F300C001FB00C
+001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC00070FFC00030201C7E9B
+25>78 D<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00FC007E00FC007
+E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC000000FC000000FC0
+00000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000FFFC00001B
+1C7E9B21>80 D<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC007E0000FC0
+07E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E00000FFFF000000F
+C07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000FC01F80000FC01F8000
+0FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE00211C7E9B24>82
+D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE003FFF
+003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03
+C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C0
+1F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
+0007FFFE0007FFFE001C1C7E9B21>I<FFFC01FF80FFFC01FF800FC000180007E000300007E000
+300007F000700003F000600003F800E00001F800C00001FC00C00000FC01800000FC018000007E
+030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC0000000FD8000000
+0FD800000007F000000007F000000007F000000003E000000003E000000001C000000001C00000
+211C7F9B24>86 D<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000
+FE0C0000007F1C0000003F380000003FB00000001FE00000000FE00000000FE000000007F00000
+0003F800000007F80000000FFC0000000CFE000000187E000000387F000000703F800000601F80
+0000C01FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF80211C7F9B24>88
+D<040100180600200800200800401000401000802000802000BC2F00FE3F80FE3F807E1F807E1F
+803C0F00110E7B9C19>92 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C0
+1F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97
+D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F801FE1
+E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00
+781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F8
+0000F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>I<
+000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9F00F07F0
+1C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F0
+1C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801
+E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC0013127F9116>I<00
+7F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F
+80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
+80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07303C07803C07803C07803C0780
+1C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078
+F00078F000787000707800F01E03C007FF00151B7F9118>I<FF0000FF00001F00001F00001F00
+001F00001F00001F00001F00001F00001F00001F0FC01F31E01F40F01F80F81F80F81F00F81F00
+F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF181D7F9C1B
+>I<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I<007800FC00FC00FC00
+FC007800000000000000000000000003FC03FC007C007C007C007C007C007C007C007C007C007C
+007C007C007C007C007C007C007C007C707CF87CF878F8F070E01F800E26839D0F>I<FF0000FF
+00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0FF81F03801F
+07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F801F07C01F03E0FF
+C7FCFFC7FC161D7F9C19>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF
+0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C0
+1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
+C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F8
+1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>
+I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800F87800
+F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E01F80F01F00781F007C1F
+003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00781F80F01FC1E01F3F001F
+00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E00FE47001E8F80
+1E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000
+FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007C
+C01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F000F003FFCFFFC
+1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>I<
+FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
+1F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0
+C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC000078000078000030001612
+7F9119>I<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CE
+F8C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F
+127F9122>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE00
+01DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F80
+E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE0000FC0000FC000078000078
+00003000003000007000706000F86000F8C000F980007300003E0000161A7F9119>I<1E023FFC
+7FF880F00F047C9C18>126 D E /Fh 2 111 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFF
+FF7FFE7FFE3FFC1FF80FF003C010107E9115>15 D<C000C0006000600060003000300030001800
+180018000C000C000C000600060003000300030001800180018000C000C000C000600060003000
+300030001800180018000C000C000C0006000600060003000110297E9E15>110
+D E /Fi 20 123 df<FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20047B932A>45
+D<FFFE0000FFFFC000FFFFF000FFFFF800FFFFFC00FFFFFC000007FE000001FE000000FE000000
+7F0000007F0000007F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000
+003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00
+00003F00FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF01C237CA224>97
+D<FFE000FFF800FFFC00FFFE00FFFE00FFFE0000FF00007F00007F00003F00003F00003F00003F
+00003F00003F00007F00007F00007F0000FF0000FF0001FF0001FF0003FF8007FF800FFF800FDF
+801F9F803F9F807F1F80FE1F80FC0F80F80FC0F00FC0E00FC0C00FC080000012247CA218>I<FF
+FFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFF0000003F0000003F0000003F0000003F00
+00003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F
+0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000000
+3F0000003F0000003F0000003F0000003F0000003F001C237CA224>I<FFFFE000FFFFF800FFFF
+FE00FFFFFF00FFFFFF80FFFFFF800000FFC000003FC000001FC000000FE000000FE000000FE00C
+0007E03C0007E07C0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007
+E0FC0007E0FC0007E0FC0007E01B237BA225>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F805237BA20F>I<FFFFF000FFFFFE00FFFFFF80FFFFFFC0
+FFFFFFE0FFFFFFE0FC001FF0FC0007F0FC0003F0FC0003F8FC0001F8FC0001F8FC0001F8FC0001
+F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC00
+01F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC
+0001F8FC0001F81D237BA227>103 D<FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF8F0C00615
+7BA20F>105 D<FFFE0000FFFFC000FFFFF800FFFFFE00FFFFFF00FFFFFF800007FFC00000FFC0
+00003FE000001FE000000FF0000007F0000007F0000007F8000003F8000003F8000003F8000003
+F8000003F8000003F8000003F8000003F8000007F0000007F000000FF000000FE000001FE00000
+3FC00000FFC00003FF80FFFFFF00FFFFFE00FFFFF800FFFFF000FFFF00001D237CA224>107
+D<FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00
+0000FC000000FC000000FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC000001FC000
+001F8000001F8000003F0000003F0000007E0000007E0000007E000000FC000000FC000001F800
+0001F8000001F8000003F0000003F0000007E0000007E0000007E000000FC000000FC000001F80
+00001F8000003F8000003F0000003F0000007E0000007E000000FE000000FC00001A2F7CAE22>
+I<FFFFF800FFFFFF00FFFFFFC0FFFFFFE0FFFFFFF0FFFFFFF0FC000FF8FC0003F8FC0001F8FC00
+01FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC
+0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FCFC0000FC
+FC0000FCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC1E237BA227>I<FC007F8000FC01FF
+E0007E07FFF8007E0FFFFC003E1FFFFE003F3F81FF003F3E007F001F7C003F801FF8001F801FF8
+000FC00FF0000FC00FF00007C00FE00007C00FE00003E00FE00003E00FC00003E00FC00003E00F
+C00003E00FC00003E00F800003E00F800003E00F800003E00F800003E00F800003E01F800007C0
+1F800007C01F80000FC01F80000F801F80001F801F00003F001F0180FF003F01FFFE003F01FFFC
+003F01FFF8003F01FFE00000007F800023247CA22B>I<FF80FFF0FFF8FFFCFFFEFFFE00FE007F
+003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F003F00
+3F003F003FFFFFFFFFFFFFFFFFFFFF10237CA218>112 D<FFFFF800FFFFFF00FFFFFFC0FFFFFF
+E0FFFFFFF0FFFFFFF8FC000FF8FC0003FCFC0001FCFC0000FEFC0000FEFC00007EFC00007FFC00
+007FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC00003FFC
+00003F7E00007F7E00007E7E00007E3F0000FE3F8001FC1FC003FC1FF80FF80FFFFFF807FFFFF0
+03FFFFE001FFFFC0007FFF00000FF80020257CA227>I<FFFFF800FFFFFE00FFFFFF80FFFFFFC0
+FFFFFFE0FFFFFFF0FC003FF8FC000FF8FC0003FCFC0001FCFC0000FEFC0000FEFC00007EFC0000
+7FFC00003F7E00003F7F00003F7FF0003F3FF0003F1FF0003F07F0003F0000003F0000007E0000
+007E0000007E000000FC000001FC000003F800000FF800007FF0FFFFFFE0FFFFFFC0FFFFFF80FF
+FFFE00FFFFF80020237CA227>116 D<FE0000FC7F0000F83F8000F81F8000F81FC000F80FE000
+F807F000F807F000F803F800F801FC00F800FE00F800FE01F0007F01F0003F81F0001FC3E0001F
+C3E0000FE7C00007FFC00007FF800003FF000001FE000000FE000000FF0000007F0000003F8000
+001FC000001FE000000FE0000007F0000003F8FFFFFFF8FFFFFFF8FFFFFFF8FFFFFFF8FFFFFFF8
+1E237CA225>118 D<FFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE000000FE0000
+00FC000000FC000001F8000001F8000003F8000003F0000003F00C0007E01C0007E07C000FE0FC
+000FC0FC001FC0FC001FC0FC001F80FC003F80FC003F00FC007F00FC007F00FC007E00FC00FE00
+FC00FC00FC01FC00FC01FC00FC01F800FC03F800FC03F000FC07F000FC07F000FC000000FC0000
+00FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000001F2E
+7BA228>I<FFFE00FFFFC0FFFFF0FFFFF8FFFFFCFFFFFC000FFE0001FE0000FE00007F00007F00
+003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00
+003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F18237CA220>I<
+F801F801F8F801F801F8F801F801F8F801F801F8F801F801F8F801F801F8F801F801F8F801F801
+F8F801F801F8F801F801F8F801F801F8F801F801F8F801F001F8F801F001F8F801F001F8F803F0
+01F8F803E001F0F807E001F0F80FE003F0783FC003F07FFF8003F07FFF0003F07FFC0007E03FF0
+0007E03F00000FE03F00000FC01F00001FC01F80003F800FC0007F800FE000FF0007FC03FF0003
+FFFFFE0001FFFFFC0000FFFFF800003FFFE000000FFFC0000001FE000025257BA22F>I<FFFFFF
+C000FFFFFFF800FFFFFFFE00FFFFFFFF00FFFFFFFF80FFFFFFFF8000FC007FC000FC001FC000FC
+000FC000FC0007E000FC0007E000FC0007E000FC0003E000FC0003E000FC0003E000FC0003E000
+FC0003E000FC0003E000FC0003E000FC0003E000FC0003E000FC0003E000FC0003E000FC0003E0
+00FC0003E000FC0003E000FC0003E000FC0003E001FC0003E001FC0003E083F80003E0FFF80003
+E0FFF00003E0FFF00003E0FFE00003E0FFC00000001F0000000023257CA22C>I
+E /Fj 5 116 df<000FFFFFFFFE000FFFFFFFFE00007F0000FE00007E00003E00007E00001E00
+007E00001E00007E00000C0000FC00000C0000FC00000C0000FC00000C0000FC00000C0001F800
+000C0001F800000C0001F800000C0001F800000C0003F00040080003F000C0000003F000C00000
+03F000C0000007E00180000007E00180000007E00380000007E00F8000000FFFFF0000000FFFFF
+0000000FC00F0000000FC0070000001F80060000001F80060000001F80060000001F8006000000
+3F000C0020003F00040060003F00000060003F000000C0007E000000C0007E00000180007E0000
+0180007E0000030000FC0000030000FC0000070000FC00000E0000FC00000E0001F800001C0001
+F800003C0001F80000F80003F8000FF800FFFFFFFFF000FFFFFFFFF0002F317BB031>69
+D<0007E000001FF1C0003C3BE000F01FE001E00FE003E00FC007C007C0078007C00F8007C01F80
+0F801F000F803F000F803F000F807E001F007E001F007E001F007E001F00FC003E00FC003E00FC
+003E00FC003E04FC007C0CFC007C0C78007C0C7800FC187C01FC183C03FC183C077C301E1E3C60
+0FF81FC003E007801E1F799E25>97 D<0001F800000FFE00003F0700007C038000F0078001E00F
+8003C01F8007C01F800F801F001F800E001F0000003F0000003F0000007E0000007E0000007E00
+00007E000000FC000000FC000000FC000000FC000000FC0000007C0001007C0001807C0003003C
+0006003E001C001E0078000F81E00003FF800000FE0000191F799E21>99
+D<03C007E003F0000FF03FF80FFC001C78787C1C1E001878C03E701F00307D801E600F00307F00
+1EC00F00607E001F800F80607E001F000F80607C001F000F00C0F8003E001F00C0F8003E001F00
+00F8003E001F0000F8003E001F0001F0007C003E0001F0007C003E0001F0007C003E0001F0007C
+007C0003E000F8007C0003E000F8007C0003E000F800F80003E000F800F80807C001F000F81807
+C001F001F01807C001F001F01807C001F001F0300F8003E001E0300F8003E001E0600F8003E001
+E0C00F8003E000E1800F0003C000FF000E000380003E00351F7A9E3B>109
+D<000FC0003FF000783800F01C01E01C01C03C03C07C03C07C03C07807C00007E00007F80003FF
+8003FFC003FFE001FFF0007FF0000FF80001F80000F83800F87C00F0FC00F0FC00F0F800E0F001
+E0C003C0600780781F001FFC0007F000161F7A9E1D>115 D E /Fk 6 123
+df<FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFE0FFC0FFC0FFC0FFC0FFC0FFC0FF
+C0FFC0FFC0FFC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07FC07F807F807F807F80
+7F807F807F807F807F807F8000000000000000000000FFC0FFC0FFC0FFC0FFC0FFC0FFC0FFC0FF
+C0FFC00B3B76B721>33 D<FFFFF00000FFFFFF0000FFFFFFC000FFFFFFF000FFFFFFF800FFFFFF
+FC00FFFFFFFE00FFFFFFFE0000007FFF0000001FFF00000007FF80000003FF80000001FF800000
+01FF80000000FFC0000000FFC0000000FFC00000007FC00000007FC00000007FC00000007FC000
+00007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0
+0000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007F
+C00000007FC00000007FC00000007FC00000007FC00000007FC0FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28327AB133>97
+D<FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80
+FF80FF80FF80FF80FF80FF80FF80FF00FC00F000E0008000091F79B116>105
+D<7F8000001FE07FC000001FE07FC000001FE03FC000001FE03FC000001FE03FE000001FE03FE0
+00001FE01FE000001FE01FE000001FE01FF000001FE01FF000001FE00FF000001FE00FF000001F
+E00FF800001FE00FF800001FE007F800001FE007F800001FE007FC00001FE007FC00001FE007FC
+00001FC003FC00001FC003FE00003FC003FE00003FC003FE00003FC001FE00003FC001FF00003F
+C001FF00003FC001FF00007F8000FF00007F8000FF80007F8000FF8000FF8000FF8000FF80007F
+8001FF00007FC001FF00007FC003FF00007FC003FE00003FC007FE00003FE00FFC00003FE01FFC
+00003FE03FF800001FF07FF800001FF1FFF000001FF3FFE000001FFFFFC000000FFFFF8000000F
+FFFE0000000FFFFC0000000FFFF00000007FFFC0000001FFFF00000007FFFC0000003FFFF00000
+00FFFF80000000FFFE00000000FFF800000000FFE000000000FF0000000000FC0000000000F000
+00000000C000000000002B3C7BB136>114 D<FFFFF00000FFFFFF0000FFFFFFC000FFFFFFF000
+FFFFFFF800FFFFFFFC00FFFFFFFE00FFFFFFFE000000FFFF0000001FFF00000007FF80000003FF
+80000001FF80000001FF80000000FFC0000000FFC0000000FFC00000007FC00000007FC0000000
+7FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000
+007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC000
+00007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC0
+0000007FC00000007FC00000007FC00000007FC00000007FC00000007FC00000007FC022327AB1
+2E>120 D<FFFFFFFFF80000FFFFFFFFFF8000FFFFFFFFFFE000FFFFFFFFFFF800FFFFFFFFFFFC
+00FFFFFFFFFFFE00FFFFFFFFFFFF00FFFFFFFFFFFF00001FF0007FFF80001FF0000FFF80001FF0
+0003FFC0001FF00001FFC0001FF00000FFC0001FF00000FFC0001FF000007FE0001FF000007FE0
+001FF000007FE0001FF000007FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000
+003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE000
+1FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF00000
+3FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001FF000003FE0001F
+F000003FE0001FF000003FE0003FE000003FE0003FE000003FE0007FE000003FE081FFE000003F
+E0FFFFC000003FE0FFFFC000003FE0FFFF8000003FE0FFFF8000003FE0FFFF0000003FE0FFFE00
+00003FE07FFC00000000000FE0000000000033347AB140>122 D E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 707 322 a Fk(!zixara)14 b Fj(Emacs)1221 472 y Fi(zipkzd)20
+b(zvxd)g Fh(\017)262 547 y Fg(emacs8)26 b Ff(.)p Fg(~)21 b(jo)q(el/publ)o
+(ic/b)o(i)o(n/)15 b Ff(-a)j(z`vnpd)h(,)p Fg(emacs8)f Ff(zipkzd)g(z`)g(uixdl)g
+(yi)262 596 y(,seqnl)11 b(xyi)h Fe(c)f(>)h Fd(0177)f Ff(miezd)h(z`)g(gley)e
+Fg(emacs8)i Ff(-y)f(dfn)h(ueg)g(,ixewnd)g Fg(emacs)g Ff(-l)f(ddf)262
+646 y(oeekl)f(yi)i(,jqnd)f(lr)g(zeixard)h(zeize`d)f(z`)h(ze`xl)f(ick)i(.)p
+Fh(n)p Fe(xxx)d Ff(dxevl)h(mze`)g(mbxzn)h(`le)1402 696 y(.)p
+Fg(8N)h Ff(-l)g(seqn)g(z`)300 746 y Fg(~)j Fc(yourname)e Ff(-a)g(`vnpd)f(.)p
+Fg(emacs)h Ff(uaewl)f(ze`ad)h(zexeyd)f(z`)h(siqedl)e(yi)i(,sqepa)588
+796 y Fg(\(autoload)f Fb(')p Fg(hebrew)i Fb(")p Fg(~)h(jo)q(el/publ)o(i)o
+(c/bi)o(n/h)o(ebr)o(ew.el)p Fb(")p Fg(\))905 846 y(\(global-set-k)o(ey)d
+Fb(")p Fh(n)i Fg(C-xh)h Fb(")g(')p Fg(hebrew\))1443 895 y(\(hebrew\))1392
+945 y Ff(.)p Fb(C-xh)d Ff(yiwdle)1170 1045 y Fi(zipkza)19 b(yeniyd)g
+Fh(\017)262 1120 y Ff(dcewtd)e(z`)i(zzl)g(yi)h(,oey`xd)e Fg(bu\013er)f
+Ff(-d)h(ixg`)i(,zixar)g(ritez)e(ea)h Fg(bu\013er)e Ff(lka)919
+1169 y(.)p Fg(bu\013er)12 b Ff(-d)g(z`)j(oikdl)e Fb(\(M-x)21
+b(hebrew\))14 b Fc(hebr)n(ew)355 1219 y Fg(:)p Ff(ze`ad)g(zeiqiqad)g(zecewtd)
+f(z`)h(mixicbn)h Fg(hebrew.el)d Ff(uaeway)i(mi`exwnd)632 1294
+y(\()p Fg(goto-hebrew-k)o(eyb)q(oard)p Ff(\))d(zixar)j(zclwnl)f(xear)h(-)f
+Fb(C-xh)629 1344 y Ff(\()p Fg(goto-engli)o(sh)o(-k)o(eyb)q(oard)o
+Ff(\))e(zilbp`)k(zclwnl)e(xear)h(-)f Fb(C-xe)798 1393 y Ff(\()p
+Fg(goto-hebrew-mo)q(de)p Ff(\))e(zixar)j(cenl)f(xear)h(-)f
+Fb(M-h)794 1443 y Ff(\()p Fg(goto-engli)o(sh-mode)p Ff(\))e(zilbp`)k(cenl)e
+(xear)h(-)f Fb(M-e)916 1493 y Ff(.)p Fg(k)o(ey-bindin)o(gs)e
+Ff(-d)i(z`)h(zepyl)f(ozip)i(,oaenk)262 1568 y(lr)d(zepneqnd)g(zeixard)h
+(zeize`l)g(mi`zn)g(micilwd)g(ietn)g(,)p Fg(hebrew-k)o(eyb)q(oard)e
+Ff(-a)262 1618 y(.dlibxd)16 b(zclwnl)g(mi`zn)i(ietnd)g(,oaenk)g(,)p
+Fg(english-k)o(eyb)q(oard)c Ff(-a)23 b(.)p Fg(VT-*)17 b Ff(-d)g(iteqn)262
+1667 y(b`ec)g Fg(emacs)24 b Ff(.)p Fg(VT-*)17 b Ff(-d)g(zeclwnay)g
+Fg(Hebrew)g Ff(cilwa)g(ynzydl)f(oi`)j(,)p Fg(vi.iv)e Ff(zne`l)687
+1717 y(.oinil)d(l`nyn)g(zilbp`e)g(,l`nyl)f(onin)i(azkiz)f(zixardy)g(jkl)480
+1767 y Fg(:)p Ff(zclwnd)f(zxigal)h(m`zda)g(zipzyn)g(mi`ad)g(micilwd)g(ly)f
+(ozebdpzd)948 1829 y(.)p Fb(C-a,)21 b(C-e,)g(C-k,)g(C-h,)g(tab,)g(return)262
+1892 y Ff(l`ny)e(cv)j(,zixara)f(oini)g(cv\))f(dxeyd)f(zligzl)h(\(onqd\))g
+Fg(p)q(oin)o(t)e Ff(-d)h(z`)i(fifn)g Fb(C-a)262 1941 y Ff(zixara)d(od)h
+(,dxeyd)e Fg(\\)p Ff(xzi)p Fg(")h Ff(z`)g(wgen)f Fb(C-y)26
+b Ff(.dxeyd)16 b(seql)h(eze`)g(fifn)i Fb(C-e)f Ff(,\(zilbp`a)262
+1991 y(.)p Fb(del)11 b Ff(mewna)i Fb(C-h)f Ff(-a)h(ynzydl)f(yi)g(okle)h
+(,onqd)g(iptly)g(ezd)f(z`)h(wgen)f Fb(C-h)h Ff(.zilbp`a)h(ode)262
+2041 y(,oinil)j(dxeyd)e(z`)i(fifn)g Fb(tab)g Ff(,zixara)23
+b(.zclwnd)16 b(zxiga)h(itl)f(dxey)g(ycgn)g(xcqn)g Fb(tab)262
+2091 y Ff(dxeyl)g(dxeyd)h(xzi)h(z`)h(fifne)g(,oekpd)f(mewna)g
+Fg(LF)g Ff(qipkn)g Fb(return)25 b Ff(.l`nyl)17 b(zilbp`ae)1584
+2141 y(.d`ad)262 2190 y(.oini)12 b(cva)g Fg(hebrew-mo)q(de)e
+Ff(-ae)i(,l`ny)g(cva)g(zeligzn)f(zexeyd)h(,)p Fg(english-mo)q(de)c
+Ff(-a)262 2240 y(aaxrl)13 b(xyt`e)g(,cala)i Fg(bu\013er)d Ff(-l)h(hqwhd)g
+(zqpkd)h(lr)f(drityn)g(ef)g(dpekz)h(,)p Fg(vi.iv)f Ff(zne`l)262
+2290 y(mebxz)i(eixg`e)g(zixara)h(sirq)e(qipkdl)i(,lynl)f(,ozip)20
+b(.cg`)14 b(uaew)i(jeza)f(micend)g(ipy)g(z`)1544 2340 y(.zilbp`a)966
+2574 y Fg(1)p eop
+%%Page: 2 2
+2 1 bop 1151 312 a Fi(miilaelb)19 b(miyetig)h Fh(\017)262 387
+y Ff(,)p Fg(minibu\013er)7 b Ff(-dn)j(ohlw)g(z`)h(ze`xew)f
+Fg(emacs)h Ff(-a)f(zecewtd)g(\()p Fg(\\)p Ff(aex)p Fg(")g Ff(oaena\))i(lke)e
+(zeid)262 437 y Fg(Searc)o(h-forw)o(ard)15 b Ff(-e)k Fg(Searc)o(h-bac)o(kw)o
+(ard)f Ff(,hxta)30 b(.zixara)19 b(mb)g(oda)g(ynzydl)e(ozip)262
+487 y(-d)24 b(z`)h(qipkdl)g(xyt`)j(,)p Fg(searc)o(h)d Ff(dcewtd)f(ixg`)48
+b(.zeira)25 b(ila)g(zixara)h(micwtzn)262 536 y(-xgn)12 b(ytgl)h(,oaenk)h
+(,ozip)h(.zeixar)f(zefexgn)f(ytgl)g(f`e)g(,zixard)h(zclwnl)f
+Fg(minibu\013er)1421 586 y Ff(.zeipeyl-ec)g(zefe)262 636 y(,zeixar)k(zeize`)g
+(milikn)f(mdizenyy)g(mivaw)h(zxivi)g(zxyt`n)g(mb)f(eiykr)g(zipkzd)1105
+686 y(.)p Fg(unix)c Ff(ipira)j(og)e(`ven)h(xacd)f(oi`)i(j`)1170
+790 y Fa(Emacs)22 b(+)i(T)1500 803 y(E)1536 790 y(X)f Fh(\017)262
+864 y Ff(md)17 b(miixwird)h(milcadd)27 b(.mze`)17 b(oikn)i
+Fg(emacs)f Ff(-y)f(enk)h(mivaw)g(lawn)g(epe`)g Fg(T)1570 874
+y(E)1595 864 y(X)262 914 y Ff(-npd)f Fg(rev)o(erse.\014lter)e
+Ff(dphw)j(zipkz)h(yi)g(,miizpia)29 b(.oxcqe)18 b(zeixard)g(zeize`d)g(ceciwa)
+262 964 y(z`xew)g(`id)g Fg(T)508 973 y(E)534 964 y(X)g Ff(uaewl)h
+Fg(emacs)f Ff(uaew)h(znxbxzny)g Fg(~)j(jo)q(el/publ)o(ic/b)o(i)o(n)15
+b Ff(-a)k(z`v)262 1014 y(,dpekpd)g(dxeva)f(zixard)h(z`)h(jetdl)e(ick)30
+b(.)p Fg(stdout)17 b Ff(-l)i(zazeke)g Fg(stdin)e Ff(-n)i(hlwd)f(z`)262
+1064 y(-r)12 b(zilbp`)p Fg(")h Ff(e`)g Fg(\\)p Ff(dkeza)f(zilbp`)i(mr)f
+(zixar)p Fg(")g Ff(hqwhd)g(m`)g(zrcl)f(jixv)h Fg(rev)o(erse.\014lter)262
+1113 y Ff(dcewtd)f(.oinil)h(l`lyn)f(e`)h(l`nyl)f(oinin)i(aezk)e(hqwhd)h
+(m`,xnelk)g Fg(\\)p Ff(,dkeza)f(zixar)i(m)262 1163 y(`edy)8
+b Fg(\045LR)i Ff(dcewtde)f(,l`nyl)g(oinin)i(epid)f(hqwhdy)f
+Fg(rev)o(erse.\014lter)e Ff(-l)i(dricen)g Fg(\045RL)262 1213
+y Ff(mr)18 b(.)p Fg(\045autoT)l(eX=o\013)c Ff(-e)g Fg(\045autoT)l(eX=on)h
+Ff(,zecewt)g(izy)h(yi)f(,sqepa)k(.oinil)d(l`nyn)262 1263 y(-xarl)9
+b(zeni`znd)h(zei)p Fg(T)651 1272 y(E)676 1263 y(X)g Ff(-d)f(zecewtd)g(z`)h
+(siqei)g Fg(rev)o(erse.\014lter)e(,\045autoT)l(eX=on)262 1313
+y Ff(,oaenk)k(xyt`)h(.ixewnd)e(uaewa)i(ritedl)e(zeaiig)h(zecewt)g(oze`)g(,)p
+Fg(\045autoT)l(eX=o\013)g Ff(mr)g(.zi)262 1363 y(-l)g(.hltd)h(uaewn)h(xzein)g
+Fg(white)g(space)f Ff(wgen)g(mb)h Fg(rev)o(erse.\014lter)c
+Ff(.micend)j(z`)h(aaxrl)262 1412 y(,)p Fg(~)d(jo)q(el/publi)o(c/bi)o(n)6
+b Ff(-a)k(z`vnp)h(`id)f(mby)h(,)p Fg(h)o(tex)e Ff(zipkz)i(yi)g(,zixaray)g
+Fg(T)1458 1422 y(E)1483 1412 y(X)f Ff(uaew)h(car)262 1462 y(mi`znd)20
+b(,.)p Fg(psc)f Ff(uaew)g(xvil)h(,)p Fg(dvi2ps)d Ff(z`e)i(,)p
+Fg(T)1021 1471 y(E)1047 1462 y(X)g Ff(z`)i(,)p Fg(rev)o(erse.\014lter)16
+b Ff(z`)k(dvixnye)262 1512 y(,)p Fg(emacs8)h Ff(eze`)g(xviy)i(,uaew)g(miiw)e
+(mr)i(,lynl)37 b(.)p Fg(xet.tex)20 b Ff(uaewn)k(,xfild)e(zeqtcnl)262
+1562 y(uaewd)e(z`)g(xviiz)42 b Fc(jo)n(el/public/bin/htex)22
+b(my)p 1047 1562 13 2 v 16 w(\014le)e Ff(dcewtd)f Fg(m)o(y)p
+1358 1562 15 2 v 17 w(\014le.xet.tex)g Ff(mya)1079 1612 y(.)p
+Fg(P)o(ostScript)10 b Ff(zxevay)j Fg(m)o(y)p 1538 1612 V 17
+w(\014le.psc)908 1720 y Fi(miipeyl-ec)19 b(mivaw)g(zqtcd)i
+Fh(\017)262 1795 y Ff(zipkzd)f(zxfra)j(,xviin)e Fg(emacs8)f
+Ff(eze`)g(uael)h(lk)f(xfild)g(zeqtcna)h(qitcdl)f(ozip)262 1845
+y(-a)c(ze`vnp)h(zipkeza)g(yeniy)f(ze`x`ed)22 b(.)p Fg(~)d(jo)q(el/publi)o
+(c/bi)o(n)13 b Ff(-a)k(z`vnpd)g(,)p Fg(text2ps)1053 1895 y
+Ff(.)p Fg(~)e(jo)q(el/publi)o(c/text)o(2ps/)o(read.me)1439
+2000 y Fa(Bugs)24 b Fh(\017)262 2075 y Ff(lr)13 b(ricedl)g(ywazn)i(ycg)e
+Fg(bug)h Ff(`vend)f(lk)g(j`)j(.dt)d Fg(bugs)g Ff(-d)h(lk)f(z`)i(hxtl)f(ozip)i
+(`l)1059 2124 y Fg(jo)q(el)p Fb(@)p Fg(tec)o(h)o(un)o(i)o(x.tec)o(hn)o(i)o
+(on.ac.il)c(:)p Ff(jk)966 2574 y Fg(2)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el
new file mode 100644
index 0000000000..ac94396e13
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/hoffman/hebrew.el
@@ -0,0 +1,736 @@
+
+;; >>.WARNING.<< This file contains (non-ascii) chars with the high-order
+;; bit set. Most mailers will choke on it.
+
+
+;; file "hebrew.el" ver 0.8
+;; last modified Jan. 2 1992
+
+;; Hebrew support for Emacs.
+;; Copyright (c) 1990-92 by Joel M. Hoffman.
+;;
+;; --> This project is dedicated to Orna Okouneff, who, against my
+;; will, insisted on teaching me Emacs.
+
+
+
+;; THIS IS A basic support package for editing Hebrew with Emacs. It
+;; assumes the keyboard layout of the VT* series for the purposes of
+;; mapping English keystrokes to their Hebrew equivilents. It also
+;; assumes the output hardware is compatible with the VT* series used
+;; in Israel, in that the high-order bit is assumed to indicate
+;; Hebrew; I believe this is incompatible with the DOS standard for
+;; hebrew. The package does not use the right-to-left facilites of
+;; the VT* terminals, so any terminal that converts characters >128
+;; decimal to Hebrew is supported. An EGA Hebrew font compatible with
+;; this package is available for the IBM.
+
+;; To work properly, the following files in Emacs 18.xx must be
+;; modified:
+;;
+;; xdisp.c
+;; indent.c
+
+;; You can use this package with the unmodified files, but the Hebrew
+;; letters will appear encoded as \xxx. I understand that ver. 19.00
+;; will have an option to support 8-bit-clean operation, and so will
+;; support this package. Demacs supports 8-bit-clean operation via
+;; the toggle-pass8 command.
+
+;; Currently, four major commands are supplied: C-Xh and C-Xe, which
+;; switch back and forth between Hebrew and English keyboards, and M-h
+;; and M-e, which switch back and forth between Hebrew and English
+;; "modes," which are not modes in the Emacs sense of the word, but
+;; rather determine if the margin is to be the left or right side of
+;; the screen, among other direction-specific paramaters.
+
+;; Emacs uses the eighth bit to indicate Hebrew letters. Most text
+;; formatters (TeX, *roff, etc.) use 7-bit character codes.
+;; Additionally, these formatters usually require Hebrew to appear in
+;; time-order. A pre-processor must be run before the formatter to
+;; effect these changes.
+
+
+
+;; I don't really know lisp or Emacs, or what I'm doing; comments and
+;; suggestions are welcome:
+;; joel@wam.umd.edu <-- Internet
+;; 72700,402 <-- Compuserve
+;; 72700.402@compuserve.com <-- Compuserve from Internet
+
+;; This package is not finished. The bugs herein defy enumeration.
+
+(defun hebrew-grab-keys ()
+ "take control of the keyboard and auto-fill."
+ (interactive)
+ (define-key global-map " " 'let-space)
+ (define-key global-map "a" 'let-a)
+ (define-key global-map "b" 'let-b)
+ (define-key global-map "c" 'let-c)
+ (define-key global-map "d" 'let-d)
+ (define-key global-map "e" 'let-e)
+ (define-key global-map "f" 'let-f)
+ (define-key global-map "g" 'let-g)
+ (define-key global-map "h" 'let-h)
+ (define-key global-map "i" 'let-i)
+ (define-key global-map "j" 'let-j)
+ (define-key global-map "k" 'let-k)
+ (define-key global-map "l" 'let-l)
+ (define-key global-map "m" 'let-m)
+ (define-key global-map "n" 'let-n)
+ (define-key global-map "o" 'let-o)
+ (define-key global-map "p" 'let-p)
+ (define-key global-map "q" 'let-q)
+ (define-key global-map "r" 'let-r)
+ (define-key global-map "s" 'let-s)
+ (define-key global-map "t" 'let-t)
+ (define-key global-map "u" 'let-u)
+ (define-key global-map "v" 'let-v)
+ (define-key global-map "w" 'let-w)
+ (define-key global-map "x" 'let-x)
+ (define-key global-map "y" 'let-y)
+ (define-key global-map "z" 'let-z)
+ (define-key global-map "," 'let-comma)
+ (define-key global-map ";" 'let-semi)
+ (define-key global-map ":" 'let-colon)
+ (define-key global-map "." 'let-period)
+ (define-key global-map "/" 'let-slash)
+ (define-key global-map "'" 'let-aigu)
+ (define-key global-map "`" 'let-grave)
+ (define-key global-map "\\" 'let-bslash)
+ (define-key global-map "-" 'let-hyphen)
+ (define-key global-map "!" 'let-xmark)
+ (define-key global-map "@" 'let-at)
+ (define-key global-map "#" 'let-pound)
+ (define-key global-map "$" 'let-dollar)
+ (define-key global-map "%" 'let-percent)
+ (define-key global-map "^" 'let-carrat)
+ (define-key global-map "&" 'let-ampersand)
+ (define-key global-map "*" 'let-asterisk)
+ (define-key global-map "(" 'let-lparend)
+ (define-key global-map ")" 'let-rparend)
+ (define-key global-map "{" 'let-lcbrace)
+ (define-key global-map "}" 'let-rcbrace)
+ (define-key global-map "[" 'let-lbrace)
+ (define-key global-map "]" 'let-rbrace)
+ (define-key global-map ">" 'let-gt)
+ (define-key global-map "~" 'let-tilde)
+ (define-key global-map "+" 'let-plus)
+ (define-key global-map "+" 'let-equal)
+ (define-key global-map "<" 'let-lt)
+ (define-key global-map "?" 'let-question))
+
+
+(defun let-plus ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "+" "+"))
+
+(defun let-equal ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "=" "="))
+
+
+(defun let-tilde ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "~" "~"))
+
+(defun let-gt ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ">" ">"))
+
+(defun let-lt ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "<" "<"))
+
+(defun let-question ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "?" "?"))
+
+(defun let-hyphen ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "-" "-"))
+
+(defun let-xmark ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "!" "!"))
+
+(defun let-at ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "@" "@"))
+
+(defun let-pound ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "#" "#"))
+
+(defun let-dollar ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "$" "$"))
+
+(defun let-percent ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "%" "%"))
+
+(defun let-carrat ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "^" "^"))
+
+(defun let-ampersand ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "&" "&"))
+
+(defun let-asterisk ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "*" "*"))
+
+(defun let-lparend ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "(" "("))
+
+(defun let-rparend ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ")" ")"))
+
+(defun let-lcbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "{" "{"))
+
+(defun let-rcbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "}" "}"))
+
+(defun let-lbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "[" "["))
+
+(defun let-rbrace ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "]" "]"))
+
+(defun let-colon ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ":" ":"))
+
+
+(defun let-a ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char"ù" "a"))
+(defun let-b ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ð" "b"))
+(defun let-c ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "á" "c"))
+(defun let-d ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "â" "d"))
+(defun let-e ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "÷" "e"))
+(defun let-f ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ë" "f"))
+(defun let-g ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ò" "g"))
+(defun let-h ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "é" "h"))
+(defun let-i ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ï" "i"))
+(defun let-j ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ç" "j"))
+(defun let-k ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ì" "k"))
+(defun let-l ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ê" "l"))
+(defun let-m ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ö" "m"))
+(defun let-n ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "î" "n"))
+(defun let-o ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "í" "o"))
+(defun let-p ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ô" "p"))
+(defun let-q ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "\\" "q"))
+(defun let-r ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ø" "r"))
+(defun let-s ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ã" "s"))
+(defun let-t ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "à" "t"))
+(defun let-u ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "å" "u"))
+(defun let-v ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ä" "v"))
+(defun let-w ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "'" "w"))
+(defun let-x ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ñ" "x"))
+(defun let-y ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "è" "y"))
+(defun let-z ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "æ" "z"))
+
+(defun let-space ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char " " " ")) ;;English auto-fill will be
+ ;;automatic. Hebrew auto-fill is
+ ;;still a problem.
+(defun let-comma ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ú" ","))
+
+(defun let-semi ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "ó" ";"))
+
+(defun let-period ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "õ" "."))
+
+(defun let-slash ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "." "/"))
+
+(defun let-aigu ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "," "'"))
+
+(defun let-grave ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char "/" "`"))
+
+(defun let-bslash ()
+ "comment"
+ (interactive)
+ (bilingual-insert-char ";" "\\"))
+
+
+(defun hebrew-set-up ()
+ "Comments will be here"
+ (interactive)
+
+
+;; Following are the ANSI-like codes to control the tty. Currently,
+;; they are unused.
+;; Changes may be necessary. Ideally, the code should consult a data-
+;; base, but we don't live in an ideal world.
+
+ (make-local-variable 'left-to-right-code)
+ (setq left-to-right-code "[?34l")
+ (make-local-variable 'right-to-left-code)
+ (setq right-to-left-code "[?34h")
+ (make-local-variable 'hebrew-keyboard-code)
+ (setq hebrew-keyboard-code "[?35h")
+ (make-local-variable 'english-keyboard-code)
+ (setq english-keyboard-code "[?35l")
+ (make-local-variable 'keyboard-off-code)
+ (setq keyboard-off-code "")
+ (make-local-variable 'keyboard-on-code)
+ (setq keyboard-on-code "")
+ (set-variable 'hebrew-keyboard ())
+ (make-variable-buffer-local 'hebrew-keyboard)
+ (set-variable 'hebrew-mode ())
+ (make-variable-buffer-local 'hebrew-mode)
+ (make-local-variable 'hebrew-mode)
+ (hebrew-grab-keys)
+; (global-set-key "\C-r" 'search-backward)
+; (global-set-key "\C-s" 'search-forward) ;;Good luck using this one!
+; (define-key esc-map "s" 'search-forward)
+
+;; Here are some constants:
+ (set-variable 'hebrew-right-margin 77) ;; Can't use 80, so we may as
+ ;; well leave some extra room.
+
+;;(Fine, so it was only ONE constant....)
+
+
+;; Now we take control over some of the major editing keys. The
+;; backspace has to delete the correct char. in Hebrew mode; return has
+;; know what to do with Hebrew, etc. I've left the arrow keys, but ^B,
+;; and ^F still mean "backward" and "forward." With ^A/^E I've got a
+;; problem, because ^A (to me) is "all the way left" but ^E is "end,"
+;; both of which would move to the left in Hebrew mode. Also
+;; "end-of-line" in Hebrew-mode has to ignore the spaces used to
+;; right-align the line. It would be silly for ^A to do that, so ^A is
+;; always "beginning-of-line," and ^E always "end-of-line." I've also
+;; left some of the more obscure commands/keys, ("obscure" being defined
+;; as things I don't use), because I'm too lazy to change them. ("Left
+;; as an excercise to the reader....")
+
+; (define-key global-map "\C-h" 'bilingual-backspace)
+ (define-key global-map "\177" 'bilingual-backspace)
+ ;; I'd like to use \177, but Emacs ignores
+ ;; me when I try. (Don't know why.)
+ ;; But Real Emacs-Users don't need help
+ ;; (^h) anyway....
+
+ (define-key global-map "\C-i" 'bilingual-tab)
+ (define-key global-map "\C-k" 'bilingual-kill-line)
+ (define-key global-map "\C-m" 'bilingual-return)
+ (define-key esc-map "d" 'bilingual-kill-word)
+ (define-key global-map "\C-a" 'bilingual-beginning-of-line)
+ (define-key global-map "\C-e" 'bilingual-end-of-line)
+ (define-key global-map "\C-f" 'bilingual-forward-char)
+ (define-key global-map "\C-b" 'bilingual-backward-char)
+ (define-key global-map "\C-d" 'bilingual-delete-char)
+
+
+;; Be user friendly:
+ (message
+"Use C-Xh for Hebrew, M-h for Hebrew mode. .úéøáò ãåîì M-h ,úéøáòì C-Xh ù÷ä")
+ (setq hebrew-keyboard ()) ;;start with English keyboard
+ (setq hebrew-mode ()) ;;and in English mode
+ )
+
+
+(defun bilingual-return ()
+ "In English mode, just return. In Hebrew mode, do the right thing."
+ (interactive)
+ (if (not hebrew-keyboard)
+ (newline)
+ (left-align-line)
+ (let ((here (point)))
+ (beginning-of-line)
+ (copy-to-register 'a (point) here t)
+ (if (eq hebrew-mode t)
+ (right-align-line)
+ (left-align-line))
+ (end-of-line)
+ (newline)
+ (insert-register 'a)
+ (if (eq hebrew-mode t)
+ (right-align-line)
+ (left-align-line))
+ (end-of-line))))
+
+(defun bilingual-beginning-of-line ()
+ "Move to the beginning of the current line, remembering that ``beginning
+of line'' is language-dependent"
+ (interactive)
+ (if (not hebrew-mode)
+ (beginning-of-line)
+ (end-of-line)
+ (backward-char 1)))
+
+
+
+(defun bilingual-end-of-line ()
+ "Move to the end of the current line, remembering that ``end of
+line'' is language-dependent"
+ (interactive)
+ (if (not hebrew-mode)
+ (end-of-line)
+ (beginning-of-line)
+ (while (looking-at "[ \t]")
+ (forward-char 1))
+ (if (not (bolp))
+ (backward-char 1))))
+
+
+(defun bilingual-forward-char (arg)
+ "forward-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (forward-char arg)
+ (backward-char arg)))
+
+(defun bilingual-backward-char (arg)
+ "backward-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (backward-char arg)
+ (forward-char arg)))
+
+(defun bilingual-delete-char (arg)
+ "delete-char that knows about Hebrew vs. English"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (delete-char arg)
+ (delete-char 1)
+ (backward-char 1)
+ (if (eq hebrew-mode t)
+ (right-align-line))))
+
+
+
+(defun bilingual-kill-word (arg)
+ "Kill the rest of the current word, remembering that ``the rest''
+is language dependent"
+ (interactive "p")
+ (if (not hebrew-keyboard)
+ (kill-word arg)
+ (backward-kill-word arg))) ;;nothing to it! (but this doesn't work)
+
+(defun bilingual-kill-line ()
+ "Kill the rest of the line, remembering that ``the rest'' is language
+dependant"
+ (interactive)
+ (if (not hebrew-mode)
+ (kill-line)
+;;We'd like to use "kill-line -1" here, but it doesn't work right.
+ (if (not (eolp))
+ (forward-char 1))
+ (kill-region (point) ;; But let's copy as much of the code in
+ ;; simple.el as possible
+ (progn
+ (if (bobp)
+ (signal 'beginning-of-buffer nil)
+ (beginning-of-line)
+ (if (looking-at "$")
+ (progn
+ (forward-line -1)
+ (end-of-line))))
+ (point)))
+ (right-align-line)))
+
+
+(defun bilingual-tab ()
+ "right-align-line"
+ (interactive)
+ (if (eq hebrew-keyboard t)
+ (right-align-line)
+ (left-align-line)))
+
+(defun bilingual-backspace () ;;This is mapped to ^h
+ "Backspace that knows that hebrew goes right-to-left."
+ (interactive)
+ (if (not hebrew-keyboard)
+ (delete-backward-char 1)
+ (if (not (eolp))
+ (forward-char 1))
+ (delete-backward-char -1)
+ (if (not (bolp))
+ (backward-char 1)))
+ (if (eq hebrew-mode t)
+ (right-align-line)))
+
+
+(defun goto-rl-mode ()
+ "Go to right-to-left mode (tty)"
+ (interactive)
+ (send-string-to-terminal right-to-left-code)
+ (redraw-display))
+
+(defun goto-lr-mode ()
+ "Go to left-to-right mode (tty)"
+ (interactive)
+ (send-string-to-terminal left-to-right-code)
+ (redraw-display))
+
+(defun goto-tty-hebrew-mode ()
+ "Go to Hebrew mode (tty)"
+ (interactive)
+ (send-string-to-terminal hebrew-keyboard-code))
+
+(defun goto-tty-english-mode ()
+ "Go to English mode (tty)"
+ (interactive)
+ (send-string-to-terminal english-keyboard-code))
+
+(defun goto-hebrew-keyboard ()
+ "Go to Hebrew keyboard (as far as Emacs is concerned)"
+ (interactive)
+ (setq hebrew-keyboard t)
+ (message "úéøáò úãì÷î (Hebrew keyboard) "))
+
+(defun goto-english-keyboard ()
+ "Go to English keyboard (as far as Emacs is concerned)"
+ (interactive)
+ (setq hebrew-keyboard ())
+ (message "English keyboard (úéìâðà úãì÷î)"))
+
+(defun goto-hebrew-mode ()
+ "Go to Hebrew mode (not a ``mode'' in the Emacs sense of the word, though)"
+ (interactive)
+ (setq hebrew-mode t)
+ (setq hebrew-keyboard t)
+ (message "úéøáò ãåî (Hebrew mode)"))
+
+(defun goto-english-mode ()
+ "Go to English mode (not a real ``mode'')"
+ (interactive)
+ (setq hebrew-mode ())
+ (setq hebrew-keyboard ())
+ (message "English mode (úéìâðà ãåî)"))
+
+
+
+(defun hebrew ()
+ "Basic definitions and key bindings"
+ (interactive)
+; (global-set-key "\C-xx" 'call-last-kbd-macro)
+ (global-set-key "\C-xz" 'goto-rl-mode)
+ (global-set-key "\C-xq" 'goto-lr-mode)
+ (global-set-key "\C-xh" 'goto-hebrew-keyboard)
+ (global-set-key "\C-xe" 'goto-english-keyboard)
+ (define-key esc-map "h" 'goto-hebrew-mode)
+ (define-key esc-map "e" 'goto-english-mode)
+ (global-set-key "\C-x\C-h" 'back-to-hebrew-keyboard)
+ (global-set-key "\C-x\C-e" 'back-to-english-keyboard)
+ (hebrew-set-up))
+
+
+
+(defun bilingual-insert-char (heb eng)
+ "Insert either the Hebrew or English code for the key pressed"
+ (interactive "P")
+ (if (not hebrew-keyboard)
+ (progn
+ (self-insert-command (prefix-numeric-value eng))
+ (if (eq hebrew-mode t)
+ (right-align-line)))
+ (if (eolp)
+ (insert " ")
+ (forward-char 1))
+ (insert heb)
+ (backward-char 2)
+ (if (eq hebrew-mode t)
+ (right-align-line))))
+
+(defun right-align-line ()
+ "Add spaces at the beginning of the current line so that the end is
+aligned with the fill column."
+ (interactive)
+ (progn ;;save-excursion doesn't always work. I wonder why not.
+ (let ((col (current-column)))
+ (end-of-line)
+ (let ((ecol (current-column)) (ecol2 (current-column)))
+ (beginning-of-line)
+ (while (and (looking-at "[ \t]") (> ecol hebrew-right-margin))
+ (delete-char 1)
+ (setq ecol (- ecol 1)))
+ (insert-char ?\ (- hebrew-right-margin ecol ))
+;;if save-excursion worked above, we could omit this:
+ (beginning-of-line) ;;
+ (forward-char (- hebrew-right-margin (- ecol2 col)))))))
+
+(defun left-align-line ()
+ "Delete leading white space so as to left-align the current line."
+ (interactive)
+ (let ((col (current-column)) (deleted 0))
+ (beginning-of-line)
+ (while (looking-at "[ \t]")
+ (delete-char 1)
+ (setq deleted (+ deleted 1)))
+ (if (> (- col deleted) 0)
+ (forward-char (- col deleted)))))
+
+
+;; Now lets make some commands for skipping over newly inserted text
+;; in the "other" language. The idea is to make the inseration of Hebrew
+;; words in an English document and vice versa as easy as possible.
+;; I wonder what to do with punctuation here....
+
+(defun back-to-english-keyboard ()
+ "Go back to the English keyboard after inserting a Hebrew segment of text.
+Skip over the Hebrew text."
+ (interactive)
+ (goto-english-keyboard) ;; that's the easy part.
+ (if (looking-at " ") ;; Assume the space was inserted when we..
+ (delete-char 1)) ;; ..went into Hebrew mode.
+ (if (not (eolp)) ;; Now move past the Hebrew
+ (while (looking-at "[íïõêóúùø÷öôòñðîìëéèçæåäãâáà]")
+ (forward-char 1))))
+
+(defun back-to-hebrew-keyboard ()
+ "Go back to the Hebrew keyboard after inserting an English segment of
+text. Skip of the English text."
+ (interactive)
+ (goto-hebrew-keyboard) ;; that's the easy part.
+ (if (not (bolp))
+ (backward-char 1)) ;; we're probably on a space or something.
+ (if (not (bolp)) ;; Now move past the English
+ (while (looking-at
+ "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\$=<>\\()]")
+ (backward-char 1)))) ;; I threw the dollar in --------^
+ ;; because (La)TeX uses it so often.
+
+(defun fix-backspace ()
+ "Make backspace key 'bilingual-backspace"
+ (interactive)
+ (global-set-key "\177" 'bilingual-backspace))
+
+
+(global-set-key "\C-xz" 'fix-backspace)
+
+;; This is the last line of "hebrew.el" ìù äðåøçàä äøåùä úàæ
+
+;; to-do:
+;; add quote-char
+;; fix backspace over nl
+;; fix delete at eolp
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/readme b/language/hebrew/hebtex/editors/unix/hemacs/readme
new file mode 100644
index 0000000000..e6c81e7f21
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/readme
@@ -0,0 +1,17 @@
+Three versions of hemacs are available. They are present here in three
+subdirectories, called after their respective authors.
+The packages has been arranged by Shuly Wintner <shuly@cs.technion.ac.il>
+of the Technion, Haifa. Shuly has devoted time to this issue, and
+ended by switching to vi. See vim in an adjacent subdirectory here --
+- it is a version of vi which works with right-to-left typesetting.
+
+If you have more information re the Hebrew emacs, or if you have
+tried the available versions and would like to add your comments
+here, please write to rama@cc.huji.ac.il .
+
+There is an additional version of hemacs available. It is
+a compiled version, which works on Sparc stations.
+It is a version from 1992, but it might be usable --
+available in the direcotry for_sparc.
+
+Rama -- rama@cc.huji.ac.il
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/README b/language/hebrew/hebtex/editors/unix/hemacs/yossi/README
new file mode 100644
index 0000000000..64e435a973
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/README
@@ -0,0 +1,68 @@
+$Id: README,v 1.3 1992/06/04 16:34:10 yossi Exp $
+
+ Semitic Patches to Emacs
+ by Joseph Friedman (yossi@DEShaw.COM)
+ June 4, 1992
+
+
+This directory contains the patches necessary to edit text in Semitic
+languages using GNU Emacs 18.58 under X11:
+
+1) A simple, fixed, Hebrew X screen font, modified from misc/6x13.
+ Also, I included the accompanying line in the fonts.alias file.
+ (I have donated heb6x13 and another font, heb8x13, to the MIT X
+ Consortium, and these fonts are included in Release 5 of X11, so
+ you may already have it on your system.)
+
+2) Patches for the source code and lisp code for GNU Emacs 18.58 that
+ do right-to-left display and editing, as well as my own version of
+ 256-character fonts support.
+
+3) A simple lisp package, hebrew.el, which selectively maps the
+ workstation keyboard into a standard Hebrew keyboard. This mapping
+ is done both in insertion and in searching (sorry, I haven't
+ implemented replacing yet, but it'll come soon.)
+
+The basic idea:
+--------------
+To summarize the changes to the C code, I created two new buffer-local
+variables, display-literal and display-reversed. When display-literal
+is non-nil, nonprintable characters in the buffer are NOT mapped into
+ctl-arrow or backslash-and-three-octals; instead, whatever is in the
+font entry is displayed as is (don't do this at home! On a non-X
+display, this can really mess up the screen). When display-reversed
+is non-nil, all the windows showing the current buffer are flipped
+laterally, so the beginning of the line appears on the right and the
+lines are wrapped (or truncated) on the left; all the editing command
+continue to behave as they were before. The default value for both
+these variables is nil, so Emacs and Epoch behave exactly like the
+non-semitic version unless you specifically request otherwise.
+
+Installation:
+------------
+1) Start with the font. Unpack the font using:
+
+ uudecode thefont
+ uncompress heb6x13.bdf.Z
+
+ then run bdftosnf on heb6x13.bdf and install heb6x13.snf wherever
+ you keep your local fonts. Run mkfontdir in that directory, and
+ then append the enclosed fonts.alias to your fonts.alias file.
+ You're all set. Just to be sure, try:
+
+ xfd -fn heb6x13
+
+2) Now apply the patches. Apply patch-src in the source directory
+ and patch-lisp in the lisp directory. When patching the lisp files,
+ don't forget to delete the corresponding .elc files, since they have
+ precedence over .el files.
+
+3) Next, copy hebrew.el to your local lisp directory.
+
+4) You're almost ready to use the package. Now comes the REALLY HARD
+ part---making little labels with the hebrew characters on them and
+ taping these labels on the front of the keys on the keyboard :-(
+
+Have fun! And please report any problems/bugs/suggestions to me.
+
+-yossi
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias
new file mode 100644
index 0000000000..3dd3b9a315
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.alias
@@ -0,0 +1,2 @@
+heb6x13 -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-8
+heb8x13 -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-8
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir
new file mode 100644
index 0000000000..f2851e669e
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/fonts.dir
@@ -0,0 +1,2 @@
+1
+heb6x13.snf -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-8
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf
new file mode 100644
index 0000000000..7188b2de1b
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.bdf
@@ -0,0 +1,3757 @@
+STARTFONT 2.1
+COMMENT
+COMMENT Characters #224--#250 designed, made, and are
+COMMENT copyrighted (c) 1991 by Joseph Friedman (yossi@CS.Stanford.EDU).
+COMMENT The rest of the font is taken from 6x13.bdf.
+COMMENT
+COMMENT Permission to use, copy, modify, distribute, and sell this
+COMMENT software and its documentation for any purpose is hereby
+COMMENT granted without fee, provided that the above copyright
+COMMENT notice appear in all copies.
+COMMENT
+FONT -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-8
+SIZE 13 78 78
+FONTBOUNDINGBOX 6 13 0 -3
+STARTPROPERTIES 19
+FONTNAME_REGISTRY ""
+FOUNDRY "Misc"
+FAMILY_NAME "Fixed"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "SemiCondensed"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 13
+POINT_SIZE 120
+RESOLUTION_X 75
+RESOLUTION_Y 75
+SPACING "C"
+AVERAGE_WIDTH 60
+CHARSET_REGISTRY ""
+CHARSET_ENCODING ""
+DEFAULT_CHAR 0
+FONT_DESCENT 3
+FONT_ASCENT 10
+COPYRIGHT "Characters #224--#250 Copyright (c) 1991 Joseph Friedman. The rest of the font is public domain."
+ENDPROPERTIES
+CHARS 186
+STARTCHAR ascii000
+ENCODING 0
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii001
+ENCODING 1
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+20
+70
+f8
+70
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii002
+ENCODING 2
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+a8
+50
+a8
+50
+a8
+50
+a8
+00
+00
+ENDCHAR
+STARTCHAR ascii003
+ENCODING 3
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+a0
+a0
+e0
+a0
+a0
+70
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii004
+ENCODING 4
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+e0
+80
+c0
+80
+f0
+40
+60
+40
+40
+ENDCHAR
+STARTCHAR ascii005
+ENCODING 5
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+70
+80
+80
+70
+70
+48
+70
+50
+48
+ENDCHAR
+STARTCHAR ascii006
+ENCODING 6
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+80
+80
+80
+e0
+70
+40
+60
+40
+40
+ENDCHAR
+STARTCHAR ascii007
+ENCODING 7
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+60
+90
+90
+60
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii010
+ENCODING 8
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+20
+20
+f8
+20
+20
+00
+f8
+00
+00
+ENDCHAR
+STARTCHAR ascii011
+ENCODING 9
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+88
+c8
+a8
+98
+88
+40
+40
+40
+78
+ENDCHAR
+STARTCHAR ascii012
+ENCODING 10
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+88
+88
+50
+20
+00
+f8
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii013
+ENCODING 11
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+e0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii014
+ENCODING 12
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+e0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii015
+ENCODING 13
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+3c
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii016
+ENCODING 14
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+3c
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii017
+ENCODING 15
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+fc
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii020
+ENCODING 16
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+fc
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii021
+ENCODING 17
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+fc
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii022
+ENCODING 18
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+fc
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii023
+ENCODING 19
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+fc
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii024
+ENCODING 20
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+fc
+00
+ENDCHAR
+STARTCHAR ascii025
+ENCODING 21
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+3c
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii026
+ENCODING 22
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+e0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii027
+ENCODING 23
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+fc
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii030
+ENCODING 24
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+fc
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii031
+ENCODING 25
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR ascii032
+ENCODING 26
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+08
+10
+20
+40
+20
+10
+08
+f8
+00
+00
+ENDCHAR
+STARTCHAR ascii033
+ENCODING 27
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+80
+40
+20
+10
+20
+40
+80
+f8
+00
+00
+ENDCHAR
+STARTCHAR ascii034
+ENCODING 28
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+f8
+50
+50
+50
+90
+00
+00
+ENDCHAR
+STARTCHAR ascii035
+ENCODING 29
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+08
+f8
+20
+f8
+80
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii036
+ENCODING 30
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+30
+48
+40
+f0
+20
+f0
+a8
+e0
+00
+ENDCHAR
+STARTCHAR ascii037
+ENCODING 31
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR space
+ENCODING 32
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR exclam
+ENCODING 33
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+20
+20
+20
+20
+20
+20
+00
+20
+00
+00
+ENDCHAR
+STARTCHAR quotedbl
+ENCODING 34
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+50
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR numbersign
+ENCODING 35
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+50
+50
+f8
+50
+f8
+50
+50
+00
+00
+00
+ENDCHAR
+STARTCHAR dollar
+ENCODING 36
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+20
+70
+a0
+a0
+70
+28
+28
+70
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR percent
+ENCODING 37
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+48
+a8
+50
+10
+20
+40
+50
+a8
+90
+00
+00
+ENDCHAR
+STARTCHAR ampersand
+ENCODING 38
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+40
+a0
+a0
+40
+a0
+98
+90
+68
+00
+00
+00
+ENDCHAR
+STARTCHAR quoteright
+ENCODING 39
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+30
+20
+40
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR parenleft
+ENCODING 40
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+10
+20
+20
+40
+40
+40
+20
+20
+10
+00
+00
+ENDCHAR
+STARTCHAR parenright
+ENCODING 41
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+40
+20
+20
+10
+10
+10
+20
+20
+40
+00
+00
+ENDCHAR
+STARTCHAR asterisk
+ENCODING 42
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+20
+a8
+f8
+70
+f8
+a8
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR plus
+ENCODING 43
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+20
+20
+f8
+20
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR comma
+ENCODING 44
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+30
+20
+40
+00
+ENDCHAR
+STARTCHAR hyphen
+ENCODING 45
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+f8
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR period
+ENCODING 46
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+70
+20
+00
+ENDCHAR
+STARTCHAR slash
+ENCODING 47
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+08
+08
+10
+10
+20
+40
+40
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR zero
+ENCODING 48
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+50
+88
+88
+88
+88
+88
+50
+20
+00
+00
+ENDCHAR
+STARTCHAR one
+ENCODING 49
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+60
+a0
+20
+20
+20
+20
+20
+f8
+00
+00
+ENDCHAR
+STARTCHAR two
+ENCODING 50
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+08
+10
+20
+40
+80
+f8
+00
+00
+ENDCHAR
+STARTCHAR three
+ENCODING 51
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+08
+10
+20
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR four
+ENCODING 52
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+10
+10
+30
+50
+50
+90
+f8
+10
+10
+00
+00
+ENDCHAR
+STARTCHAR five
+ENCODING 53
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+80
+80
+b0
+c8
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR six
+ENCODING 54
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+80
+80
+f0
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR seven
+ENCODING 55
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+08
+10
+10
+20
+20
+40
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR eight
+ENCODING 56
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+88
+70
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR nine
+ENCODING 57
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+88
+78
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR colon
+ENCODING 58
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+20
+70
+20
+00
+00
+20
+70
+20
+00
+ENDCHAR
+STARTCHAR semicolon
+ENCODING 59
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+20
+70
+20
+00
+00
+30
+20
+40
+00
+ENDCHAR
+STARTCHAR less
+ENCODING 60
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+08
+10
+20
+40
+80
+40
+20
+10
+08
+00
+00
+ENDCHAR
+STARTCHAR equal
+ENCODING 61
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+00
+00
+f8
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR greater
+ENCODING 62
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+40
+20
+10
+08
+10
+20
+40
+80
+00
+00
+ENDCHAR
+STARTCHAR question
+ENCODING 63
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+08
+10
+20
+20
+00
+20
+00
+00
+ENDCHAR
+STARTCHAR at
+ENCODING 64
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+98
+a8
+a8
+b0
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR A
+ENCODING 65
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+50
+88
+88
+88
+f8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR B
+ENCODING 66
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f0
+48
+48
+48
+70
+48
+48
+48
+f0
+00
+00
+ENDCHAR
+STARTCHAR C
+ENCODING 67
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+80
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR D
+ENCODING 68
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f0
+48
+48
+48
+48
+48
+48
+48
+f0
+00
+00
+ENDCHAR
+STARTCHAR E
+ENCODING 69
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+80
+80
+80
+f0
+80
+80
+80
+f8
+00
+00
+ENDCHAR
+STARTCHAR F
+ENCODING 70
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+80
+80
+80
+f0
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR G
+ENCODING 71
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+80
+80
+80
+98
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR H
+ENCODING 72
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+88
+88
+f8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR I
+ENCODING 73
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR J
+ENCODING 74
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+38
+10
+10
+10
+10
+10
+10
+90
+60
+00
+00
+ENDCHAR
+STARTCHAR K
+ENCODING 75
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+90
+a0
+c0
+a0
+90
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR L
+ENCODING 76
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+80
+80
+80
+80
+80
+80
+80
+f8
+00
+00
+ENDCHAR
+STARTCHAR M
+ENCODING 77
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+d8
+a8
+a8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR N
+ENCODING 78
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+c8
+c8
+a8
+a8
+98
+98
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR O
+ENCODING 79
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR P
+ENCODING 80
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f0
+88
+88
+88
+f0
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR Q
+ENCODING 81
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+a8
+70
+08
+00
+ENDCHAR
+STARTCHAR R
+ENCODING 82
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f0
+88
+88
+88
+f0
+a0
+90
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR S
+ENCODING 83
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+88
+80
+80
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR T
+ENCODING 84
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+20
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR U
+ENCODING 85
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR V
+ENCODING 86
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+88
+88
+50
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR W
+ENCODING 87
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+88
+88
+a8
+a8
+a8
+d8
+88
+00
+00
+ENDCHAR
+STARTCHAR X
+ENCODING 88
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+50
+50
+20
+50
+50
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Y
+ENCODING 89
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+50
+50
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Z
+ENCODING 90
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+08
+10
+10
+20
+40
+40
+80
+f8
+00
+00
+ENDCHAR
+STARTCHAR braketleft
+ENCODING 91
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+40
+40
+40
+40
+40
+40
+40
+70
+00
+00
+ENDCHAR
+STARTCHAR backslash
+ENCODING 92
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+80
+40
+40
+20
+10
+10
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR bracketright
+ENCODING 93
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+70
+10
+10
+10
+10
+10
+10
+10
+70
+00
+00
+ENDCHAR
+STARTCHAR asciicircum
+ENCODING 94
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+50
+88
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR underscore
+ENCODING 95
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+f8
+00
+ENDCHAR
+STARTCHAR quoteleft
+ENCODING 96
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+30
+10
+08
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR a
+ENCODING 97
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR b
+ENCODING 98
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+80
+80
+f0
+88
+88
+88
+88
+f0
+00
+00
+ENDCHAR
+STARTCHAR c
+ENCODING 99
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR d
+ENCODING 100
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+08
+08
+08
+78
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR e
+ENCODING 101
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+70
+88
+f8
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR f
+ENCODING 102
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+30
+48
+40
+40
+f0
+40
+40
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR g
+ENCODING 103
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+70
+88
+88
+88
+78
+08
+88
+70
+ENDCHAR
+STARTCHAR h
+ENCODING 104
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+80
+80
+b0
+c8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR i
+ENCODING 105
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+20
+00
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR j
+ENCODING 106
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+10
+00
+30
+10
+10
+10
+10
+90
+90
+60
+ENDCHAR
+STARTCHAR k
+ENCODING 107
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+80
+80
+90
+a0
+c0
+a0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR l
+ENCODING 108
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+60
+20
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR m
+ENCODING 109
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+d0
+a8
+a8
+a8
+a8
+88
+00
+00
+ENDCHAR
+STARTCHAR n
+ENCODING 110
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+b0
+c8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR o
+ENCODING 111
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR p
+ENCODING 112
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f0
+88
+88
+88
+f0
+80
+80
+80
+ENDCHAR
+STARTCHAR q
+ENCODING 113
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+78
+88
+88
+88
+78
+08
+08
+08
+ENDCHAR
+STARTCHAR r
+ENCODING 114
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+b0
+c8
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR s
+ENCODING 115
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+70
+88
+60
+10
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR t
+ENCODING 116
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+40
+40
+f0
+40
+40
+40
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR u
+ENCODING 117
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+88
+88
+88
+88
+98
+68
+00
+00
+ENDCHAR
+STARTCHAR v
+ENCODING 118
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+88
+88
+88
+50
+50
+20
+00
+00
+ENDCHAR
+STARTCHAR w
+ENCODING 119
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+88
+88
+a8
+a8
+a8
+50
+00
+00
+ENDCHAR
+STARTCHAR x
+ENCODING 120
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+88
+50
+20
+20
+50
+88
+00
+00
+ENDCHAR
+STARTCHAR y
+ENCODING 121
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+88
+88
+88
+98
+68
+08
+88
+70
+ENDCHAR
+STARTCHAR z
+ENCODING 122
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+10
+20
+40
+80
+f8
+00
+00
+ENDCHAR
+STARTCHAR braceleft
+ENCODING 123
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+18
+20
+20
+20
+c0
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR bar
+ENCODING 124
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+20
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR braceright
+ENCODING 125
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+c0
+20
+20
+20
+18
+20
+20
+20
+c0
+00
+00
+ENDCHAR
+STARTCHAR asciitilde
+ENCODING 126
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+48
+a8
+90
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii177
+ENCODING 127
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+a8
+50
+a8
+50
+a8
+50
+a8
+50
+a8
+50
+a8
+50
+a8
+ENDCHAR
+STARTCHAR no-break-space
+ENCODING 160
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii242
+ENCODING 162
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+70
+a8
+a0
+a0
+a8
+70
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii243
+ENCODING 163
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+30
+48
+40
+f0
+20
+f0
+a8
+e0
+00
+ENDCHAR
+STARTCHAR ascii244
+ENCODING 164
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+88
+70
+50
+50
+70
+88
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii245
+ENCODING 165
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+88
+88
+50
+50
+f8
+20
+f8
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR ascii246
+ENCODING 166
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+20
+20
+20
+20
+00
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR ascii247
+ENCODING 167
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+30
+48
+40
+30
+48
+48
+30
+08
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR ascii250
+ENCODING 168
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+d8
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii251
+ENCODING 169
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+70
+88
+a8
+d8
+c8
+d8
+a8
+88
+70
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii252
+ENCODING 170
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+88
+50
+20
+50
+88
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii253
+ENCODING 171
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+28
+50
+a0
+a0
+50
+28
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii254
+ENCODING 172
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+f8
+08
+08
+08
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii255
+ENCODING 173
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+f8
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii256
+ENCODING 174
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+70
+88
+e8
+d8
+d8
+e8
+d8
+88
+70
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii257
+ENCODING 175
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+f8
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii260
+ENCODING 176
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+30
+48
+48
+30
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii261
+ENCODING 177
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+20
+20
+f8
+20
+20
+00
+f8
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii262
+ENCODING 178
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+40
+a0
+20
+40
+e0
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii263
+ENCODING 179
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+40
+a0
+40
+20
+c0
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii264
+ENCODING 180
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+10
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii265
+ENCODING 181
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+88
+88
+88
+88
+98
+e8
+80
+00
+ENDCHAR
+STARTCHAR ascii266
+ENCODING 182
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+78
+e8
+e8
+e8
+e8
+68
+28
+28
+28
+00
+00
+ENDCHAR
+STARTCHAR ascii267
+ENCODING 183
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+30
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii270
+ENCODING 184
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+10
+48
+30
+ENDCHAR
+STARTCHAR ascii271
+ENCODING 185
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+40
+c0
+40
+40
+e0
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii272
+ENCODING 186
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+20
+20
+00
+f8
+00
+20
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii273
+ENCODING 187
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+a0
+50
+28
+28
+50
+a0
+00
+00
+00
+ENDCHAR
+STARTCHAR ascii274
+ENCODING 188
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+40
+c0
+40
+40
+e0
+08
+18
+28
+38
+08
+00
+00
+ENDCHAR
+STARTCHAR ascii275
+ENCODING 189
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+40
+c0
+40
+40
+e0
+10
+28
+08
+10
+38
+00
+00
+ENDCHAR
+STARTCHAR ascii276
+ENCODING 190
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+40
+a0
+40
+20
+a0
+48
+18
+28
+38
+08
+00
+00
+ENDCHAR
+STARTCHAR ascii337
+ENCODING 223
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+f8
+00
+f8
+ENDCHAR
+STARTCHAR aleph
+ENCODING 224
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+90
+48
+68
+90
+88
+c8
+00
+00
+ENDCHAR
+STARTCHAR bet
+ENCODING 225
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f0
+10
+10
+10
+10
+f8
+00
+00
+ENDCHAR
+STARTCHAR gimel
+ENCODING 226
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+40
+20
+10
+10
+28
+48
+00
+00
+ENDCHAR
+STARTCHAR dalet
+ENCODING 227
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+10
+10
+10
+10
+10
+00
+00
+ENDCHAR
+STARTCHAR he
+ENCODING 228
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+08
+08
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR waw
+ENCODING 229
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+30
+10
+10
+10
+10
+10
+00
+00
+ENDCHAR
+STARTCHAR zain
+ENCODING 230
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+20
+20
+10
+10
+10
+00
+00
+ENDCHAR
+STARTCHAR chet
+ENCODING 231
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+48
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR tet
+ENCODING 232
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+98
+a8
+a8
+88
+88
+f8
+00
+00
+ENDCHAR
+STARTCHAR yod
+ENCODING 233
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+30
+10
+10
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR endkaph
+ENCODING 234
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+08
+08
+08
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR kaph
+ENCODING 235
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+08
+08
+08
+08
+f0
+00
+00
+ENDCHAR
+STARTCHAR lamed
+ENCODING 236
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+80
+80
+80
+f8
+08
+08
+08
+10
+60
+00
+00
+ENDCHAR
+STARTCHAR endmem
+ENCODING 237
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+48
+48
+48
+48
+78
+00
+00
+ENDCHAR
+STARTCHAR mem
+ENCODING 238
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+90
+a8
+48
+88
+88
+b8
+00
+00
+ENDCHAR
+STARTCHAR endnun
+ENCODING 239
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+30
+10
+10
+10
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR nun
+ENCODING 240
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+18
+08
+08
+08
+08
+78
+00
+00
+ENDCHAR
+STARTCHAR samech
+ENCODING 241
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+48
+48
+48
+50
+60
+00
+00
+ENDCHAR
+STARTCHAR ayin
+ENCODING 242
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+d8
+48
+48
+48
+48
+f0
+00
+00
+ENDCHAR
+STARTCHAR endpe
+ENCODING 243
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+48
+48
+48
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR pe
+ENCODING 244
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+48
+48
+08
+08
+f0
+00
+00
+ENDCHAR
+STARTCHAR endzade
+ENCODING 245
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+90
+48
+48
+50
+60
+40
+40
+40
+ENDCHAR
+STARTCHAR zade
+ENCODING 246
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+90
+48
+28
+10
+08
+f8
+00
+00
+ENDCHAR
+STARTCHAR qoph
+ENCODING 247
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+08
+88
+88
+88
+b0
+80
+80
+ENDCHAR
+STARTCHAR resh
+ENCODING 248
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+08
+08
+08
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR shin
+ENCODING 249
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+a8
+a8
+a8
+e8
+88
+f0
+00
+00
+ENDCHAR
+STARTCHAR taw
+ENCODING 250
+SWIDTH 461 0
+DWIDTH 6 0
+BBX 6 13 0 -3
+BITMAP
+00
+00
+00
+00
+00
+f8
+48
+48
+48
+48
+c8
+00
+00
+ENDCHAR
+ENDFONT
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snf b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snf
new file mode 100644
index 0000000000..26de128983
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/heb6x13.snf
Binary files differ
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el b/language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el
new file mode 100644
index 0000000000..927111c7a0
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/hebrew.el
@@ -0,0 +1,217 @@
+;;;
+;;; hebrew.el -- Hebrew editing mode.
+;;; For more information, see documentation of `hebrew-mode'.
+;;;
+;;; $Id: hebrew.el,v 1.4 1992/08/22 22:29:57 yossi Exp $
+;;; Copyright (c) Joseph Friedman, April 1990
+;;; E-mail: yossi@DEShaw.COM
+;;;
+;;; LCD Archive Entry:
+;;; hebrew|Joseph Friedman|yossi@DEShaw.COM|
+;;; Support for editing Hebrew files in Emacs.|
+;;; 92-08-22|$Revision: 1.4 $|~/misc/hebrew.tar.Z|
+
+
+(defvar running-epoch nil "*Non-nil means Epoch is running.")
+
+(defvar hebrew-mode-hook () "*Called when entering hebrew-mode")
+
+(defvar hebrew-mode nil "*Non nil when Hebrew mode is turned on.")
+(make-variable-buffer-local 'hebrew-mode)
+
+(or (assoc 'hebrew-mode minor-mode-alist)
+ (setq minor-mode-alist
+ (cons '(hebrew-mode " Hebrew") minor-mode-alist)))
+
+(defun hebrew-mode ()
+"\
+Toggles hebrew-mode on/off. Hebrew-mode is a minor mode which allows
+reversing the editor display and changing the keyboard in order to
+enter and edit text in a semitic language, such as Hebrew.
+
+By default, hebrew-mode stays in \"normal\" state. The \"reversed\"
+state is activated with \"\\[hebrew-toggle-reversed]\". (In Epoch, this
+is also bound to \"F3\".) In the \"reversed\" state, hebrew-mode emulates
+a Hebrew keyboard both during direct insertion and during searches.
+
+Hebrew-mode calls hebrew-mode-hook upon entering."
+
+ (interactive)
+ (if (null hebrew-mode)
+ (let (char)
+
+ ; signal hebrew minor mode in the mode-line
+ (setq hebrew-mode t)
+
+ ; activate the hebrew insertion function
+ (setq char ? )
+ (local-set-key " " 'hebrew-insert-space) ; SPC is a special case,
+ (setq char (1+ char)) ; see below.
+ (while (<= char ?~)
+ (let ((s (format "%c" char)))
+ (if (eq (key-binding s) 'self-insert-command)
+ (local-set-key s 'hebrew-insert)))
+ (setq char (1+ char)))
+ ; for showmatch:
+ (local-unset-key "{")
+ (local-unset-key "[")
+ (local-unset-key "(")
+ (local-unset-key ")")
+ (local-unset-key "]")
+ (local-unset-key "}")
+
+ ; display-literal, display-reversed
+ (setq display-literal t)
+ (local-set-key "\C-cR" 'hebrew-toggle-reversed)
+ (local-set-key "\e[13~" 'hebrew-toggle-reversed) ; F3
+
+ ; syntax table stuff
+ (setq char ?\340) ; aleph
+ (while (<= char ?\372) ; taf
+ (modify-syntax-entry char "w")
+ (setq char (1+ char)))
+
+ ; search stuff
+ (local-set-key "\C-s" 'hebrew-ctrl-s)
+ (local-set-key "\C-r" 'hebrew-ctrl-r)
+
+ ; hooks
+ (run-hooks 'hebrew-mode-hook))
+
+ (let (char)
+
+ ; turn off hebrew minor mode in the mode-line
+ (setq hebrew-mode nil)
+
+ ; deactivate the hebrew insertion function
+ (setq char ? )
+ (while (<= char ?~)
+ (let ((s (format "%c" char)))
+ (if (eq (key-binding s) 'hebrew-insert)
+ (local-unset-key s)))
+ (setq char (1+ char)))
+
+ ; deactivate display-literal and display-reversed
+ (setq display-literal nil)
+ (local-unset-key "\C-cR")
+ (local-unset-key "\e[13~") ; F3
+
+ ; search stuff
+ (local-unset-key "\C-s")
+ (local-unset-key "\C-r")
+
+ ; restore syntax-table
+ (setq char ?\340) ; aleph
+ (while (<= char ?\372) ; taf
+ (modify-syntax-entry char " ")
+ (setq char (1+ char))))))
+
+(if running-epoch
+ (epoch::rebind-key "F3" 0 "\C-cR"))
+(defun hebrew-toggle-reversed ()
+ "Toggle whether or not the display is laterally reversed."
+ (interactive)
+ (setq display-reversed (null display-reversed))
+ (if running-epoch
+ (epoch::redisplay-screen)
+ (x-smart-redisplay)))
+
+(defun hebrew-insert (&optional arg)
+ "\
+If display-reversed is nil, behaves like self-insert-command.
+If display-reversed is t, simulates a Hebrew typewriter keyboard."
+
+ (interactive "p")
+ (or (numberp arg) (setq arg 1))
+ (let ((char (if display-reversed
+ (aref hebrew-keyboard last-command-char)
+ (format "%c" last-command-char))))
+ (while (> arg 0)
+ (insert char)
+ (setq arg (1- arg)))))
+
+; *** KLUDGE ALERT ***
+; When last-command-char is SPC and display-reversed is t,
+; self-insert-command does not update the display after insertion, and I
+; couldn't figure out why this is so. To get around this bug, I call
+; self-insert-command from a user routine, and this takes care of updating
+; the display.
+(defun hebrew-insert-space (&optional arg)
+"This is a kludge to get around an insertion bug. Bind to SPC."
+ (interactive)
+ (cond
+ ((null arg) (self-insert-command 1))
+ ((numberp arg) (self-insert-command arg))
+ (t (ding))))
+
+(defun hebrew-ctrl-s () "The Hebrew-mode version of \C-s"
+ (interactive)
+ (let ((old-read-char (symbol-function 'read-char))
+ (old-text-char-description (symbol-function 'text-char-description))
+ (search-exit-option nil)
+ (res nil)
+ ERR)
+ (fset 'read-char (symbol-function 'hebrew-read-char))
+ (fset 'text-char-description
+ (symbol-function 'hebrew-text-char-description))
+ (condition-case ERR
+ (setq res (funcall (global-key-binding "\C-s")))
+ (error nil)
+ (quit nil))
+ (fset 'read-char old-read-char)
+ (fset 'text-char-description old-text-char-description)
+ res))
+
+(defun hebrew-ctrl-r () "The Hebrew-mode version of \C-r"
+ (interactive)
+ (let ((old-read-char (symbol-function 'read-char))
+ (old-text-char-description (symbol-function 'text-char-description))
+ (search-exit-option nil)
+ (res nil)
+ ERR)
+ (fset 'read-char (symbol-function 'hebrew-read-char))
+ (fset 'text-char-description
+ (symbol-function 'hebrew-text-char-description))
+ (condition-case ERR
+ (setq res (funcall (global-key-binding "\C-r")))
+ (error nil)
+ (quit nil))
+ (fset 'read-char old-read-char)
+ (fset 'text-char-description old-text-char-description)
+ res))
+
+(defun hebrew-read-char ()
+ "The hebrew-mode version of read-char."
+ (let ((char (funcall old-read-char)))
+ (if (and display-reversed (>= char ? ) (<= char ?~))
+ (string-to-char (aref hebrew-keyboard char))
+ char)))
+
+(defun hebrew-text-char-description (char)
+ "The hebrew-mode version of text-char-description."
+ (if display-reversed
+ (char-to-string char)
+ (funcall old-text-char-description char)))
+
+; for the search function to work, we can't use a byte-compiled version of
+; isearch.el, so load it back:
+(load-library "isearch.el")
+
+(setq hebrew-keyboard
+ [
+ "" "" "" "" "" "" "" ""
+ "" "" "" "" "" "" "" ""
+ "" "" "" "" "" "" "" ""
+ "" "" "" "" "" "" "" ""
+ " " "!" "\"" "#" "$" "%" "&" "'"
+ "(" ")" "*" "+" "\372" "-" "\365" "."
+ "0" "1" "2" "3" "4" "5" "6" "7"
+ "8" "9" ":" "\363" "<" "=" ">" "?"
+ "@" "A" "B" "C" "D" "E" "F" "G"
+ "H" "I" "J" "K" "L" "M" "N" "O"
+ "P" "Q" "R" "S" "T" "U" "V" "W"
+ "X" "Y" "Z" "[" "\\" "]" "^" "_"
+ ";" "\371" "\360" "\341" "\342" "\367" "\353" "\362"
+ "\351" "\357" "\347" "\354" "\352" "\366" "\356" "\355"
+ "\364" "\\" "\370" "\343" "\340" "\345" "\344" ","
+ "\361" "\350" "\346" "{" "|" "}" "~" ""])
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp
new file mode 100644
index 0000000000..c65c83aa0c
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-lisp
@@ -0,0 +1,34 @@
+*** x-mouse.el.orig Tue Apr 30 14:26:17 1991
+--- x-mouse.el Tue Apr 30 14:13:46 1991
+***************
+*** 107,112 ****
+--- 107,113 ----
+ (define-key global-map "\C-c\C-m" 'x-flush-mouse-queue)
+ (define-key global-map "\C-x\C-@" 'x-flush-mouse-queue)
+
++ ; yossi-- modified x-mouse-select to support reverse displays.
+ (defun x-mouse-select (arg)
+ "Select Emacs window the mouse is on."
+ (let ((start-w (selected-window))
+***************
+*** 120,126 ****
+ (if (eq w start-w)
+ (setq done t)))
+ (select-window w)
+! rel-coordinate))
+
+ (defun x-mouse-keep-one-window (arg)
+ "Select Emacs window mouse is on, then kill all other Emacs windows."
+--- 121,132 ----
+ (if (eq w start-w)
+ (setq done t)))
+ (select-window w)
+! (set-buffer (window-buffer w))
+! (and rel-coordinate
+! (if (null display-reversed)
+! rel-coordinate
+! (cons (- (window-width) (car rel-coordinate) 1)
+! (cdr rel-coordinate))))))
+
+ (defun x-mouse-keep-one-window (arg)
+ "Select Emacs window mouse is on, then kill all other Emacs windows."
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src
new file mode 100644
index 0000000000..1e063074e6
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/patch-src
@@ -0,0 +1,442 @@
+*** buffer.c.orig Thu Jun 4 15:19:29 1992
+--- buffer.c Thu Jun 4 16:01:40 1992
+***************
+*** 1069,1074 ****
+--- 1069,1076 ----
+ XFASTINT (buffer_defaults.tab_width) = 8;
+ buffer_defaults.truncate_lines = Qnil;
+ buffer_defaults.ctl_arrow = Qt;
++ buffer_defaults.display_literal = Qnil; /* yossi */
++ buffer_defaults.display_reversed = Qnil; /* yossi */
+
+ XFASTINT (buffer_defaults.fill_column) = 70;
+ XFASTINT (buffer_defaults.left_margin) = 0;
+***************
+*** 1107,1112 ****
+--- 1109,1116 ----
+ XFASTINT (buffer_local_flags.left_margin) = 0x800;
+ XFASTINT (buffer_local_flags.abbrev_table) = 0x1000;
+ XFASTINT (buffer_local_flags.syntax_table) = 0x2000;
++ XFASTINT (buffer_local_flags.display_literal) = 0x4000; /* yossi */
++ XFASTINT (buffer_local_flags.display_reversed) = 0x8000; /* yossi */
+
+ Vbuffer_alist = Qnil;
+ current_buffer = 0;
+***************
+*** 1178,1183 ****
+--- 1182,1197 ----
+ "Default ctl-arrow for buffers that do not override it.\n\
+ This is the same as (default-value 'ctl-arrow).");
+
++ DEFVAR_LISP_NOPRO ("default-display-literal", /* yossi */
++ &buffer_defaults.display_literal,
++ "Default display-literal for buffers that do not override it.\n\
++ This is the same as (default-value 'display-literal).");
++
++ DEFVAR_LISP_NOPRO ("default-display-reversed", /* yossi */
++ &buffer_defaults.display_reversed,
++ "Default display-reversed for buffers that do not override it.\n\
++ This is the same as (default-value 'display-reversed).");
++
+ DEFVAR_LISP_NOPRO ("default-truncate-lines",
+ &buffer_defaults.truncate_lines,
+ "Default truncate-lines for buffers that do not override it.\n\
+***************
+*** 1269,1274 ****
+--- 1283,1299 ----
+ "*Non-nil means display control chars with uparrow.\n\
+ Nil means use backslash and octal digits.\n\
+ Automatically becomes local when set in any fashion.");
++
++ DEFVAR_PER_BUFFER ("display-literal", &current_buffer->display_literal, /* yossi */
++ "*Non-nil means display the characters in the buffer as they are,\n\
++ even when ther are \"nonprintable\" ascii.\n\
++ Nil means display using ctl-arrow for the low nonprintables, and use\n\
++ backslash and octal digits for the high nonprintables.\n\
++ Automatically becomes local when set in any fashion.");
++
++ DEFVAR_PER_BUFFER ("display-reversed", &current_buffer->display_reversed, /* yossi */
++ "*Non-nil means display each line of the buffer in reversed order,\n\
++ useful for editing texts in Semitic languages which write right-to-left.");
+
+ DEFVAR_PER_BUFFER ("truncate-lines", &current_buffer->truncate_lines,
+ "*Non-nil means do not display continuation lines;\n\
+*** buffer.h.orig Fri Jan 4 19:12:49 1991
+--- buffer.h Thu Jun 4 16:01:41 1992
+***************
+*** 208,213 ****
+--- 208,219 ----
+ Lisp_Object truncate_lines;
+ /* Non-nil means display ctl chars with uparrow */
+ Lisp_Object ctl_arrow;
++ /* yossi-- Non-nil means display the characters in the buffer as they are,
++ even when they are "nonprintable" ascii. This is particularly useful
++ for fonts which have more than 128 characters */
++ Lisp_Object display_literal;
++ /* yossi-- Non-nil means reverse each line of the buffer, for Semitics */
++ Lisp_Object display_reversed;
+ /* Non-nil means do selective display;
+ See doc string in syms_of_buffer (buffer.c) for details. */
+ Lisp_Object selective_display;
+*** dispnew.c.orig Thu Jun 4 15:19:39 1992
+--- dispnew.c Thu Jun 4 16:01:42 1992
+***************
+*** 614,624 ****
+ reassert_line_highlight (0, cursor_vpos);
+ output_chars (&current_screen->contents[vpos][hpos], 1);
+ fflush (stdout);
+! ++cursor_hpos;
+ if (hpos == current_screen->used[vpos])
+ {
+! current_screen->used[vpos] = hpos + 1;
+! current_screen->contents[vpos][hpos + 1] = 0;
+ }
+ return 1;
+ }
+--- 614,624 ----
+ reassert_line_highlight (0, cursor_vpos);
+ output_chars (&current_screen->contents[vpos][hpos], 1);
+ fflush (stdout);
+! cursor_hpos += (NULL(XBUFFER(w->buffer)->display_reversed))? 1: -1; /* yossi */
+ if (hpos == current_screen->used[vpos])
+ {
+! current_screen->used[vpos] = cursor_hpos;
+! current_screen->contents[vpos][cursor_hpos] = 0;
+ }
+ return 1;
+ }
+***************
+*** 633,639 ****
+ if (XINT (w->hscroll) && cursor_hpos == XFASTINT (w->left))
+ return 0;
+
+! cursor_hpos += n;
+ XFASTINT (w->last_point_x) = cursor_hpos;
+ XFASTINT (w->last_point) = point;
+ move_cursor (cursor_vpos, cursor_hpos);
+--- 633,639 ----
+ if (XINT (w->hscroll) && cursor_hpos == XFASTINT (w->left))
+ return 0;
+
+! cursor_hpos += (NULL(XBUFFER(w->buffer)->display_reversed))? n: -n; /* yossi */
+ XFASTINT (w->last_point_x) = cursor_hpos;
+ XFASTINT (w->last_point) = point;
+ move_cursor (cursor_vpos, cursor_hpos);
+*** indent.c.orig Thu Jun 4 15:19:50 1992
+--- indent.c Thu Jun 4 16:07:53 1992
+***************
+*** 79,84 ****
+--- 79,85 ----
+ register int post_tab;
+ register int tab_width = XINT (current_buffer->tab_width);
+ int ctl_arrow = !NULL (current_buffer->ctl_arrow);
++ int display_literal = !NULL (current_buffer->display_literal); /* yossi */
+
+ if (point == last_known_column_point
+ && MODIFF == last_known_column_modified)
+***************
+*** 132,137 ****
+--- 133,142 ----
+ col = 0;
+ tab_seen = 1;
+ }
++ else if (display_literal) /* yossi */
++ {
++ col++;
++ }
+ else
+ col += (ctl_arrow && c < 0200) ? 2 : 4;
+ }
+***************
+*** 298,303 ****
+--- 303,309 ----
+ register int end = ZV;
+ register int tab_width = XINT (current_buffer->tab_width);
+ register int ctl_arrow = !NULL (current_buffer->ctl_arrow);
++ register int display_literal = !NULL (current_buffer->display_literal); /* yossi */
+
+ Lisp_Object val;
+
+***************
+*** 324,332 ****
+ col += tab_width - 1;
+ col = col / tab_width * tab_width;
+ }
+! else if (ctl_arrow && (c < 040 || c == 0177))
+ col++;
+! else if (c < 040 || c >= 0177)
+ col += 3;
+ }
+
+--- 330,338 ----
+ col += tab_width - 1;
+ col = col / tab_width * tab_width;
+ }
+! else if ((!display_literal) && ctl_arrow && (c < 040 || c == 0177)) /* yossi */
+ col++;
+! else if ((!display_literal) && (c < 040 || c >= 0177)) /* yossi */
+ col += 3;
+ }
+
+***************
+*** 355,360 ****
+--- 361,367 ----
+ register int c;
+ register int tab_width = XFASTINT (current_buffer->tab_width);
+ register int ctl_arrow = !NULL (current_buffer->ctl_arrow);
++ register int display_literal = !NULL (current_buffer->display_literal); /* yossi */
+ int selective
+ = XTYPE (current_buffer->selective_display) == Lisp_Int
+ ? XINT (current_buffer->selective_display)
+***************
+*** 428,433 ****
+--- 435,442 ----
+ hpos = width;
+ }
+ }
++ else if (display_literal) /* yossi */
++ hpos++;
+ else
+ hpos += (ctl_arrow && c < 0200) ? 2 : 4;
+
+*** keyboard.c.orig Thu Jun 4 15:19:53 1992
+--- keyboard.c Thu Jun 4 16:01:44 1992
+***************
+*** 705,711 ****
+ {
+ lose = FETCH_CHAR (point);
+ SET_PT (point + 1);
+! if (lose >= ' ' && lose < 0177
+ && (XFASTINT (XWINDOW (selected_window)->last_modified)
+ >= MODIFF)
+ && (XFASTINT (XWINDOW (selected_window)->last_point)
+--- 705,712 ----
+ {
+ lose = FETCH_CHAR (point);
+ SET_PT (point + 1);
+! if (((lose >= ' ' && lose < 0177) ||
+! !NULL(current_buffer->display_literal)) /* yossi */
+ && (XFASTINT (XWINDOW (selected_window)->last_modified)
+ >= MODIFF)
+ && (XFASTINT (XWINDOW (selected_window)->last_point)
+***************
+*** 721,727 ****
+ {
+ SET_PT (point - 1);
+ lose = FETCH_CHAR (point);
+! if (lose >= ' ' && lose < 0177
+ && (XFASTINT (XWINDOW (selected_window)->last_modified)
+ >= MODIFF)
+ && (XFASTINT (XWINDOW (selected_window)->last_point)
+--- 722,729 ----
+ {
+ SET_PT (point - 1);
+ lose = FETCH_CHAR (point);
+! if (((lose >= ' ' && lose < 0177) ||
+! !NULL(current_buffer->display_literal)) /* yossi */
+ && (XFASTINT (XWINDOW (selected_window)->last_modified)
+ >= MODIFF)
+ && (XFASTINT (XWINDOW (selected_window)->last_point)
+***************
+*** 761,768 ****
+ }
+ if (!lose
+ && (point == ZV || FETCH_CHAR (point) == '\n')
+! && last_command_char >= ' '
+! && last_command_char < 0177)
+ no_redisplay
+ = direct_output_for_insert (last_command_char);
+ goto directly_done;
+--- 763,770 ----
+ }
+ if (!lose
+ && (point == ZV || FETCH_CHAR (point) == '\n')
+! && ((last_command_char >= ' ' && last_command_char < 0177) ||
+! !NULL(current_buffer->display_literal))) /* yossi */
+ no_redisplay
+ = direct_output_for_insert (last_command_char);
+ goto directly_done;
+*** xdisp.c.orig Thu Jun 4 15:20:53 1992
+--- xdisp.c Thu Jun 4 16:01:45 1992
+***************
+*** 405,410 ****
+--- 405,417 ----
+ if (pos.vpos < 1)
+ {
+ cursor_hpos = max (XFASTINT (w->left), pos.hpos);
++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */
++ register int width = XFASTINT (w->width) - 1
++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width);
++
++ cursor_hpos = XFASTINT(w->left) + width -
++ (cursor_hpos - XFASTINT(w->left));
++ }
+ cursor_vpos = this_line_vpos;
+ goto update;
+ }
+***************
+*** 551,556 ****
+--- 558,589 ----
+ last_arrow_string = Qt;
+ }
+ }
++
++ /*
++ * yossi-- the following function is a simplified version of Denys Duchier's
++ * epoch::redisplay-screen, stolen from Epoch 3.1.
++ */
++ DEFUN ("x-smart-redisplay",Fx_smart_redisplay,Sx_smart_redisplay,0,0,"",
++ "Perform a smart redisplay of the screen.")
++ ()
++ {
++ Lisp_Object root_window = XWINDOW (minibuf_window)->prev;
++ int modified = BUF_MODIFF(current_buffer)++;
++
++ windows_or_buffers_changed++;
++
++ do_pending_window_change();
++ if (interrupt_input) unrequest_sigio();
++
++ redisplay_window(root_window,0);
++ update_screen(1,1);
++
++ BUF_MODIFF(current_buffer) = modified;
++ do_pending_window_change();
++ if (interrupt_input) request_sigio();
++
++ return Qnil;
++ }
+
+ int do_id = 1;
+
+***************
+*** 672,677 ****
+--- 705,717 ----
+ if (EQ (window, selected_window))
+ {
+ cursor_hpos = max (0, pos.hpos) + XFASTINT (w->left);
++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */
++ register int width = XFASTINT (w->width) - 1
++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width);
++
++ cursor_hpos = XFASTINT(w->left) + width -
++ (cursor_hpos - XFASTINT(w->left));
++ }
+ cursor_vpos = pos.vpos + XFASTINT (w->top);
+ }
+ }
+***************
+*** 704,709 ****
+--- 744,756 ----
+ {
+ /* These variables are supposed to be origin 1 */
+ cursor_hpos = max (0, pos.hpos) + XFASTINT (w->left);
++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */
++ register int width = XFASTINT (w->width) - 1
++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width);
++
++ cursor_hpos = XFASTINT(w->left) + width -
++ (cursor_hpos - XFASTINT(w->left));
++ }
+ cursor_vpos = pos.vpos + XFASTINT (w->top);
+ }
+ /* This doesn't do the trick, because if a window to the right of
+***************
+*** 1213,1218 ****
+--- 1260,1272 ----
+ }
+
+ cursor_hpos = max (0, point_hpos);
++ if (!NULL(XBUFFER(w->buffer)->display_reversed)) { /* yossi */
++ register int width = XFASTINT (w->width) - 1
++ - (XFASTINT(w->width) + XFASTINT(w->left) != screen_width);
++
++ cursor_hpos = XFASTINT(w->left) + width -
++ (cursor_hpos - XFASTINT(w->left));
++ }
+ cursor_vpos = point_vpos;
+
+ if (debug_end_pos)
+***************
+*** 1265,1270 ****
+--- 1319,1325 ----
+ register unsigned char *p1prev;
+ int tab_width = XINT (current_buffer->tab_width);
+ int ctl_arrow = !NULL (current_buffer->ctl_arrow);
++ int display_literal = !NULL (current_buffer->display_literal); /* yossi */
+ int width = XFASTINT (w->width) - 1
+ - (XFASTINT (w->width) + XFASTINT (w->left) != screen_width);
+ struct position val;
+***************
+*** 1382,1387 ****
+--- 1437,1448 ----
+ }
+ break;
+ }
++ else if (display_literal) /* yossi */
++ {
++ if (p1 >= startp)
++ *p1 = c;
++ p1++;
++ }
+ else if (c < 0200 && ctl_arrow)
+ {
+ if (p1 >= startp)
+***************
+*** 1534,1539 ****
+--- 1595,1624 ----
+
+ val.bufpos = pos;
+ val_display_text_line = val;
++
++ /* yossi-- reverse the line if necessary */
++ if (!NULL(current_buffer->display_reversed)) {
++ unsigned char *p2, t;
++
++ if (p1 < endp + 1) {
++ while (p1 <= endp) *p1++ = ' ';
++ new_screen->used[vpos] = max(new_screen->used[vpos], p1 - new_screen->contents[vpos]);
++ new_screen->contents[vpos][new_screen->used[vpos]] = 0;
++ }
++
++ /* reverse the line */
++ for (p1 = startp, p2 = startp + width; p1 < p2; p1++, --p2) {
++ t = *p1;
++ *p1 = *p2;
++ *p2 = t;
++ }
++
++ /* reverse the position of point if necessary */
++ if ((point_vpos == vpos) && (w == XWINDOW (selected_window)))
++ cursor_hpos = XFASTINT(w->left) + width -
++ (cursor_hpos - XFASTINT(w->left));
++ }
++
+ return &val_display_text_line;
+ }
+
+***************
+*** 1976,1981 ****
+--- 2061,2072 ----
+ }
+ while ((p1 - start + hscroll - (hscroll > 0)) % tab_width);
+ }
++ else if (buffer_defaults.display_literal) /* yossi */
++ {
++ if (p1 >= start)
++ *p1 = c;
++ p1++;
++ }
+ else if (c < 0200 && buffer_defaults.ctl_arrow)
+ {
+ if (p1 >= start)
+***************
+*** 2065,2070 ****
+--- 2156,2162 ----
+ mode_line_inverse_video = 1;
+
+ defsubr (&Sredraw_display);
++ defsubr (&Sx_smart_redisplay); /* yossi */
+ }
+
+ /* initialize the window system */
diff --git a/language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont b/language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont
new file mode 100644
index 0000000000..3f93733b80
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/hemacs/yossi/thefont
@@ -0,0 +1,123 @@
+begin 644 heb6x13.bdf.Z
+M'YV04Z@$D4+%R!,G5$#(<!%#P9 G39H400C"(42)%(>@"2,GS!@Z9>3, 3%"
+MA@P:+5J4K $#!)DR<]*<<5.&# L0;<*\O!G&#1D0',M8C#@QX9@W</+(D8D&
+MY$\48U* B)$C1PP08O* 4/)F3ADX:$ 865HSIQL0*/)TC0EDR!074^CT-/-&
+M#AD718A42>%B*,:$5-"4 2$')AT0;\R H",8!%TWA].,E+NFS%DS<MZT 6$#
+M3XP9+L20,=/W(5&*?HN"@!*RC>28;\[2>0.BCM>;1Y/>;/.&3!HS>6[ZGD-G
+MJ9@Z('GZ!.&5#9O%:"2GIC@G,9T[08$N3T-G))DW8^JTL2R73IK8CNMJUPJG
+MCAPX70=+!B&X<-;I"<]TA%P3Q!WN:+R!G&-EE'$3')G9D<9+/S$6QF&,#1:&
+M&&_8,5AN2C%%!WX@N/&&>6-(" <<97 $0AIGA>$<"+FE 5-I%ZFF@$$4M="$
+M9&.T8$0:>-1D8TUIB->"%"U,489K0\3VDAM>D9'29RW$( ,,+=Q00Y57#M&"
+M#50F,<43..!00PXMX*# %$EH4<14,X!P PYNFDDC%4(\48431"3AQ!%U8L$9
+MFR"TU,(,9PI$$!12/ %%$00E4<044^4PXT%4.!&$1%](4<017E(A118@B"#"
+MI'<2\6FH-\XQQJA&7)H$$UE\8:E$H>[8(QFC7E%$$D<@086LEZXI0A- BC?J
+M%$P$09$(4AQ;!!57)$$$%4@ 2ZL(1B*II&5-CAH$$41\$5 63!1AK;"C0I$$
+M%D4P(6Z::WZF !1/Z/DKFFI.-:4"FG[)1!54)''0%WY:R>^C3_P;\,"@&CP%
+M%$$,H><1H0[AK16,!G&$N=%.BP1G,#B$Q$!3/)OIIIV>*JK())L\T4-Y[AGJ
+MJ$04T6H53/PZQ,A2!#HI0E_4/,40JA$ZYQ=!#*U:#"$_!$464O#J:\4;=?11
+M2".5=%)**[649%)+G=$46E%%:M56\8$E%EEDF.4""" $-EAAQ"&F6(3I07;B
+M2.V)P48:8[BD61@HNC#J1$0@JBBC 3_*LA20QH"##84.1,7. P&E:AIIP."Y
+M B\_$3/%(4_1,;4@T&##52$3<?K'-O@LA!!^QOY9H" ,JH 025#11!!0*/"Y
+M$2$3/V/QR!^OO/'&?^Y\R(AC+D7E!$FO^1B<>]Y0Z*-/=>;KJ:_NL^O2HAY[
+MR+/7#JB@A/+N._#"A_Q\_/3O>T/(9IAYOP+[SO]Y]#RCWN5X=KWLP4 &H',"
+MS":FD.^5[V.J8YT"R.>Q/Z&/=G^Z'?MVU[O?!<]_\@M9&,S$$@6,4 $E/&$*
+MS30_ Y$@-8+P^8Z!P-"<8^!A#+= \,G00J:3W88M%V;-N@^#](/A"848<C*
+MH,0D*F!_^XHB]/ D/1@24(;8HR$-$KA F6U1AQ6,X/C =[[=!7%]N6M?!^&'
+MQ,\Q40$X"-D80A9'!9@A9#0(&9<4D$<^3I$(50R(Y6(X0\_5@(NB8^ AP8@Z
+M,;:.C$!4GP;3R,'W?3"$1PS9_NI8Q_WMCP;Z"UD)09E 0 90D-6[8B%A0+D;
+MRHQRC(2@^!ZYPS*F+X-#I&01V8C)^7&2CDO4)![U.$P_EC*0AAI@YK!HP!L@
+MLGO.C"4/QUC+2.(2=[K;Y24S2;\]YB!DWU3 'MN(21=.#Y7*[!DS.\>T9S+0
+M3-)TY 0A>4%)YC*;:]PF$J5H1S/Q\W/YXZ8YK;C,0L9@>PI,I,PD%<]9SK.:
+M];PF$?/)35^::0QF.F$.S!0F8_:QCV\ZYBF32<@LPD!*[I19.QO:0WJ:T9[8
+M5*,E*XK)CG:TA/W#GS]#QL^!HK.DV9.7*REV4 >&T:$^A)TUA1C32AJ1GU#E
+MJ505\$9RTL^G)%6E26.PQ:'JRZB-1*I+;\G4B<[4JDA\8U3Y-U6L#E*K03VD
+M5^7%4FI6T)9GG"0^S]K+OG)S!F-@JV#7ZM94%G2KK4QH][@*5EFV%*(OE:@N
+M*;K6RH8,L#05*!5'^M;#!M69<UTD^.295 M&MJR3G:EE!SM5,P1VM?LJ;#H+
+MV+G8*I:!,8#E:,4*6;*B<:]&1*)K,XO6<F[VA3^%:VT1VD6B1G.WC[WK4G\K
+MT^#Z=7[#+:YF38G<K'JVM@B<*SRA:]<?1A2UP.4E<?V:W>L:E[OG]*XZ"RD#
+M&]Y6I0PE+RVE>U[J.E6]VA5N8)$H6Z#6MJOWI=B^ZKI?\Y[6O]I<KX0%?-7C
+MQK>S\S6I#.2:8(4TA,$/Y>^#]5I=^,%VJOO"[(E%VET,T_: B6VN0A (XM+B
+M%:9F?2J*=\Q:JO*8L!8F:(:S)P/0=KB^C9UF@Y7:7Q+_-W@KYF=[)5Q@Y=9P
+MBC(^29)).]:\WK/$^G0O-X>[XBI_MX;,5:B"1;M#+O?6RTV-<)1_3&?!FGG(
+MG9M!>(^LVS;S5L2^=7*$VVBF=NZKC_MJ)PS,%- 6!CFY9YZ!?;/\7#]'U\&!
+M_O*3,UM'1(?,T,6L8Z/?BTP7K[.&",[R>"U=7B:/6-.#%C-V22C*6BL@G(Z&
+MKY!?/ ,.9SF_K%ZR:3,=9XH&F-$[[2<<Q7QG7L=8S2"80>GT&V),PSG' /:K
+MM/EHIC[>4;#?/F%5_UAJP^*YAD:6\0P^3&T;3U?0QI:UF'.:V6;/ 0X>$8I7
+M];SE/UL;QZFU[H3E7>]'RQ<$9<##&-@0AC:DE&*2[O>E74UL;(>YQRO^'+W_
+M9W 7QZ$.'ZJ)WQX>[2^VN\L 3^_%2\AR@ENUV6X0CQBP)A,WD+S7$F_UL*\=
+M\&S3K^7*+F% @4[@CIM;<,[AR,W[?-2)[SSE8*Z?,)T8AJG+P)^A%&S1=0WI
+MGI%(#B&"S,TKW72=WUBR*N<F*57XZ:GV<86W]FNS&_[U.?2$##=?==F%?7;T
+M1GU^?:RZ$P,/3C.%TP8LE+O19_OQD(>M*3<']MZK37&>IWU^VSZTRYF]>.OA
+MNS!N8$,9S+ AK_:QQBA'^]\Q"6K!?K28_%0TJ3E[],];YO&E[S -V!ULRC]=
+M]9L&/(_;27P>]S'7Y9ZM#$&RE#FL@>0TH/')WPSUX/MU7R<,Z/X">L*-S[[%
+MM6>#;:"?P^D#VO*KSZR4D^W][2;?>D=I0TZ@;_+>N[O)L([WP#.;^6)RG.L'
+MAP9Y !:6 7UL-GGW]VK%QE?[-VK[UVQ?=QYX9WI,%U9.UW<0IG\!=GU6]WT7
+M=G1SP'!S@ ;01W86:';OEG\,Z#PL5&AMYWJA!DSN1WNSI0<A\0;0IW<GR'<I
+MN( "IW&V9E,<-81P1&M:YX&[%AOZIGN2MX.^AX'PMH)3M4>"MV(.^'_O1T#7
+M@8->54*H1WW %VOTLTE$N&@*T'I])&J)5V$ Z&*,41A+*&,UP'L(F'I^9WWT
+MTV@N*%C[8X9FV%%]B(1=EQ[N07(U('WV9X<9*(5G^(+;!G3A%%#%-X/@-UMF
+MD 868HCEEXA@>(=B"% <)8-B($<M*#Q$&(ALF(69$Q-X8(CU5X>=N(@_.'4V
+M)8/?)H1%^$2*UX8@6 868G-=>(!.F( 5UW,7IX>-F(S\]'K&A'PT:#UEH"&&
+M6(&.A8+XYX,^1X:Y"(AT1(3<2(D?.%MN@")Q"&TU8(+5R(/7:''<I(VX&%)^
+M>(J[J(H]<Q1L$!N&J(/I^(0]R(Y693]3-3\ >80L%H[6XQ6N88_XV(5-N(_$
+MB'YXN$\=^%=N)X@')WIS, <DMT=?>'[5]XGRLX>:MVS&E&@A"8Z[5@8?IR(;
+M28?#J(A1.(N9=84Z166=1T#Z42+,MY&("(L>&88:*(.>EHQFB(8RZ(R5:#T?
+M9QCG 8P=9@.;Z)/_!I2,Z(ZEV'KTUGYSEWLR9@.O^)*Q&)/9V(VYN%$FE%%F
+M,HHD"8\6Z6)!L)'"Z) PJ8(RN2\EA(L=%5!XN898^(P$) 0;28U*QH_K:(QC
+MAD?=EIBZR&V,24K?AI0&24!#L)'H.)@/^9%!N9BU2)*_Q)E9!YF[1@0;J8^6
+M.9?8>(R(V9B*24JLR6CSZ)>94P0;V9"E&99TZ7-Z*8.BIINVR)?D!IL]8P0D
+MMS\=.96>F)FYR9GXPYO*B9*#> 3#Z9)R:9NGV8YDV9EU9);O^)I)24!(,)P]
+M"98_>9R,N)>YJ)?>6(9M>71),)Q1*9[&*8MCB7%U-I"@.8A*,)Q?.9WC*9\7
+M-P-[.(D""D[$Y)P'MP3#&9>UV9]B>7&X&$Z"-T=.%$ZX>)\'QP3#*9ANQJ"W
+MZ:#,B9W,29,%N6M-,)R5N:'QV:#<A(MD@)9GN8WI:: NY@3#29HH6GF869X7
+MM:,OJE&&%Z,6ZF)/,)RT>:._1YXR:94PNJ3?&*1'%SQ>54?%B:-4*9.W&*.W
+M^*'<&9F9$P4DAP/2N: IVJ'6R:0QVE$GU(=KV&S3$Z7AR9]C6IW8=9U$&&X$
+MNJ1..EM3\*7O":=4BJ3SN9F==))_^)GK.5M4\*7[*:9_ZI]CQG[UR6-Y:CU5
+M\*4*:J102*869::<VJ2':CU6\*4:ZF^-JJ*;:IY AU,!^:D$= 5?>J*D>J2.
+M>JHQ>D*V:B8MFHN32D!8\*4V&JN9*J<U181 9Y=!J)ZI")P@D 5?6J3 VH^&
+M2:LH9&L9QZJ9HP4D%TY3*JNFBDG(.(DCF88UN:N9(P8=41ET('JDEZUABJG0
+M>GF8]$G%Q(ST.G7DVC-BX!%K$((R1()>E0-ORJC<JJDU)92P]X**5HKWBA56
+M@ZZXEZU]*K#!ZH_QBK 6FXR3B(I]V9W?A3U@)Q[9NJCN6ICP*G73JJN;)Z-'
+M5P<^@35'41C9>JG/2K+IMX$2YH#-UG@@H:Y<"6TY,*H7^*XU>UDOZ(<IN[!A
+MD*VP&K0T&Y%BIJ9/%*-LF:P<BZ_9^JM,JX 42S\@:D=TNJ2/::WUF*W.FK7%
+M6+)6Y8ZZ::A4RZ4],X$=QC33QHD<*JQ'I+#Z<Z:GZ)LC.HCEN%@GE7/JJ+71
+M2G#:F)R>VK:[9@8DQS0!.[*$B[9$VYC%]&WUVHQB"P)GT+@U)+B$&;E#FUE*
+M"HBE^(W-YJ]Q"P,B.[.@Z[3-64=JB5&=RK?-E@:<*[-F"Y$@:;*?LT>KI;&_
+M6;4@H :<"[36V+J[^SFRIP#;-J#)&$Z'%[QN"P+/-U<PL+3'>[:AV[40*D=-
+M1*&T>Y.9PP:<B[79J[N9Z;N1VF/ V[<'YW#66[;GFZ,RB41D($(N>JLHJ[B#
+MZ)0R=E!S*Y6E2K 2%KMZN[\;.[U<&+=%M:T36[@2-KKRJ+*S!0>-BU(.++2N
+M*UQ?FY=:ZKX>=\$1"[G:N\%^%5+F"8]X"\)')P<7O+JY2[\^AT0&_+I'F;D:
+M.5<Q@+OS6Z4S?,)DN4?ME+@)O&L]NUBYY;F7Z<,7]SG,:+GSFIK;MK!U<,'8
+M.[@EG+Q^99X=99:(1\'68P<7;+Y8C+Z,B$2H2JU;NFMW<,'R6\8RW,1;3(3Z
+MRW9@3$"M.%<+9GYQNK56=5,\=I?ARXNSE0>-*P/MRKI9G)EH'*->7+I9UVQZ
+M<,B/J\AF7+_L)9(QJ&P+:Z[YQK.'/,*6',?<)#GTJ0 2NE:FW,E*I\<PW,.
+M>G%S=LJ=;#4A(8UZS,-PS,3<E,K#!ZF"):%(.T/FP08O<<C&N\NQK'8NBFM'
+MF[GK% ,WD&[0)B57_+F+/%-VO,U&R,TGZ\TP]P8M8*XEL@8M<&_YUK@<R<<#
+M;+<V:[-S-T,GL6?_:P.5',.\+)!39ZM-E*:K>L??=1*35LU0J<2FZ<?:EIK>
+MUEKXZV/\>W#K=!*I1M"OK,RS*F;?"'3:N'7T2%LGX6L$K<O8?,D^AXM %U#[
+M@M+_7,2#&-&JH\[)/-*DK,^TO+[#G$4G0<V+90/7O,3+_#G;QIJ3VYK,>Y*D
+M-,70+,\E-%=?G,%-N[NY^LZ<1\@&MF%IMM-O+-/Y3(LNFJNRFZLG1,1)C=.'
+MV+C$R<X#Z\YS?++&BL!KW-)*/="+=0.)C,\_/6_=W$0XQ;<L#=%*/=%S?<^P
+M?-$-N,)&"]!XMF$@/=>B;->$K5TB^G+BF]@U\&QS7=%:?=>::29E@*N>356?
+M+=8/;6I*K=.XY3!H_<"2R\G/7'!4K5PRL$=S=0,Q[=.//=2*B=3[U]>DC=.K
+M8]8]?= 03-,I#<R@Z-H='='V;-9DG-F$37@PZ-!2S<+*)\\%/=M9;=O=:DR"
+M-Y3"W-KQ[-N C5M2FMH:+(:M-]T<K:S*O=CD7=>#O=U_?,!FV=DDR=M'I]R6
+M3=Z";='RK4F<'>"@/>!??'7\@W6([=$\W;@XT-CQ3<#:I=O:%=Z<4V185LTX
+M@-G:#>&M/3_M=-32NVL13=<,+M(;;K=])*',.&Z['>)PC=,W0,\87MO"O=I
+M2) .^$]O[=<P+M?D'=S4B=#<)'A[?>#?/-7)+<\W,-XJU5%.C;SZE^)1+-V%
+MAN :HH)/N+NW>397>/I)^4>%4S*>)67-<A)#N/[C5\!#)_MO+70/93=7>5&
+M?N6'C=_5G4629MHR8Q(.[M\<WN*/FH=F,G>B!Q8D9Q(:[N4FS$WA1$I?#+ZH
+M;.;*.G-'S$ F8>**KL6'B;$7*Z+-=@9I,![DZU4F0>-!/MQB-I3@JI@+2P8J
+M4@:5ON=%9M"G;N.9S.FXOKQV;CV"<>@&_N39C,F!'H^<NK#8T<:D+@-=7NNA
+MBT3->[&3N+!Z0#C^"VWUM>9^FM9"+ES [+P+.P:"$>L*MFZT7K?;?NM$G>Z2
+M+KP@(>X*P6_ 3M)RS.CYBZ7K/KUJ ;=9%G'Q/M,$]^Q$27#-9AEDL 9A8.BD
+M/@.)SNR+/FM83NP07XK-9O (?V0XU^];?;.&78IA.]I'QW#CH>_6/@.F;NZH
+M;L.<O,+M-$Z92_#C ;\6#^0F;^N!KNZ,.;6[3D O?^A7CO&:;540JIBX* ;W
+MGI(^$7/5WCWUM>PSW^P)G>O0_H(PQ[*'?GKF_=2,[%>KO/%1F^!V-Q[@7O7P
+M[>=J/9.KJ9@EQ/(>KWQY@")5W]_._=^9E:LV[Y@[[F($3R)5W^=Q_^?<KIJ,
+M&?%8#H%_:^DTL/!-W_#>>O8/[YH)3O#3?LRD3@.8SO":/C^-CO8%>KF2K!.%
+MO^<O[?.WG5F9;^0)R]IKKY1(@;I91@,RW\<G__>%NJ1JV9G-1C>L;^VD)/IR
+M+_M<7^<N?G CZ/:3S_2P3_/S4\<"[L$)+A?(?F1>>/50?L;HSOBD)+N@B3AS
+"H@!<
+
+end
diff --git a/language/hebrew/hebtex/editors/unix/readme b/language/hebrew/hebtex/editors/unix/readme
new file mode 100644
index 0000000000..6f717a752c
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/readme
@@ -0,0 +1,5 @@
+hemacs is the Hebrew (right-to-left as well as left-to-right)
+version of emacs.
+vim is a modified version of vi, working in Hebrew, right-to-left
+as well as left-to-right.
+vi.iv is another right-to-left version of vi.
diff --git a/language/hebrew/hebtex/editors/unix/vi.iv/readme b/language/hebrew/hebtex/editors/unix/vi.iv/readme
new file mode 100644
index 0000000000..2311d2ca3b
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/vi.iv/readme
@@ -0,0 +1,19 @@
+vi.iv is a modified version of vi, including right-to-left
+editing. vi.iv includes all vi commands as well as the
+additional following commands:
+
+set the primary direction set rl for right-to-left
+ set lr for left-to-right
+
+switch temporarily from the primary direction to the secondary direction
+ ctrl-x, when in insert mode
+
+ There are a few known bugs: when typing too fast, the wrong
+ characters sometimes are displayed; searching and replacing are
+ problematic (but are supposed to work); sometimes you have to switch
+ to command mode in order to see your last modifications to the file.
+
+vi.iv is maintained by the Technion CS system engineers.
+Questions can be sent to Yael Dubinski -- yael@cs.technion.ac.il
+
+Rama -- rama@cc.huji.ac.il
diff --git a/language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man b/language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man
new file mode 100644
index 0000000000..c4167357d3
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/vi.iv/vi.iv.man
@@ -0,0 +1,1845 @@
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+NAME
+ vi.iv -bi-directional full-screen text editor based on vi
+
+SYNOPSIS
+ vi.iv [ -S ] [ -MS ] [ -LR|RL ] [ _v_i _o_p_t_i_o_n_s ] _n_a_m_e ...
+
+NOTE:
+ This manual is fairly long, since it describes some of the
+ concepts of bi-directional editing that _v_i._i_v is based on.
+ If this is your first time editing time-ordered bi-
+ directional text, it is probably worthwhile to read the
+ DESCRIPTION section. But if you want to skip that and get
+ more concise information about how ro run _v_i._i_v and the
+ commands it has that _v_i (_1) does not have, you'll want to
+ read the following sections: OPTIONS & COMMANDS, and THE
+ TECHNION COMPUTER SCIENCE FACULTY INSTALLATION. If you are
+ responsible for maintaining _v_i._i_v , then you may also want
+ to read TERMCAP FIELDS.
+
+DESCRIPTION
+ _v_i._i_v is a bi-directional full screen text editor based on
+ _v_i(1). _v_i._i_v works just like _v_i except for being able to
+ handle bi-directional text, for example containing English
+ and Hebrew. _v_i._i_v is not limited to terminals supporting
+ Hebrew, and can likewise work with all alphabets found on
+ the terminal. Therefore, in order to not be restricted to
+ these particular languages, we will speak in the abstract
+ about a language LR, written from left to right, and about a
+ language RL, written from right to left. The language LR
+ _i_s, however, written with the Latin alphabet, the alphabet
+ of the ASCII codes. The lanuage RL can be Arabic, Hebrew,
+ etc., although the examples in this manual page are in
+ Hebrew.
+
+ The reader is assumed to be familiar with _v_i. _v_i._i_v has been
+ designed to appear as _v_i when only LR text is used and is
+ shown from left-to-right. Accordingly, the explanation given
+ here is focused on the difference between _v_i._i_v and _v_i and
+ explains most things in terms of the already well-known
+ behavior of _v_i.
+
+ In the examples, file contents are always shown from left to
+ right and have a file-beginning symbol, -|, at the left end.
+ Screen appearances are marked by vertical bars on the left
+ and right sides serving as boundaries of an imaginary screen
+ whose width is 30 characters. Entered text or commands are
+ always shown from left to right with no special markings at
+ either end; each character shown is part of the input. In a
+ file contents or an input, <NEWL> represents a new-line
+ character or a carriage return respectively, ^ represents
+ pressing CONTROL simultaneously with the following
+ character, <ESC> represents the ESCAPE character, and []
+
+
+
+Sun Release 4.1 Last change: February, 1990 1
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ represents a blank when emphasis is needed.
+
+ Principles
+
+ There are a few simple principles which form the bases for
+ both the design and effective use of _v_i._i_v. They guided the
+ design and implementation. A clear understanding of them by
+ the user allows him or her to deduce the expected behavior
+ of the system.
+
+ Coding of Characters
+
+ Normally, seven bits suffices for the encoding of the Latin
+ letters in what is called the ASCII code. Likewise, seven
+ bits suffices for the encoding each of the Hebrew and Arabic
+ alphabets. There exists standard encodings for each in which
+ the letters get codes allocated to letters in ASCII. Thus
+ the standard encodings for Hebrew and Arabic have the
+ digits, punctuation and control characters in the same
+ positions they have in ASCII. _v_i._i_v assumes an encoding for
+ the characters of the alphabets such that the characters of
+ the Latin alphabet, according to the ASCII code have the
+ eighth bit off. It assumes that the characters of the other
+ RL alphabet have the eighth bit on with the lower order
+ seven bits as in the standard code. Thus if RL is Hebrew,
+ _v_i._i_v is using the ESCII code. (See _e_s_c_i_i(7).) By storing
+ all characters with the proper setting of the eighth bit,
+ the file remembers the language for all characters, even the
+ digits, punctuation, and control characters, such as tabs.
+ In addition, most recently developed terminals, with the
+ ability to change alphabet on a character-by-character
+ basis, use the eighth bit to indicate in which language a
+ particular seven bit code is to be shown on the screen.
+
+ Current View
+
+ The first of these is the concept of a _v_i_e_w of a document.
+ At any time, _v_i._i_v has a window open on a portion of a
+ document. That portion is called the _c_u_r_r_e_n_t _v_i_e_w and is
+ what the user sees on the screen.
+
+ View Direction
+
+ At any time, the view that _v_i._i_v is presenting has a
+ direction, which is either left-to-right (LR) or right-to-
+ left (RL). In the following, X and Y are each left or right
+ but not the same. The impact of this direction is that if
+ it is from X to Y, then the beginning of a line is on the X
+ side of the screen, paragraph indentation takes place on the
+ X side of the screen, the end of a line is either at the Y
+ end of the screen or some place to the Y of the beginning,
+ etc. The view direction is superimposed on what ever text
+
+
+
+Sun Release 4.1 Last change: February, 1990 2
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ is being shown at the moment. As far as _v_i._i_v is concerned,
+ the view direction _n_o_t_h_i_n_g whatsoever to do with the
+ language of the document; although to the human user, using
+ an LR view for a Hebrew document or an RL view for an
+ English document will not feel too comfortable. Some
+ English text in an LR view is:
+
+ |If I am not for myself, |
+ | then who is for me? |
+ |If I am only for myself, |
+ | then what am I? |
+ |If not now, then when? |
+ | -Pirke Avot |
+
+ The same text in an RL view does not look quite as nice:
+
+ |If I am not for myself, |
+ | then who is for me? |
+ |If I am only for myself, |
+ | then what am I? |
+ |If not now, then when? |
+ | -Pirke Avot |
+
+ Actually, because English is an LR language, in an RL view,
+ it is being written backwards in order that it appear
+ written from left to right. Some Hebrew text in an RL view
+ is:
+
+ |`m `io `pi li, ni li? |
+ |`m `pi lrvni, nd `pi? |
+ |`m l` rkyie, `inzi? |
+ | -txwi `aez |
+
+ The same Hebrew text in an LR view does not look so nice:
+
+ |`m `io `pi li, ni li? |
+ |`m `pi lrvni, nd `pi? |
+ |`m l` rkyie, `inzi? |
+ | -txwi `aez |
+
+ Similarly, because Hebrew is an RL language, in an LR view,
+ it is being written backwards in order that it appear
+ written from right to left.
+
+ The current view direction can be changed at any time by use
+ of a set command;
+
+ :set rightleft
+ :set rl
+ :set nolr
+ :set noleftright
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 3
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ all set the view direction as RL, and
+
+ :set leftright
+ :set lr
+ :set norl
+ :set norightleft
+
+ all set the view direction as LR. Note then that any given
+ window of the file being edited can be viewed from either
+ direction, although not at the same time in a given _v_i._i_v
+ invocation. When started up, _v_i._i_v assumes an LR view
+ direction unless there is a contraindicating command in the
+ .exrc (_o_r ._e_x_r_i_v) file or in the EXINIT (_o_r _E_X_I_N_I_T_I_V)
+ variable.
+
+ Time Order vs. Visual Order
+
+ A given file can be kept in one of two orders:
+
+ time order
+ The characters are stored in the order in which they
+ would be input if the text were typed from beginning to
+ end with no backspacing. It is the order in which the
+ characters are pronounced if the text is read aloud.
+ Thus if one considers the file as ordered from left to
+ right, then the letters of LR text appear to be in the
+ right order, but the letters of RL text appears to be
+ backwards.
+
+ visual order
+ The characters are stored in the order in which they
+ appear on the screen.
+
+ In order to clarify the difference between these two orders,
+ suppose that the view direction is from right to left, and
+ suppose one typed the letters
+
+ yni[]uri
+
+ with the intention of seeing
+
+ |yni uri |
+
+ on the screen. That intention implies that the view must be
+ RL, for the first word is on the right. With time order the
+ characters are stored in the file in the following order:
+
+ -|yni[]uri
+
+ With visual order the characters are stored in the file in
+ the following order:
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 4
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ -| uri[]iny
+
+
+ If, on the other hand, the view direction were LR, then the
+ same input would appear as
+
+ |yni uri |
+
+ on the screen. With time order, the characters are stored
+ in the file in the same order as for the RL view example:
+
+ -|yni[]uri
+
+ However, with visual order the characters are stored in the
+ file in the following order:
+
+ -|iny[]uri
+
+ Note that in all of the above examples, in order for the
+ space to end up between the two words, the space has to be
+ entered in the language whose direction is the same as that
+ of the view.
+
+ Thus, time order is dependent only on the order of input and
+ is independent of the viewing order. Visual order is
+ dependent on the order of input and on the viewing order.
+
+ Screen Appearance
+
+ While the contents of files are kept in time order, the
+ screen appearance of those contents are in the order in
+ which a human being wants to see the characters. In this
+ order, all the text on one line is read before moving on to
+ the next, each language is read in its own natural
+ direction, and the major flow of each line is according to
+ the natural direction of the document's main language.
+ Because the main language of a document is somewhat
+ arbitrary and depends on a human choice which can be
+ indpendent of the contents, _v_i._i_v simply considers the
+ current view direction as defining for that moment a main
+ language whose direction is equal to the view direction.
+
+ The screen appearance of any view is a function of the
+ current view direction and the language of the individual
+ characters, i.e., the state of their eighth bits. While the
+ actual editor cannot use exactly the following algorithm
+ (because it is trying to avoid to have to redraw whole
+ lines), the ultimate expected appearance of a view can be
+ understood in terms of the following line-by-line algorithm:
+
+ for each line in the view do
+ if the current view direction is LR then
+
+
+
+Sun Release 4.1 Last change: February, 1990 5
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ rotate each contiguous string of RL text about its own center axis
+ else (the current view direction is RL)
+ rotate the whole line about its center axis;
+ rotate each contiguous string of LR text about its own center axis
+ fi
+ od
+
+
+ As an example, consider the following three-line file
+ contents:
+
+ -|de` `nx "Hello there Uri
+ -|and Dan. How are you
+ -|today?" l`exi ecpi`l
+
+ If the current view direction is LR, then the appearance of
+ the view is:
+
+ |de` `nx "Hello there Uri |
+ |and Dan. How are you |
+ |today?" l`exi ecpi`l |
+
+ However, if the current view direction is RL, then the
+ appearance of the view is:
+
+ |de` `nx "Hello there Uri |
+ |and Dan. How are you |
+ |today?" l`exi ecpi`l |
+
+
+ It is interesting that the formatting system used to format
+ this manual, _d_i_t_r_o_f_f/_f_f_o_r_t_i_d, a bi-directional version of
+ _d_i_t_r_o_f_f expects its input in time order and uses the same
+ line-by-line algorithm to reorganize the mixed langauge text
+ on each line so that the text in each language is printed in
+ its own natural direction. Hence, in order to arrange that
+ the various screen displays were printed correctly it
+ sufficed to give to the formatter only the file contents. In
+ order that file contents not get reversed by the formatter,
+ the same Hebrew font was mounted in two different positions,
+ only one of these positions was specified to be RL, and the
+ file examples were prepared with its Hebrew in the LR
+ position of the font.
+
+ Shef Format
+
+ The combination of ESCII code and time order is called _s_h_e_f
+ _f_o_r_m_a_t. _v_i._i_v's default assumption is that the file is in
+ shef format. The editor _v_i_h(l), however, uses the following
+ format:
+
+ (1) Visual order (going from right to left)
+
+
+
+Sun Release 4.1 Last change: February, 1990 6
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ (2) The coding follows ASCII except:
+
+ (a) The codes normally assigned to the lower case
+ letters (& the grave accent, "`") represent
+ the Hebrew characters
+
+ (b) The lower case letters (& "`") are
+ represented by by their normal ASCII codes
+ with the eighth bit set
+
+ _V_i._i_v can be invoked with the -S _o_p_t_i_o_n _t_o _o_p_e_r_a_t_e _u_n_d_e_r
+ _E_S_C_I_I _w_i_t_h _v_i_s_u_a_l _o_r_d_e_r. _A_d_d_i_t_i_o_n_a_l_l_y, _i_f _a_f_t_e_r _i_n_v_o_k_i_n_g
+ _v_i._i_v, _i_t _i_s _d_i_s_c_o_v_e_r_e_d _t_h_a_t _t_h_e _f_i_l_e _l_o_o_k_s _s_t_r_a_n_g_e, _o_n_e _c_a_n
+ _c_a_u_s_e _v_i._i_v _t_o _o_p_e_r_a_t_e _i_n _v_i_s_u_a_l _o_r_d_e_r _b_y _u_t_t_e_r_i_n_g:
+
+ :_s_e_t _n_o_s_h_e_f_o_r_m_a_t
+
+ _N_o_t_e _t_h_a_t _t_h_e _o_r_d_e_r _o_f _s_t_o_r_a_g_e _o_f _t_h_e _f_i_l_e _i_s _a _p_e_r_m_a_n_e_n_t
+ _p_r_o_p_e_r_t_y _o_f _t_h_e _f_i_l_e _a_n_d _v_i._i_v _w_i_l_l _n_o_t _c_o_n_v_e_r_t _t_h_e _f_i_l_e
+ _f_r_o_m _o_n_e _o_r_d_e_r _t_o _a_n_o_t_h_e_r. _T_h_e_r_e _a_r_e _o_t_h_e_r _p_r_o_g_r_a_m_s, _s_u_c_h
+ _a_s _s_h_e_f_f(_l), _f_o_r _t_h_a_t _p_u_r_p_o_s_e.
+
+ _C_u_r_r_e_n_t _L_a_n_g_u_a_g_e _o_f _I_n_p_u_t
+
+ The next important concept is that of the current language
+ of input. The current language of input is either LR or RL.
+ It governs how the keystrokes are interpreted, what
+ character appears on the screen and what goes into the file.
+ Once in the file, the language of a character does _n_o_t
+ change even if the current language changes. If the current
+ language is LR, then the standard qwerty keyboard is assumed
+ and the generated ASCII seven-bit codes are stored with the
+ eighth bit off. If the current language is RL, then the
+ standard keyboard arrangement for RL is assumed, and the
+ generated seven-bit codes are stored with the eighth bit on;
+ in some cases, the keyboard provides the full eight-bit
+ codes, and in some cases only seven bits comes from the
+ keyboard and the on eighth bit must provided by the
+ software. The termcap for each terminal describes which
+ kind it is and describes what operations the terminal is
+ capable of doing; there is more on termcaps later.
+
+ The command for switching the current language of input is
+ ^x. As the user indicates a desire to switch by issuing the
+ switching command, _v_i._i_v tells the terminal to switch mode
+ if the current termcap says that the terminal has a
+ software-issueable command to do so. If the terminal does
+ not have such a command, then the user is told by means of a
+ highlighted bottom-line message to manually flip the
+ terminal's mode; of course, if the user fails to do so, the
+ results are weird!
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 7
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ There is a slight problem with the character chosen to
+ indicate a change of input language. Many users use ^x as
+ the line killing command by having told the shell
+
+ stty kill ^x
+
+ As a result giving ^x during input causes erasing of the
+ input line rather than a change to the input language; _v_i._i_v
+ never gets to see the ^x _s_i_n_c_e _t_h_e _t_t_y _d_r_i_v_e_r _h_a_s _s_w_a_l_l_o_w_e_d
+ _i_t _t_o_g_e_t_h_e_r _w_i_t_h _t_h_e _w_h_o_l_e _l_i_n_e _o_f _i_n_p_u_t. _A_s _v_i _h_a_s _g_i_v_e_n _a
+ _m_e_a_n_i_n_g _t_o _a_l_m_o_s_t _e_v_e_r_y _p_o_s_s_i_b_l_e _c_h_a_r_a_c_t_e_r _g_e_n_e_r_a_b_l_e _f_r_o_m
+ _t_h_e _k_e_y_b_o_a_r_d, _t_h_e_r_e _w_e_r_e _n_o_t _t_o_o _m_a_n_y _c_h_o_i_c_e_s _o_f _c_h_a_r_a_c_t_e_r_s
+ _t_o _u_s_e _a_s _t_h_e _l_a_n_g_u_a_g_e _c_h_a_n_g_e _i_n_d_i_c_a_t_i_o_n. _T_h_e _c_h_a_r_a_c_t_e_r _h_a_d
+ _t_o _b_e _s_o_m_e_t_h_i_n_g _t_h_a_t _i_s _n_o_t _l_i_k_e_l_y _t_o _b_e _p_u_t _i_n_t_o _a _f_i_l_e; _i_f
+ _i_t _w_e_r_e, _t_h_e_n _t_h_e _u_s_e_r _w_o_u_l_d _h_a_v_e _t_o _e_s_c_a_p_e _i_t _e_a_c_h _t_i_m_e _i_t
+ _w_o_u_l_d _b_e _p_u_t _i_n_t_o _t_h_e _f_i_l_e _r_a_t_h_e_r _t_h_a_n _b_e _o_b_e_y_e_d. _T_h_u_s _i_t
+ _h_a_d _t_o _b_e _s_o_m_e _C_O_N_T_R_O_L _c_h_a_r_a_c_t_e_r _t_h_a_t _d_i_d _n_o_t _h_a_v_e _a_n_o_t_h_e_r
+ _m_e_a_n_i_n_g. _G_e_n_e_r_a_l_l_y, _a _u_s_e_r_s _u_s_e_s _e_i_t_h_e_r _o_f ^_x _o_r ^_u _a_s _a
+ _s_i_g_n_a_l _t_o _t_h_e _t_t_y _d_r_i_v_e_r _b_u_t _n_o_t _b_o_t_h. _T_h_e _l_a_t_t_e_r _i_s _u_s_e_d
+ _m_o_r_e _o_f_t_e_n _a_n_d _i_s _u_s_e_d _a_s _t_h_e _l_i_n_e _k_i_l_l_e_r. _T_h_e_r_e_f_o_r_e, _i_t _w_a_s
+ _d_e_c_i_d_e_d _t_o _u_s_e _t_h_e _f_o_r_m_e_r _a_s _t_h_e _l_a_n_g_u_a_g_e _c_h_a_n_g_e _i_n_d_i_c_a_t_i_o_n
+ _a_n_d _t_o _m_a_k_e _w_h_i_c_h _c_h_a_r_a_c_t_e_r _t_h_a_t _i_s _u_s_e_d _a_s _t_h_e _i_n_d_i_c_a_t_i_o_n
+ _s_e_t_t_a_b_l_e _w_i_t_h:
+
+ :_s_e_t _c_h_a_n_g_e_l_a_n_g=_n_e_w-_c_h_a_r_a_c_t_e_r
+
+ _T_h_e _s_e_c_o_n_d _a_u_t_h_o_r _u_s_e_s ^_x _a_s _t_h_e _l_i_n_e _k_i_l_l_e_r _a_n_d _d_o_e_s
+
+ :_s_e_t _c_h_a_n_g_e_l_a_n_g=^_v^_u
+
+ _t_o _s_e_t _t_h_e _l_a_n_g_u_a_g_e _c_h_a_n_g_e _i_n_d_i_c_a_t_o_r _t_o ^_u. _I_n _t_h_e
+ _s_u_b_s_e_q_u_e_n_t _d_i_s_c_u_s_s_i_o_n, ^_x _i_s _u_s_e_d _t_o _d_e_n_o_t_e _t_h_e _l_a_n_g_u_a_g_e
+ _c_h_a_n_g_e _i_n_d_i_c_a_t_o_r _w_h_a_t_e_v_e_r _i_t _m_a_y _b_e.
+
+ The following begins a discussion of the effect of the
+ commands. For each command, its effect depends on the
+ current constellation of view direction and current language
+ and takes into account the exigencies and implications of
+ preservation of time order.
+
+ Modes
+
+ There are three modes for which it is important to know the
+ current language and view direction direction, namely insert
+ mode, command mode, and pattern/substitute mode. Actually,
+ _v_i considers there to be only two modes, insert mode and
+ command mode, with patterns and substitutions being given in
+ command mode. _v_i._i_v treats patterns and substitutions
+ slightly different from other commands; hence, it is
+ convenient to them as being in a separate mode.
+
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 8
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ Cursor
+
+ Before considering the details of each mode, it is necessary
+ to explain the rules concerning the cursor's position. In
+ command and pattern/substitute modes, the cursor is
+ positioned over the currently considered character, namely
+ the one to which the next command will apply. The cursor
+ movement commands work relative to the screen rather than
+ relative to the file contents. For example, hitting the left
+ arrow key causes the cursor to move to the left on the
+ screen even across a language change boundary; the cursor
+ does not just move backwards in the file with attendant
+ jumps when crossing language change boundaries. It was
+ decided that equating cursor movement with movement within
+ the file would be too confusing to the user. It is far
+ easier for _v_i._i_v to map from the current cursor position to
+ the right position in the file than for the user to map from
+ the right position in the file to the corresponding position
+ on the screen.
+
+ For occasions in which movemement withing the file is
+ desired, there are commands for moving forward and backwards
+ in the file. Specifically, the v command is to move the
+ cursor to the position of the next character in the file.
+ The command V moves the cursor to the position of the
+ previous character in the file. These commands are useful
+ for dispelling confusion about the order of contents of the
+ file. One simply moves the cursor to the beginning of the
+ line, according to the current view direction, types v, and
+ watches where the cursor goes.
+
+ In insert mode, the cursor is always at the screen position
+ that will receive the next character. Where this is relative
+ to the previously entered character depends on the current
+ language and the current view direction. After ESCAPEing
+ from the insert mode, the cursor will move to be at the
+ character after the last inserted character relative to the
+ current view direction.
+
+ Insert Mode
+
+ The current language affects what is going into the file
+ during insert mode. As mentioned, if the current language is
+ LR, then the input is interpreted as coming from the
+ standard Latin qwerty keyboard and the characters go into
+ the file with the eighth bit off. If the current language is
+ RL, then the input is interpreted as coming from the
+ standard RL keyboard and the characters go into the file
+ with the eighth bit on.
+
+ The current language setting is global over the insert mode
+ sessions. That is, if one exits and then re-enters insert
+
+
+
+Sun Release 4.1 Last change: February, 1990 9
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ mode without having issued one of the language changing
+ commands, then the current language after re-entry is the
+ same as before exit.
+
+ In insert mode, the current direction determines where the
+ cursor starts after each new line and in which direction it
+ moves. If the direction is LR, then the cursor starts at the
+ left end and moves to the right. If the current direction is
+ RL, then the cursor starts at the right end and moves to the
+ left.
+
+ In an LR view direction, the a command moves the cursor to
+ the right of the current position to designate the position
+ to receive the first inserted character. The i command moves
+ the cursor to the left of the current position to designate
+ the position to receive the first inserted character.
+ Thereafter, as mentioned, the cursor moves or stays to be at
+ the position to receive the next inserted character. Thus,
+ if the current language is LR, the cursor moves to the
+ right, and if the current language is RL, the cursor stays
+ in the same position; in either case the text to the right
+ of the cursor slides to the right. The rules for an RL view
+ may be obtained by opposing each of left and right and R and
+ L in the above.
+
+ Below are some examples of insertions. In each case, three
+ versions of the the state of the line being edited are shown
+ after typing each character of the insertion. The three
+ versions are the file contents, the LR view, and the RL
+ view. In each screen view, the position of the cursor is
+ marked with an underscore. For each step, the three versions
+ occupies three consecutive lines, with the file contents to
+ the far left, the LR view in the center, and the RL view to
+ the far right. Between the three lines for each step is the
+ next input character centered all by itself in the line.
+ This scheme of showing the successive states during the
+ input of an operation is followed for all the examples shown
+ in the remainder of this manual.
+
+ The initial state of the first example is:
+
+ -|He said "" to Dan.
+ |He said "_" to Dan. |
+ |He said ""_ to Dan. |
+
+ Now, suppose that the current language for input is RL, and
+ the input is:
+
+ aylem<ESC>
+
+ that is, to append ylem after the opening LR quote. The
+ states are:
+
+
+
+Sun Release 4.1 Last change: February, 1990 10
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ a
+ -|He said "" to Dan.
+ |He said ""_ to Dan. |
+ |He said "_" to Dan. |
+
+ y
+ -|He said "y" to Dan.
+ |He said "y_" to Dan. |
+ |He said "_y" to Dan. |
+
+ l
+ -|He said "yl" to Dan.
+ |He said "yl_" to Dan. |
+ |He said "_yl" to Dan. |
+
+ e
+ -|He said "yle" to Dan.
+ |He said "yle_" to Dan. |
+ |He said "_yle" to Dan. |
+
+ m
+ -|He said "ylem" to Dan.
+ |He said "ylem_" to Dan. |
+ |He said "_ylem" to Dan. |
+
+ <ESC>
+ -|He said "ylem" to Dan.
+ |He said "y_lem" to Dan. |
+ |He said "ylem_" to Dan. |
+
+ Note that when the view direction runs counter to the normal
+ direction of most of the text, the results are somewhat
+ surprising. The RL views of the English sentence above were
+ strange, especially after the Hebrew letters were
+ introduced.
+
+ The initial state of the second example is:
+
+ -|de` `nx "" l`exi
+ |de` `nx ""_ l`exi |
+ |de` `nx "_" l`exi |
+
+ The typed input is
+
+ aHello<ESC>
+
+ The subsequent states are:
+
+ a
+ -|de` `nx "" l`exi
+ |de` `nx "_" l`exi |
+ |de` `nx ""_ l`exi |
+
+
+
+Sun Release 4.1 Last change: February, 1990 11
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ H
+ -|de` `nx "H" l`exi
+ |de` `nx "_H" l`exi |
+ |de` `nx "H_" l`exi |
+
+ e
+ -|de` `nx "He" l`exi
+ |de` `nx "_He" l`exi |
+ |de` `nx "He_" l`exi |
+
+ l
+ -|de` `nx "Hel" l`exi
+ |de` `nx "_Hel" l`exi |
+ |de` `nx "Hel_" l`exi |
+
+ l
+ -|de` `nx "Hell" l`exi
+ |de` `nx "_Hell" l`exi |
+ |de` `nx "Hell_" l`exi
+
+ o
+ -|de` `nx "Hello" l`exi
+ |de` `nx "_Hello" l`exi |
+ |de` `nx "Hello_" l`exi |
+
+ <ESC>
+ -|de` `nx "Hello" l`exi
+ |de` `nx "Hello_" l`exi |
+ |de` `nx "H_ello" l`exi |
+
+
+ In the case of an overwriting session of insert mode, from
+ the issuance of an R command, the cursor moves in the
+ current language's direction and stays over the next
+ character to be changed.
+
+ Giving a ^x during insert mode is equivalent to ESCAPEing to
+ end the current insertion or overwriting, issuing ^x during
+ command mode, and entering an append insertion in the other
+ language at the point at which the cursor came to rest upon
+ the ESCAPE. Note that if you were in an overwriting insert
+ mode before the language change, you are no longer in an
+ overwriting insert mode after the change. The reason for
+ this is that with the direction change that happens with a
+ language change, you would be overwriting what you had just
+ entered as an overwrite.
+
+ Bi-lingual Characters
+
+ There are a number of characters that are in both languages.
+ These are the digits, the punctuation symbols, and the space
+ and tab characters. These characters exist in both the lower
+
+
+
+Sun Release 4.1 Last change: February, 1990 12
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ and upper halves of the full eight-bit character set. The
+ two codes for any such character have exactly the same lower
+ order seven bits, and thus differ by exactly 128. When they
+ are typed, they will go into the file with the eighth bit
+ setting consistent with the current language direction.
+
+ While the two codes for one of these characters are printed
+ the same way on the screen, they cause different behavior
+ under the rendering algorithm. As a result, the user that
+ cannot remember under which language one of these characters
+ is entered (It may not even have been entered by the same
+ user!) may be surprised by the screen appearance after
+ modifications and may not be able to predict the effects of
+ modifications. For example, exchanging the order of
+ inputting a space and changing langauge direction causes
+ different screen appearances. Suppose the view direction is
+ R-L. Suppose one has entered in time order an LR _t_r_o_f_f
+ command with an RL argument. The time-ordered file contents
+ are:
+
+ -|.su_zwvix
+
+ If the space between the u _a_n_d _t_h_e _z is in LR, then the
+ screen appearance of the line is:
+
+ |.su_zwvix |
+
+ If, however, the space is in RL, then the screen appearance
+ is:
+
+ |.su_zwvix |
+
+ As another example, again in an R-L view, the time-ordered
+ file contents
+
+ -|dgaxd Jones & Sons
+
+ appears as
+
+ |dgaxd Jones & Sons |
+
+ if the & _a_n_d _t_h_e _s_p_a_c_e_s _s_u_r_r_o_u_n_d_i_n_g _i_t _a_r_e _i_n _L_R, _b_u_t
+ _a_p_p_e_a_r_s _a_s
+
+ |_d_g_a_x_d _J_o_n_e_s & _S_o_n_s |
+
+ _i_f _t_h_e & and the spaces are in RL.
+
+ In order to help the user not to get lost in these
+ circumstances, it was decided to have an option under which
+ _v_i._i_v would highlight the characters of the language whose
+ direction opposes that of the current view. This
+
+
+
+Sun Release 4.1 Last change: February, 1990 13
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ highlighting can be requested either from the invoking
+ command line by adding the -MS _o_p_t_i_o_n _o_r _f_r_o_m _w_i_t_h_i_n _v_i._i_v
+ _b_y _u_t_t_e_r_i_n_g _o_n_e _o_f:
+
+ :_s_e_t _m_a_r_k_s_e_c_o_n_d_l_a_n_g
+ :_s_e_t _m_a_r_k_s_l
+
+ _T_h_i_s _h_i_g_h_l_i_g_h_t_i_n_g _i_s _d_o_n_e _b_y _w_h_a_t _e_v_e_r _m_e_t_h_o_d _o_f
+ _h_i_g_h_l_i_g_h_t_i_n_g _i_s _o_f_f_e_r_e_d _b_y _t_h_e _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _a_s _i_n_d_i_c_a_t_e_d
+ _b_y _t_h_e _c_u_r_r_e_n_t _t_e_r_m_c_a_p. _W_i_t_h _a_n _u_n_d_e_r_l_i_n_i_n_g _h_i_g_h_l_i_g_h_t_i_n_g
+ _t_h_e _f_o_u_r _R-_L _v_i_e_w _e_x_a_m_p_l_e_s _a_b_o_v_e _w_o_u_l_d _a_p_p_e_a_r, _r_e_s_p_e_c_t_i_v_e_l_y,
+ _a_s:
+
+ |.__s__u___z_w_v_i_x |
+
+ |.__s__u_ _z_w_v_i_x |
+
+ |_d_g_a_x_d _J__o__n__e__s__&___S__o__n__s_ |
+
+ |_d_g_a_x_d _J__o__n__e__s_ & _S__o__n__s_ |
+
+
+ This feature should help the user keep track of numerals.
+ If one wants a numeral to appear in the normal order, it
+ must be entered either in L-R order as LR characters or in
+ R-L order as RL characters. The presence or lack of
+ underlining should remind the user which way the numerals
+ were entered.
+
+ These bi-lingual characters cause a problem to users when
+ constructing search patterns. It is impossible, merely by
+ looking at a printed copy of text or by listening to someone
+ or one's mind pronounce some text, to know for sure under
+ which language one of these characters was entered into the
+ edited file. Therefore, it was decided to let any of these
+ characters match itself in either language. Because the
+ codes of the two languages' versions of one of these
+ characters differ only in the eighth bit, it was easy to
+ implement this modification to the search algorithm. Apart
+ from the eighth bit cleaning, this change was the only one
+ made to the editing command processor not directly for the
+ purpose of implementing a new feature.
+
+ Numerals
+
+ In some right-to-left languages, e.g., Hebrew, numerals are
+ written with the most significant digit on the left, i.e.,
+ from left to right. For these RL languages, entering
+ numerals is problematic. If in RL language insertion mode,
+ if the digits are entered in the order pronounced, i.e.,
+ most significant first, they will appear backwards on the
+ screen. One way to insure that the numerals appear in the
+
+
+
+Sun Release 4.1 Last change: February, 1990 14
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ normal order on the screen is to always switch language
+ direction, with ^x, just before and just after entering the
+ numeral, so that the numeral goes in as LR text. This way,
+ the time ordering of the digits is from most to least
+ significant. Another way, which is actually what Hebrew
+ typists do with Hebrew, right-to-left typewriters, is to
+ stay in the RL insertion mode and just enter the digits
+ backwards. This way, however, the time ordering of the
+ digits in the file is from least to most significant. Since
+ many Hebrew typewriters provide upper case Latin letters
+ with the shifted keys, the method of backwards entry is also
+ used by many Hebrew typist for entering short sequences of
+ upper case Latin letters (as opposed to changing typing
+ element and typing direction).
+
+ Entering numerals and upper case Latin letters occurs often
+ enoough in entering Hebrew text, that it was decided to
+ provided a special treatment for them as an option obtained
+ by saying one of
+
+ :set rlnumberuppercase
+ :set rlnu
+
+ Under this option, whenever in RL insertion mode, each time
+ that a digit or an upper case character _C is entered, is is
+ as though ^x _w_e_r_e _e_n_t_e_r_e_d _j_u_s_t _b_e_f_o_r_e _t_h_e _C _t_o _b_r_i_n_g _v_i._i_v
+ _i_n_t_o _R_L _i_n_s_e_r_t_i_o_n _m_o_d_e. _v_i._i_v _s_t_a_y_s _i_n _t_h_e _R_L _i_n_s_e_r_t_i_o_n _m_o_d_e
+ _u_n_t_i_l _t_h_e _f_i_r_s_t _s_u_b_s_e_q_u_e_n_t _s_p_a_c_e, _t_a_b, _o_r ^_x _i_s _e_n_t_e_r_e_d. _A_t
+ _t_h_a_t _p_o_i_n_t, _v_i._i_v _r_e_t_u_r_n_s _t_o _R_L _e_n_t_r_y _m_o_d_e _a_n_d _a_c_c_e_p_t_s _t_h_e
+ _s_p_a_c_e _o_r _t_a_b _a_s _h_a_v_i_n_g _b_e_e_n _e_n_t_e_r_e_d _a_s _a_n _R_L _l_a_n_g_u_a_g_e
+ _c_h_a_r_a_c_t_e_r.
+
+ Note that all characters entered under this automatically
+ entered LR insertio mode go into the file in time order, as
+ do _a_l_l characters, go into the file with the eighth bit off,
+ and are displayed on the screen from left to right. Note
+ also that one is not restricted to entering just digits or
+ upper case Latin letters; once the LR insertion mode is
+ entered, all characters in what would be considered one word
+ are going in as LR characters. Thus, one can enter, for
+ example, full arithmetic expressions, words of upper and
+ lower case Latin letters beginning with an upper case
+ letter, etc. It was simpler to implement the mode in this
+ manner than to restrict it to model the usage of a Hebrew
+ typewriter!
+
+ Command Mode
+
+ Commands are always given with an LR view and start off in
+ the LR language, regardless of what is the current situation
+ for the insert mode. This is because commands always begin
+ with Latin letters. The language switching commands can be
+
+
+
+Sun Release 4.1 Last change: February, 1990 15
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ issued during a command. The effect of such a change is
+ strictly local to the command or pattern/substitute.
+
+ The implication of always being in the LR language when
+ starting a command is that if one exits a session of insert
+ mode that was under the RL language and then desires to
+ issue a command, one does not have to issue a language
+ change to get _v_i._i_v to believe that the input is in the LR
+ language; In command mode, in which one must be after an
+ escape from input mode, _v_i._i_v automatically puts the
+ terminal in LR mode if it can. If the terminal must be
+ manually flipped to change language, _v_i._i_v does not ask for
+ the manual flip; it simply translates the incoming character
+ codes so that pressing the correct key for a latin letter is
+ interpreted as that letter regardless of the actual code
+ emitted by the key. (This is the only place where the fact
+ that the terminal is a Hebrew as opposed to an Arabic
+ terminal is critical; the translation is language
+ dependent.) In either case, the user has nothing to do to
+ get the command accepted in the LR language, and in the
+ latter case he or she does not have the bother of manually
+ flipping the terminal for only one character. After the
+ command is done, the current direction and language reverts
+ to what it was before entering the command, so that the
+ behavior with respect to the surrounding sessions of insert
+ mode is as if one had not even given a command. The above
+ is slightly different if the first character of the command
+ is in fact / _o_r ?. Then, in _v_i._i_v, one enters what is called
+ pattern/substitute mode.
+
+ Pattern/Substitute Mode
+
+ Pattern and substitutes are always given with an LR view,
+ since they are really special cases of commands, which are
+ always given with an LR view. However, the current language
+ of a pattern is the language corresponding the view
+ direction of the last session of input mode. That is, if
+ the view direction of the last session of input mode was RL,
+ then the pattern starts off in the RL language. This choice
+ is consistent with the observation that if the view
+ direction of the last input is say, RL, then most characters
+ that are input are going to be in the RL language and the
+ most likely pattern that one is going to search for is also
+ going to be in the RL language. In any case, the language of
+ a pattern can be changed at any time during input of the
+ pattern by issuing a ^x. After the pattern matching and
+ substitution is done, the current direction and language
+ reverts to what it was before entering the
+ pattern/substitute, so that, again, the behavior with
+ respect to the surrounding sessions of insert mode is as if
+ one had not even given a command.
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 16
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ Metacharacters and Escapes
+
+ In the pattern matching and substition subsystem, there are
+ a number of characters that have special meaning either
+ within patterns or within replacing text. For example, . in
+ a search pattern matches any single character, and & in a
+ replacement string causes interpolation of the string being
+ replaced. In order to obtain the non-special meanings of
+ these special characters, one may precede them with the _v_i
+ escape character, the backslash, \. Thus, \. in a search
+ pattern matches only ., and \& in a replacement string
+ causes interpolation of &. To get the backslash character
+ itself in a non-escaping use one simple doubles the
+ character, a` la \\). The problem with this simple escaping
+ scheme is that for some inexplicable reason, most Hebrew
+ terminals simply do not have the backslash key! Moreover, in
+ many of the switchable Latin-Hebrew terminals, when it is
+ Hebrew mode, the backslash key does not work. Thus, in
+ Hebrew mode, another character must be used. _v_i has assigned
+ a meaning to every non-alphanumeric character. Therefore,
+ there is no really convenient single character suited for
+ this function, which might not be used heavily for other
+ reasons, it was decided to make the so-called RL escape
+ character settable with any of the following commands:
+
+ :set backslashRL=_c
+ :set bslRL=_c
+
+ For example, to get ^ to be the RL escape character, one can
+ say
+
+ :set backslashRL=^
+
+ The default RL backslash character is !.
+
+ _D_e_t_a_i_l_s _o_f _S_o_m_e _C_o_m_m_a_n_d_s
+
+ _P_a_t_t_e_r_n _M_a_t_c_h_i_n_g
+
+ A pattern, entered in time order, is matched against the
+ contents of the file, stored in time order. This behavior,
+ while simple to explain, easy to implement, and easy to
+ apply, can produce surprising results. Suppose a line of
+ the file (shown left to right) is:
+
+ -|`ababcdefghicde<NEWL>
+
+ Were it on the screen, its LR and RL view appearances would
+ be:
+
+ |`ababcdefghicde |
+ |`ababcdefghicde |
+
+
+
+Sun Release 4.1 Last change: February, 1990 17
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ The pattern
+
+ /`ababc/
+
+ matches the first six characters of the line. However, those
+ six consecutive characters are not adjacent on the screen.
+ In any case the cursor ends up position at the first
+ character `. _F_o_r _t_h_e _a_i_d _o_f _t_h_e _r_e_a_d_e_r _o_f _t_h_i_s _m_a_n_u_a_l, _t_h_e
+ _m_a_t_c_h_e_d _c_h_a_r_a_c_t_e_r_s _a_r_e _m_a_r_k_e_d _w_i_t_h _a _h_y_p_h_e_n_s _u_n_d_e_r_n_e_a_t_h, _b_u_t
+ _t_h_e_s_e _h_y_p_h_e_n_s _d_o _n_o_t _a_p_p_e_a_r _o_n _t_h_e _s_c_r_e_e_n.
+
+ |`__a_b_a_b_c_d_e_f_g_h_i_c_d_e |
+8 ------
+9 |`__a_b_a_b_c_d_e_f_g_h_i_c_d_e |
+8 --- ---
+
+9
+ _S_u_b_s_t_i_t_u_t_i_o_n
+
+ The real impact of this behavior shows up when one does a
+ substitution. The substitution follows the _v_i rules working
+ on the pattern, the substititution, and the file contents
+ _a_l_l _i_n _t_i_m_e _o_r_d_e_r. Under the same view direction and file
+ contents as above,
+
+ :s/`ababc/fghjkl/
+
+ causes the following changes:
+
+ -|fghjkldefghicde<NEWL>
+ |fghjkldefghicde |
+ |fghjkldefghicde |
+
+ The underlined characters got changed. On the other hand,
+
+ :s/`ababc/jklfgh/
+
+ causes the changes:
+
+ -|jklfghdefghicde<NEWL>
+ |jklfghdefghicde |
+ |jklfghdefghicde |
+
+
+ While the pattern matching and substitution according to the
+ time-ordered characters in the file may be easy to describe
+ and, in fact, easy to implement, it may seem counter-
+ intuitive especially when the matched and changed portions
+ are not adjacent to each other on the screen. However, to
+ pattern match and thus substitute according to what appears
+ on the screen is fraught with a number of problems.
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 18
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ 1. Most of the time that one searches for a pattern it is
+ to find something that is _n_o_t currently visible on the
+ screen. In that case, searching according to appearance
+ is inappropriate and searching according to time-
+ ordered characters is really the only way that works.
+ Suppose that in a previous editing session the line,
+
+ de` `nx "Hello there Uri and Dan. How are you today?" l`exi ecpi`l
+
+ were entered into the file. Under a RL view direction,
+ assuming a screen width sufficiently large, it happens
+ appear as
+
+ |de` `nx "Hello there Uri and Dan. How are you today?" l`exi ecpi`l |
+
+ on the screen, with today? _a_d_j_a_c_e_n_t _t_o `_n_x ". Now
+ suppose that in this current session, it is desired to
+ bring this sentence into the window. Is not the user
+ more likely to remember that he or she typed something
+ beginning with
+
+ de` `nx "Hello
+
+ and thus the pattern should be typed
+
+ /de` `nx "Hello/
+
+ than that after it was typed it looked like
+
+ |de` `nx "Hello there Uri and Dan. How are you today?" l`exi ecpi`l |
+
+ and thus the pattern should be something like
+
+ /de` `nx "today?/ ?
+
+
+ 2. Searching by appearance contradicts the time-order
+ orientation of the entire rest of _v_i._i_v. Adopting
+ searching by appearance would just make the command
+ language of _v_i._i_v not self-consistent and thus more
+ complicated.
+
+ 3. The search algorithm would have to construct the screen
+ appearance of each line in the file before it could
+ search in the line. This, of course, slows the search
+ down considerably and moreover requires significant
+ changes to the basic functional part of _v_i. Every
+ change to the functional part of _v_i increases the
+ danger that downward compatibility from _v_i._i_v to _v_i
+ will be lost.
+
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 19
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ Thus searching according to time order is adopted. Indeed,
+ in all of the commands, some of the effects of adherence to
+ time order seem a bit surprising. However, in each case, a
+ similar argument for adopting pure time-order semantics can
+ be given.
+
+ Deletion and Change Commands
+
+ The apparent behavior of deletion is affected also. Suppose
+ the three versions of line of the file are
+
+ -|`ab cde abc def ghi fgh<NEWL>
+ |`ab c_de abc def ghi fgh |
+ |`ab c_de abc def ghi fgh |
+
+ and the cursor is positioned under the c. Now, suppose that
+ the command d2w is given with the intention of deleting two
+ words. Then the result is:
+
+ -|`ab def ghi fgh<NEWL>
+ |`ab def ghi fgh |
+ |`ab def ghi fgh |
+
+ Back up now to the situation before the deletion. Suppose
+ that the command
+
+ c2wijkl jklm<ESC>
+
+ is given. Then the portion that was deleted above is
+ actually changed. What is interesting is that this change is
+ happening in real time and progresses through the file in
+ time order. Below in four-line groups, are shown the file
+ state and screen appearance after each successive character
+ is typed replacing the two words by ijkl jklm.
+
+ c2w
+ -|`ab cde abc def ghi fgh<NEWL>
+ |`ab c_de ab$ def ghi fgh |
+ |`ab c_de ab$ def ghi fgh |
+
+ i
+ -|`ab ide abc def ghi fgh<NEWL>
+ |`ab id_e ab$ def ghi fgh |
+ |`ab id_e ab$ def ghi fgh |
+
+ j
+ -|`ab ije abc def ghi fgh<NEWL>
+ |`ab ije_ ab$ def ghi fgh |
+ |`ab ije_ ab$ def ghi fgh |
+
+ k
+ -|`ab ijk abc def ghi fgh<NEWL>
+
+
+
+Sun Release 4.1 Last change: February, 1990 20
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ |`ab ijk_ab$ def ghi fgh |
+ |`ab ijk_ab$ def ghi fgh |
+
+ l
+ -|`ab ijklabc def ghi fgh<NEWL>
+ |`ab ijkla_b$ def ghi fgh |
+ |`ab ijkla_b$ def ghi fgh |
+
+ []
+ -|`ab ijkl bc def ghi fgh<NEWL>
+ |`ab ijkl b_$ def ghi fgh |
+ |`ab ijkl b_$ def ghi fgh |
+
+ j
+ -|`ab ijkl jc def ghi fgh<NEWL>
+ |`ab ijkl j$_ def ghi fgh |
+ |`ab ijkl j$_ def ghi fgh |
+
+ k
+ -|`ab ijkl jk def ghi fgh<NEWL>
+ |`ab ijkl jk_def ghi fgh |
+ |`ab ijkl jk_def ghi fgh |
+
+ l
+ -|`ab ijkl jkl def ghi fgh<NEWL>
+ |`ab ijkl jkl_def ghi fgh |
+ |`ab ijkl jkl_def ghi fgh |
+
+ m
+ -|`ab ijkl jklm def ghi fgh<NEWL>
+ |`ab ijkl jklm_def ghi fgh |
+ |`ab ijkl jklm_def ghi fgh |
+
+ <ESC>
+ -|`ab ijkl jklm def ghi fgh<NEWL>
+ |`ab ijkl jklm_ def ghi fgh |
+ |`ab ijkl jklm_ def ghi fgh |
+
+
+ Space limitations prevent a more complete set of examples.
+ However, armed with the concepts of view direction, current
+ language, and time order, and the rules about cursor
+ position and the various modes, the reader should be able to
+ deduce the expected behavior of any _v_i._i_v command.
+
+OPTIONS & COMMANDS
+ Set Commands
+
+ The following is a complete list of the :set commands
+ available in _v_i._i_v that are not available in _v_i. Note that
+ for every command
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 21
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ :set _X
+
+ _o_f _t_y_p_e _t_o_g_g_l_e, _X _b_e_i_n_g _e_i_t_h_e_r _t_h_e _f_u_l_l _s_p_e_l_l_i_n_g _o_r _a_n
+ _a_b_b_r_e_v_i_a_t_i_o_n _n_o_t _b_e_g_i_n_n_i_n_g _w_i_t_h _n_o, _t_h_e_r_e _i_s _a _c_o_m_m_a_n_d
+
+ :_s_e_t _n_o_X
+
+ _t_o _s_e_t _t_h_e _t_o_g_g_l_e _t_h_e _o_t_h_e_r _w_a_y.
+
+ _O_p_t_i_o_n _A_b_b_r_e_v. _T_y_p_e _D_e_f_a_u_l_t_M_e_a_n_i_n_g
+ _________________________________________________________________
+9 _r_i_g_h_t_l_e_f_t _r_l _t_o_g_g_l_e _n_o_r_l_c_h_a_n_g_e_s _t_h_e _v_i_e_w _o_f
+ _t_h_e _e_d_i_t_i_n_g _s_e_s_s_i_o_n _t_o
+ _R_L; _b_e_s_i_d_e_s _r_i_g_h_t
+ _j_u_s_t_i_f_y_i_n_g _a_l_l _l_i_n_e_s _a_n_d
+ _c_h_a_n_g_i_n_g _t_h_e _d_i_r_e_c_t_i_o_n _o_f
+ _c_u_r_s_o_r _m_o_v_e_m_e_n_t, _i_t _i_s
+ _a_r_r_a_n_g_e_d _t_h_a_t _t_h_e _n_e_x_t
+ _i_n_s_e_r_t _m_o_d_e _w_i_l_l _b_e _R_L;
+ _i_f _t_h_e _t_e_r_m_i_n_a_l _a_s
+ _d_e_s_c_r_i_b_e_d _b_y _t_h_e _t_e_r_m_c_a_p
+ _d_o_e_s _n_o_t _h_a_v_e _h_a_r_d_w_a_r_e
+ _s_u_p_p_o_r_t _f_o_r _R_L _v_i_e_w_s,
+ _p_r_o_c_e_s_s_i_n_g _i_s _s_l_o_w_e_d _d_o_w_n
+ _a_s _r_i_g_h_t-_t_o-_l_e_f_t
+ _o_p_e_r_a_t_i_o_n _i_s _s_i_m_u_l_a_t_e_d _b_y
+ _b_r_u_t_e _f_o_r_c_e _s_c_r_e_e_n
+ _r_e_d_r_a_w_i_n_g
+
+ _l_e_f_t_r_i_g_h_t _l_r _t_o_g_g_l_e _l_r_r_l _m_e_a_n_s _n_o_l_r, _a_n_d _l_r
+ _m_e_a_n_s _n_o_r_l
+
+ _s_h_e_f_o_r_m_a_t _s_f _t_o_g_g_l_e _s_f_u_s_e_d _t_o _i_n_d_i_c_a_t_e _t_h_e
+ _f_o_r_m_a_t _o_f _t_h_e _f_i_l_e _b_e_i_n_g
+ _e_d_i_t_e_d; _t_h_e _c_h_a_r_a_c_t_e_r_s _o_f
+ _a_n _s_f _f_i_l_e _a_r_e _s_t_o_r_e_d _i_n
+ _t_i_m_e _o_r_d_e_r; _t_h_e
+ _c_h_a_r_a_c_t_e_r_s _o_f _a _n_o_s_f _f_i_l_e
+ _a_r_e _s_t_o_r_e_d _i_n _v_i_s_u_a_l
+ _o_r_d_e_r; _n_o_s_f _f_i_l_e_s _a_r_e
+ _g_e_n_e_r_a_l_l_y _t_h_o_s_e _t_h_a_t _w_e_r_e
+ _c_r_e_a_t_e_d _o_r_i_g_i_n_a_l_l_y _w_i_t_h
+ _v_i_h(_1)
+
+ _c_h_a_n_g_e_l_a_n_g _s_t_r_i_n_g ^_x_u_s_e_d _t_o _s_e_t _t_h_e
+ _c_h_a_r_a_c_t_e_r _t_h_a_t _i_n_d_i_c_a_t_e_s
+ _a _c_h_a_n_g_e _i_n _t_h_e _l_a_n_g_u_a_g_e
+ _a_n_d _d_i_r_e_c_t_i_o_n _o_f _i_n_s_e_r_t
+ _m_o_d_e_s
+
+ _b_a_c_k_s_l_a_s_h_R_L _b_s_R_L _s_t_r_i_n_g !_u_s_e_d _t_o _s_e_t _t_h_e
+ _c_h_a_r_a_c_t_e_r _t_h_a_t _s_e_r_v_e_s _a_s
+
+
+
+Sun Release 4.1 Last change: February, 1990 22
+
+
+9
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ _t_h_e _e_s_c_a_p_e _m_e_t_a_c_h_a_r_a_c_t_e_r
+ _i_n _p_a_t_t_e_r_n_s _a_n_d
+ _s_u_b_s_t_i_t_u_t_i_o_n_s
+
+ _r_l_n_u_m_b_e_r_u_p_p_e_r_c_a_s_e _r_l_n_u _t_o_g_g_l_e _n_o_r_l_n_u_i_n_d_i_c_a_t_e_s _t_h_a_t
+ _d_u_r_i_n_g _R_L _i_n_s_e_r_t _m_o_d_e,
+ _e_n_t_r_y _o_f _a _d_i_g_i_t _o_r _u_p_p_e_r
+ _c_a_s_e _L_a_t_i_n _l_e_t_t_e_r _a_n_d _a_l_l
+ _c_h_a_r_a_c_t_e_r_s _u_p _t_o _b_u_t _n_o_t
+ _i_n_c_l_u_d_i_n_g _t_h_e _n_e_x_t _b_l_a_n_k
+ _o_r _t_a_b _i_s _d_o_n_e _i_n _L_R
+ _i_n_s_e_r_t _m_o_d_e; _t_h_i_s
+ _a_u_t_o_m_a_t_i_c _L_R _i_n_s_e_r_t _m_o_d_e
+ _i_s _a_l_s_o _e_x_i_t_e_d _b_y _e_n_t_r_y
+ _o_f _w_h_e_t_e_v_e_r _i_s _t_h_e
+ _l_a_n_g_u_a_g_e _c_h_a_n_g_e
+ _c_h_a_r_a_c_t_e_r, _e._g., ^_x
+
+ _m_a_r_k_s_e_c_o_n_d_l_a_n_g _m_a_r_k_s_l _t_o_g_g_l_e _n_o_m_a_r_k_s_l_i_n_d_i_c_a_t_e_s _t_h_a_t
+ _a_l_l _t_e_x_t _i_n _t_h_e _c_u_r_r_e_n_t
+ _s_e_c_o_n_d_a_r_y _l_a_n_g_u_a_g_e _s_h_o_u_l_d
+ _b_e _m_a_r_k_e_d _b_y _w_h_a_t_e_v_e_r
+ _h_i_g_h_l_i_g_h_t_i_n_g _i_s _a_v_a_i_l_a_b_l_e
+ _a_c_c_o_r_d_i_n_g _t_o _t_h_e _t_e_r_m_c_a_p;
+ _t_h_e _s_e_c_o_n_d_a_r_y _l_a_n_g_u_a_g_e _i_s
+ _t_h_a_t _w_h_o_s_e _d_i_r_e_c_t_i_o_n _i_s
+ _o_p_p_o_s_i_t_e _t_h_a_t _o_f _t_h_e
+ _c_u_r_r_e_n_t _v_i_e_w
+
+ _T_h_e_s_e :_s_e_t _c_o_m_m_a_n_d_s _c_a_n _b_e _g_i_v_e_n _a_l_s_o _i_n _t_h_e ._e_x_r_c (_o_r
+ ._e_x_r_c_i_v) _f_i_l_e _o_r _i_n _t_h_e _v_a_l_u_e _o_f _t_h_e _E_X_I_N_I_T (_o_r _E_X_I_N_I_T_I_V)
+ _s_h_e_l_l _v_a_r_i_a_b_l_e, _b_u_t _w_i_t_h_o_u_t _t_h_e _p_r_e_c_e_d_i_n_g _c_o_l_o_n, _t_o _c_a_u_s_e
+ _t_h_e_i_r _b_e_i_n_g _e_x_e_c_u_t_e_d _a_s _v_i._i_v _i_s _s_t_a_r_t_i_n_g _u_p.
+
+ _O_t_h_e_r _C_o_m_m_a_n_d_s
+
+ ^x _t_o_g_g_l_e_s _t_h_e _i_n_s_e_r_t_i_o_n _m_o_d_e _b_e_t_w_e_e_n _L_R & _R_L. _Y_o_u _c_a_n
+ _s_p_e_c_i_f_y _a_n_o_t_h_e_r _c_h_a_r_a_c_t_e_r _t_o _d_o _t_h_i_s _v_i_a _t_h_e :_s_e_t _c_h_a_n_g_e_l_a_n_g
+ command.
+
+ v goes to the next character based on the order stored in
+ the file (as opposed to the order it is displayed on the
+ screen). V goes to the previous character.
+
+ Command Line Options
+
+ The _v_i._i_v command line options alluded to in the synopsis
+ are as follows.
+
+
+
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 23
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ OptionMeaning
+ _________________________________________________________________
+9 -S _t_e_l_l_s _v_i._i_v _t_o _t_r_e_a_t _t_h_e _e_d_i_t_e_d _f_i_l_e _a_s _b_e_i_n_g _s_t_o_r_e_d _i_n
+ _v_i_s_u_a_l _o_r_d_e_r _i_n_s_t_e_a_d _o_f _t_i_m_e _o_r_d_e_r, _e._g., _a_s _h_a_v_i_n_g
+ _b_e_e_n _c_r_e_a_t_e_d _b_y _v_i_h(_1); _n_o_t_e _t_h_a_t _o_n_c_e _a _f_i_l_e _i_s _i_n _a_n_y
+ _p_a_r_t_i_c_u_l_a_r _o_r_d_e_r, _v_i._i_v _c_a_n_n_o_t _b_e _u_s_e_d _t_o _p_u_t _i_t _i_n _t_h_e
+ _o_t_h_e_r _o_r_d_e_r
+
+ -_M_S _t_e_l_l_s _v_i._i_v _t_o _d_o :_s_e_t _m_a_r_k_s_l _a_s _i_t _s_t_a_r_t_s _u_p
+
+ -_L_R _t_e_l_l_s _v_i._i_v _t_o _d_o :_s_e_t _l_r _a_s _i_t _s_t_a_r_t_s _u_p
+
+ -_R_L _t_e_l_l_s _v_i._i_v _t_o _d_o :_s_e_t _r_l _a_s _i_t _s_t_a_r_t_s _u_p
+
+ _C_l_e_a_r_l_y, -_L_R _a_n_d -_R_L _a_r_e _m_u_t_u_a_l_l_y _e_x_c_l_u_s_i_v_e, _a_n_d _t_h_e _l_a_s_t _o_f
+ _t_h_e_s_e _t_h_a_t _a_p_p_e_a_r_s _i_n _t_h_e _c_o_m_m_a_n_d _l_i_n_e _i_s _t_h_e _o_n_e _w_h_o_s_e
+ _e_f_f_e_c_t _i_s _f_i_n_a_l_l_y _f_e_l_t _a_s _t_h_e _e_d_i_t_i_n_g _s_e_s_s_i_o_n _b_e_g_i_n_s.
+
+THE TECHNION COMPUTER SCIENCE FACULTY INSTALLATION
+ This section deals with information specific to the
+ installation of _v_i._i_v at the Computer Science Faculty of the
+ Technion.
+
+ Environment
+
+ Currently, this installation of _v_i._i_v uses its own private
+ _t_e_r_m_c_a_p(5) file (see the FILES section below). Thus, it
+ does not matter what the TERMCAP environment variable is set
+ to, or even if it is set at all. This might change in future
+ versions.
+
+ _V_i._i_v uses the TERMIV environment variable to determine
+ which entry to use; current possible values (as of 24/04/90)
+ are:
+
+ _v_t_1_0_0_i_v DEC vt100-compatible terminal
+ _v_i_1_0_0_i_v Visual terminal
+ _s_u_n_i_v Sun terminal (via _v_t_h_t_o_o_l(l) or _h_v_t_1_0_0(l))
+
+ You should check the _t_e_r_m_c_a_p(5) file that _v_i._i_v uses for the
+ most up-to-date list of terminal types (see the FILES
+ section for which _t_e_r_m_c_a_p(5) file is used).
+
+ If TERMIV is not set, _v_i._i_v will attempt to set it based on
+ the current value of TERM. However, this will not work on a
+ Sun screen, as explained below. This automatic setting of
+ TERMIV might change or be deleted in future versions.
+
+ Running vi.iv on a Sun Terminal
+
+
+9
+
+
+Sun Release 4.1 Last change: February, 1990 24
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ First, you start up a windowing system (e.g., _S_u_n_V_i_e_w or _X).
+ Then, you must run a terminal emulator that can display both
+ Hebrew (or whichever right-to-light language that you want)
+ & English. Under _S_u_n_V_i_e_w, you can run _v_t_h_t_o_o_l(l); under _X,
+ you can run _h_v_t_1_0_0(l). See the manuals for these commands
+ for more information.
+
+ When you run _v_i._i_v via _v_t_h_t_o_o_l(l), the mouse-driven arrow
+ keys will work, but the keyboard arrow keys will not. You
+ can, however, make the keyboard arrow keys work with the
+ following map commands:
+
+ map <ESC>[A k
+ map <ESC>[B j
+ map <ESC>[D h
+ map <ESC>[C l
+
+ You enter the escape character (<ESC>) by typing ^V, then
+ <ESC>. It will be echoed as ^[.
+
+ Startup Commands
+
+ _V_i._i_v uses the file ._e_x_r_c and the environment variable
+ EXINIT in the same way & the same precedence as _v_i(1),
+ except:
+
+ (1) If there is a file named ._e_x_r_c_i_v, it will take
+ precedence over ._e_x_r_c.
+
+ (2) If there is an environment variable named
+ EXINITIV, it will take precedence over EXINIT.
+ This scheme allows one to have separate startup commands for
+ _s_h_e_f(5) files if desired, or to use the same startup
+ commands for both pure _a_s_c_i_i(5) and _s_h_e_f(5) files.
+
+ Printing This Manual
+
+ To print this manual, first copy the file
+ /_u_s_r/_m_a_n/_m_a_n_l/_v_i._i_v._l to your directory, then type the
+ command
+
+ ditroff -FOF -P_p_r_i_n_t_e_r vi.iv.l
+
+ However, please do so sparingly. This is a long manual
+ (more than 17 pages!). Also, please remember to delete your
+ local copy of the manual when done in order to save disk
+ space.
+
+TERMCAP FIELDS
+ In addition to the standard _t_e_r_m_c_a_p(5) fields used by _v_i(1),
+ _v_i._i_v uses new termcap fields for its Hebrew capabilities.
+ These are listed below. They all represent strings that are
+
+
+
+Sun Release 4.1 Last change: February, 1990 25
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ sent to the terminal to control actions.
+ Field Description
+8 _____ ___________________________________________________
+ _e_g Change to left-to-right cursor motion
+ _h_e Change to right-to-left cursor motion
+ _h_n Hebrew character set on
+ _h_f Hebrew character set off (i.e., English characters)
+
+ Note that some of these field names are used by _v_i_h(l) for
+ different functions, so that you cannot use the same termcap
+ entry for both editors.
+
+FILES
+ /usr/local/lib/vi.iv/termcap private terminal capabilities database
+
+SEE ALSO
+ _e_x(1), _v_i(1), _e_d_i_t(1), Vi Quick Reference card, An
+ Introduction to Display Editing with Vi by William Joy.
+
+ _v_i._i_v, a Bi-directional Version of the _v_i Full-Screen
+ Editor, by Uri Habusha and Daniel M. Berry.
+
+ _e_s_c_i_i(7), _s_h_e_f(5), _s_h_e_f_f(l), _v_t_h_t_o_o_l(l), _h_v_t_1_0_0(l),
+ _t_e_r_m_c_a_p(5).
+
+AUTHOR
+ William Joy wrote _v_i
+ Mark Horton added macros to _v_i's _v_i_s_u_a_l _m_o_d_e.
+ _U_r_i _H_a_b_u_s_h_a _m_a_d_e _v_i bi-directional to become _v_i._i_v.
+ Yael Dubinsky & Haim Roman installed _v_i._i_v on the Computer
+ Science Department's Sun-4.
+
+BUGS
+ The following are bugs of _v_i._i_v:
+
+ The 'c' & 's' commands reverse the order of secondary
+ language strings (e.g., if you are viewing in RL mode, it
+ reverses the LR strings). Worse, you might not see this
+ effect until you type ^L. It is suggested that first you
+ delete, then insert (or append).
+
+ When you replace a line by the cc command, _v_i._i_v inserts
+ another line from somewhere else in the file after the
+ cursor. This extra text remains even after you type ^L.
+ _T_h_e _w_a_y _a_r_o_u_n_d _t_h_i_s _i_s _t_o _g_o _t_o _t_h_e _f_i_r_s_t _c_h_a_r_a_c_t_e_r _i_n _t_h_e
+ _l_i_n_e _a_n_d _d_o _c$.
+
+ When you enter an RL string to search for, _v_i._i_v acts as if
+ _r_l_n_u is set, whether or not it really is.
+
+ When you type :quit when you haven't saved your edits, _v_i._i_v
+ re-displays the screen contents. When in LR view, this is
+ OK. But when in RL view, it displays the contents in LR
+
+
+
+Sun Release 4.1 Last change: February, 1990 26
+
+
+9
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ view, without erasing the current display, resulting in a
+ mess. However, ^L _t_a_k_e_s _c_a_r_e _o_f _t_h_i_s.
+
+ When doing the I _v_i_s_u_a_l-_m_o_d_e _c_o_m_m_a_n_d, _m_a_k_e _s_u_r_e _t_h_a_t _t_h_e
+ _i_n_s_e_r_t _m_o_d_e _i_s _t_h_e _s_a_m_e _a_s _t_h_e _v_i_e_w. _I_f _n_o_t, _t_h_e _i_n_s_e_r_t _m_a_y
+ _s_t_a_r_t _a_t _t_h_e _s_e_c_o_n_d column of the line.
+
+ Tabs at the beginning of the line are not always properly
+ handled during insert, especially if you delete them or type
+ ^D. However, typing <ESC> or ^L will restore the correct
+ display.
+
+ You cannot use the same termcap entry for both _v_i_h(l) and
+ _v_i._i_v.
+
+ When you switch to line-mode (Q command), the : prompt does
+ not appear.
+
+ The text in the command line at the bottom of the screen
+ sometimes rolls up into the main text area of the screen.
+ ^L removes it.
+
+ The delete to beginning of line command in insert mode (^U)
+ only deletes as far as where the text changes language (if
+ it does in the current line).
+
+
+ The following bugs are all inherited from _v_i and are kept
+ because they have become features already:
+
+ Software tabs using ^T work only immediately after the
+ _a_u_t_o_i_n_d_e_n_t.
+
+ Left and right shifts on intelligent terminals don't make
+ use of insert and delete character operations in the
+ terminal.
+
+ The _w_r_a_p_m_a_r_g_i_n option can be fooled since it looks at output
+ columns when blanks are typed. If a long word passes
+ through the margin and onto the next line without a break,
+ then the line won't be broken.
+
+ Insert/delete within a line can be slow if tabs are present
+ on intelligent terminals, since the terminals need help in
+ doing this correctly.
+
+ Saving text on deletes in the named buffers is somewhat
+ inefficient.
+
+ The _s_o_u_r_c_e command does not work when executed as :source;
+ there is no way to use the :append, :change, and :insert
+ commands, since it is not possible to give more than one
+
+
+
+Sun Release 4.1 Last change: February, 1990 27
+
+
+
+
+
+
+VI.IV(L) LOCAL COMMANDS VI.IV(L)
+
+
+
+ line of input to a : escape. To use these on a :global you
+ must Q to _e_x _c_o_m_m_a_n_d _m_o_d_e, _e_x_e_c_u_t_e _t_h_e_m, _a_n_d _t_h_e_n _r_e_e_n_t_e_r
+ _t_h_e _s_c_r_e_e_n _e_d_i_t_o_r _w_i_t_h _v_i or _o_p_e_n.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sun Release 4.1 Last change: February, 1990 28
+
+
diff --git a/language/hebrew/hebtex/editors/unix/vim/readme.vim b/language/hebrew/hebtex/editors/unix/vim/readme.vim
new file mode 100644
index 0000000000..2a133bf58a
--- /dev/null
+++ b/language/hebrew/hebtex/editors/unix/vim/readme.vim
@@ -0,0 +1,17 @@
+VIM
+
+For unix users there exists vim - VI IMproved, by Bram Moolenaar,
+mool@oce.nl, which has Hebrew patches
+
+It is activated by vim filename -H
+in an X-windows window with Hebrew fonts, and then it works
+quite nicely. ctrl_ (control and underscore) is used as a toggle
+between Hebrew and English.
+
+The following is from Bram Moolenaar:
+
+Have a look at ftp://ftp.oce.nl/pub/misc/vim
+There is version 3.0 and the latest beta test version 3.23. The beta
+includes a few patches for Hebrew.
+You might also want to have a look at the Vim pages
+URL: http://www.math.fu-berlin.de/~guckes/vim