[PATCH] Move the display table code to use char tables, not vectors

Aidan Kehoe kehoea at parhasard.net
Sat Jul 21 09:43:33 EDT 2007




lisp/ChangeLog addition:

2007-07-21  Aidan Kehoe  <kehoea at parhasard.net>

	* mule/cyril-util.el:
	* mule/cyril-util.el (cyrillic-encode-koi8-r-char): Removed.
	* mule/cyril-util.el (cyrillic-encode-alternativnyj-char):
	Removed.  No-one uses these functions in google.com/codesearch,
	GNU have a comment doubting their utility, and their
	implementation is trivial. 
	* mule/cyril-util.el (cyrillic-language-alist):
	Reformatted.
	* mule/cyril-util.el (standard-display-table)): Removed. It wasn't
	used anyway. 
	* mule/cyril-util.el (standard-display-cyrillic-translit):
	Rewrite it to work with character tables as display tables, and
	not to abort with an error.

2007-07-21  Aidan Kehoe  <kehoea at parhasard.net>

	* disp-table.el:
	* disp-table.el (make-display-table): Moved earlier in the file in
	a weak attempt at making syncing with GNU easier. 
	* disp-table.el (frob-display-table):
	Autoload it, accept TAG-SET, for editing specifiers.
	* disp-table.el (describe-display-table):
	Have it handle character sets. 	
	* disp-table.el (standard-display-8bit-1):
	* disp-table.el (standard-display-8bit):
	* disp-table.el (standard-display-default-1):
	* disp-table.el (standard-display-ascii):
	* disp-table.el (standard-display-g1):
	* disp-table.el (standard-display-graphic):
	* disp-table.el (standard-display-underline):
	* disp-table.el (standard-display-european):
	Rework them all to use put-char-table, remove-char-table instead
	of aset. Limit standard-display-g1, standard-display-graphic to
	TTYs; have standard-display-underline work on X11 too. 
	
	* font.el (font-caps-display-table):
	Use put-char-table instead of aset when editing a display table.
	* x-init.el:
	* x-init.el (tab):
	Create the initial display table as a char-table, not a vector. 


XEmacs Trunk source patch:
Diff command:   cvs -q diff -Nu
Files affected: lisp/mule/cyril-util.el
===================================================================
RCS lisp/x-init.el
===================================================================
RCS lisp/font.el
===================================================================
RCS lisp/disp-table.el
===================================================================
RCS

Index: lisp/disp-table.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/disp-table.el,v
retrieving revision 1.2
diff -u -u -r1.2 disp-table.el
--- lisp/disp-table.el	1997/12/06 22:26:09	1.2
+++ lisp/disp-table.el	2007/07/21 13:21:11
@@ -28,56 +28,45 @@
 
 ;;; Commentary:
 
-;; #### Need lots of work.  make-display-table depends on a value
-;; that is a define in the C code.  Maybe we should just move the
-;; function into C.
-
-;; #### display-tables-as-vectors is really evil and a big pain in
-;; the ass.
-
 ;; Rewritten for XEmacs July 1995, Ben Wing.
 
 
 ;;; Code:
 
+;;;###autoload
+(defun make-display-table ()
+  "Return a new, empty display table."
+  (make-char-table 'generic))
+
 (defun describe-display-table (dt)
   "Describe the display table DT in a help buffer."
   (with-displaying-help-buffer
    (lambda ()
-     (princ "\nCharacter display glyph sequences:\n")
-     (save-excursion
-       (let ((vector (make-vector 256 nil))
-             (i 0))
-         (while (< i 256)
-           (aset vector i (aref dt i))
-           (incf i))
-	 ;; FSF calls `describe-vector' here, but it is so incredibly
-	 ;; lame a function for that name that I cannot bring myself
-	 ;; to porting it.  Here is what `describe-vector' does:
-	 (terpri)
-	 (let ((old (aref vector 0))
-	       (oldpos 0)
-	       (i 1)
-	       str)
-	   (while (<= i 256)
-	     (when (or (= i 256)
-		       (not (equal old (aref vector i))))
-	       (if (eq oldpos (1- i))
-		   (princ (format "%s\t\t%s\n"
-				  (single-key-description (int-char oldpos))
-				  old))
-		 (setq str (format "%s - %s"
-				   (single-key-description (int-char oldpos))
-				   (single-key-description (int-char (1- i)))))
-		 (princ str)
-		 (princ (make-string (max (- 2 (/ (length str)
-						  tab-width)) 1) ?\t))
-		 (princ old)
-		 (terpri))
-	       (or (= i 256)
-		   (setq old (aref vector i)
-			 oldpos i)))
-	     (incf i))))))))
+     (princ "\nFor various glyphs that GNU Emacs uses the display table for,
+see the XEmacs specifiers `truncation-glyph' , `continuation-glyph',
+`control-arrow-glyph', `octal-escape-glyph' and the others described in the
+docstring of `make-glyph'. \n\n")
+     (map-char-table
+      (lambda (range value)
+        (cond
+         ((eq range t)
+          (princ "\nAll characters: \n")
+          (princ (format "  %S" value)))
+         ((eq 'charset (and (symbolp range) (type-of (find-charset range))))
+          (princ (format "\n\nCharset %S: \n" (charset-name range)))
+          (princ (format "  %S" value)))
+         ((vectorp range)
+          (princ (format "\n\nCharset %S, row %d \n"
+                         (charset-name (aref value 0))
+                         (aref value 1)))
+          (princ (format "  %S\n\n" value)))
+         ((characterp range)
+          (princ (format "\nCharacter U+%04X, %S: "
+                         range (if (fboundp 'split-char)
+                                   (split-char range)
+                                 (list 'ascii (char-to-int range)))))
+          (princ (format "  %S" value))))
+        nil) dt))))
 
 ;;;###autoload
 (defun describe-current-display-table (&optional domain)
@@ -89,21 +78,17 @@
 	(describe-display-table disptab)
       (message "No display table"))))
 
-;;;###autoload
-(defun make-display-table ()
-  "Return a new, empty display table."
-  (make-vector 256 nil))
-
 ;; #### we need a generic frob-specifier function.
 ;; #### this also needs to be redone like frob-face-property.
 
 ;; Let me say one more time how much dynamic scoping sucks.
 
-(defun frob-display-table (fdt-function fdt-locale)
+;;;###autoload
+(defun frob-display-table (fdt-function fdt-locale &optional tag-set)
   (or fdt-locale (setq fdt-locale 'global))
-  (or (specifier-spec-list current-display-table fdt-locale)
+  (or (specifier-spec-list current-display-table fdt-locale tag-set)
       (add-spec-to-specifier current-display-table (make-display-table)
-			     fdt-locale))
+			     fdt-locale tag-set))
   (add-spec-list-to-specifier
    current-display-table
    (list (cons fdt-locale
@@ -112,16 +97,18 @@
                   (funcall fdt-function (cdr fdt-x))
                   fdt-x)
 		(cdar (specifier-spec-list current-display-table
-					   fdt-locale)))))))
+					   fdt-locale tag-set)))))))
 
 (defun standard-display-8bit-1 (dt l h)
   (while (<= l h)
-    (aset dt l (char-to-string l))
+    (remove-char-table (int-to-char l) dt)
     (setq l (1+ l))))
 
 ;;;###autoload
 (defun standard-display-8bit (l h &optional locale)
-  "Display characters in the range L to H literally."
+  "Display characters in the range L to H literally.
+
+Of course, `literally' has no meaning here.  "
   (frob-display-table
    (lambda (x)
      (standard-display-8bit-1 x l h))
@@ -129,7 +116,7 @@
 
 (defun standard-display-default-1 (dt l h)
   (while (<= l h)
-    (aset dt l nil)
+    (put-char-table (int-to-char l) (format "\\%o" l) dt)
     (setq l (1+ l))))
 
 ;;;###autoload
@@ -145,12 +132,9 @@
   "Display character C using printable string S."
   (frob-display-table
    (lambda (x)
-     (aset x c s))
+     (put-char-table c s x))
    locale))
 
-
-;;; #### should frob in a 'tty locale.
-
 ;;;###autoload
 (defun standard-display-g1 (c sc &optional locale)
   "Display character C as character SC in the g1 character set.
@@ -158,11 +142,8 @@
 it is meaningless for an X frame."
   (frob-display-table
    (lambda (x)
-     (aset x c (concat "\016" (char-to-string sc) "\017")))
-   locale))
-
-
-;;; #### should frob in a 'tty locale.
+     (put-char-table c (concat "\016" (char-to-string sc) "\017") x))
+   locale '(tty)))
 
 ;;;###autoload
 (defun standard-display-graphic (c gc &optional locale)
@@ -171,37 +152,36 @@
 X frame."
   (frob-display-table
    (lambda (x)
-     (aset x c (concat "\e(0" (char-to-string gc) "\e(B")))
-   locale))
-
-;;; #### should frob in a 'tty locale.
-;;; #### the FSF equivalent of this makes this character be displayed
-;;; in the 'underline face.  There's no current way to do this with
-;;; XEmacs display tables.
+     (put-char-table c (concat "\e(0" (char-to-string gc) "\e(B") x))
+   locale '(tty)))
 
 ;;;###autoload
 (defun standard-display-underline (c uc &optional locale)
   "Display character C as character UC plus underlining."
   (frob-display-table
    (lambda (x)
-     (aset x c (concat "\e[4m" (char-to-string uc) "\e[m")))
+     (let (glyph)
+       (setq glyph (make-glyph (vector 'string :data (char-to-string uc))))
+       (set-glyph-face glyph 'underline)
+       (put-char-table c glyph x)))
    locale))
 
 ;;;###autoload
 (defun standard-display-european (arg &optional locale)
   "Toggle display of European characters encoded with ISO 8859.
-When enabled, characters in the range of 160 to 255 display not
-as octal escapes, but as accented characters.
-With prefix argument, enable European character display iff arg is positive."
+When enabled (the default), characters in the range of 160 to 255 display
+not as octal escapes, but as accented characters.  With prefix argument,
+enable European character display iff arg is positive."
   (interactive "P")
-  (frob-display-table
-   (lambda (x)
-     (if (or (<= (prefix-numeric-value arg) 0)
-             (and (null arg)
-                  (equal (aref x 160) (char-to-string 160))))
-         (standard-display-default-1 x 160 255)
-       (standard-display-8bit-1 x 160 255)))
-   locale))
+  (if (<= (prefix-numeric-value arg) 0)
+      (frob-display-table
+       (lambda (x)
+         (standard-display-default-1 x 160 255))
+       locale)
+    (frob-display-table
+     (lambda (x)
+       (standard-display-8bit-1 x 160 255))
+       locale)))
 
 (provide 'disp-table)
 
Index: lisp/font.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/font.el,v
retrieving revision 1.20
diff -u -u -r1.20 font.el
--- lisp/font.el	2006/04/25 14:01:53	1.20
+++ lisp/font.el	2007/07/21 13:21:20
@@ -250,17 +250,17 @@
 	(i 0))
     ;; Standard ASCII characters
     (while (< i 26)
-      (aset table (+ i ?a) (+ i ?A))
+      (put-char-table (+ i ?a) (+ i ?A) table)
       (setq i (1+ i)))
     ;; Now ISO translations
     ;; #### FIXME what's this for??
     (setq i 224)
     (while (< i 247)			;; Agrave - Ouml
-      (aset table i (- i 32))
+      (put-char-table i (- i 32) table)
       (setq i (1+ i)))
     (setq i 248)
     (while (< i 255)			;; Oslash - Thorn
-      (aset table i (- i 32))
+      (put-char-table i (- i 32) table)
       (setq i (1+ i)))
     table))
 
Index: lisp/x-init.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/x-init.el,v
retrieving revision 1.19
diff -u -u -r1.19 x-init.el
--- lisp/x-init.el	2007/07/16 12:26:03	1.19
+++ lisp/x-init.el	2007/07/21 13:21:55
@@ -336,11 +336,11 @@
 ;; due to a universally crocked font width specification.  Display it
 ;; as a space since that's what seems to be expected.
 ;;
-;; (make-vector 256 nil) instead of (make-display-table) because
+;; (make-char-table 'generic) instead of (make-display-table) because
 ;; make-display-table doesn't exist when this file is loaded.
 
-(let ((tab (make-vector 256 nil)))
-  (aset tab 160 " ")
+(let ((tab (make-char-table 'generic)))
+  (put-char-table 160 " " tab)
   (set-specifier current-display-table tab 'global 'x))
 
 ;;; x-init.el ends here
Index: lisp/mule/cyril-util.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/cyril-util.el,v
retrieving revision 1.6
diff -u -u -r1.6 cyril-util.el
--- lisp/mule/cyril-util.el	2003/02/06 06:35:52	1.6
+++ lisp/mule/cyril-util.el	2007/07/21 13:21:56
@@ -28,28 +28,16 @@
 
 ;;; Code:
 
-;;;###autoload
-(defun cyrillic-encode-koi8-r-char (char)
-  "Return KOI8-R external character code of CHAR if appropriate."
-  (get-char-table char cyrillic-koi8-r-to-external-code-table))
-
-;;;###autoload
-(defun cyrillic-encode-alternativnyj-char (char)
-  "Return ALTERNATIVNYJ external character code of CHAR if appropriate."
-  (get-char-table char cyrillic-alternativnyj-to-external-code-table))
-
 
 ;; Display 
 
 ;; Written by Valery Alexeev <valery at math.uga.edu>.
 
 (defvar cyrillic-language-alist
-      (list '("Belorussian") '("Bulgarian") '("Macedonian") 
-	    '("Russian") '("Serbian") '("Ukrainian"))
-      "*List of known cyrillic languages")
+      '(("Belorussian") ("Bulgarian") ("Macedonian") 
+        ("Russian") ("Serbian") ("Ukrainian"))
+      "*List of known Cyrillic languages")
 
-(defvar standard-display-table)
-
 ;;;###autoload
 (defun standard-display-cyrillic-translit (&optional cyrillic-language)
   "Display a cyrillic buffer using a transliteration.
@@ -67,129 +55,123 @@
       (completing-read
        "Cyrillic language (default nil): "
        cyrillic-language-alist nil t nil nil nil))))
-
-  (or standard-display-table
-      (setq standard-display-table (make-display-table)))
-
+   
   (if (equal cyrillic-language "")
       (setq cyrillic-language nil))
 
-  (if (null cyrillic-language)
-      (setq standard-display-table (make-display-table))
-    (aset standard-display-table ?,LP(B  [?a])
-    (aset standard-display-table ?,LQ(B  [?b])
-    (aset standard-display-table ?,LR(B  [?v])
-    (aset standard-display-table ?,LS(B  [?g])
-    (aset standard-display-table ?,LT(B  [?d])
-    (aset standard-display-table ?,LU(B  [?e])
-    (aset standard-display-table ?,Lq(B  [?y?o])
-    (aset standard-display-table ?,LV(B  [?z?h])
-    (aset standard-display-table ?,LW(B  [?z])
-    (aset standard-display-table ?,LX(B  [?i])
-    (aset standard-display-table ?,LY(B  [?j])
-    (aset standard-display-table ?,LZ(B  [?k])
-    (aset standard-display-table ?,L[(B  [?l])
-    (aset standard-display-table ?,L\(B  [?m])
-    (aset standard-display-table ?,L](B  [?n])
-    (aset standard-display-table ?,L^(B  [?o])
-    (aset standard-display-table ?,L_(B  [?p])
-    (aset standard-display-table ?,L`(B  [?r])
-    (aset standard-display-table ?,La(B  [?s])
-    (aset standard-display-table ?,Lb(B  [?t])
-    (aset standard-display-table ?,Lc(B  [?u])
-    (aset standard-display-table ?,Ld(B  [?f])
-    (aset standard-display-table ?,Le(B  [?k?h])
-    (aset standard-display-table ?,Lf(B  [?t?s])
-    (aset standard-display-table ?,Lg(B  [?c?h])
-    (aset standard-display-table ?,Lh(B  [?s?h])
-    (aset standard-display-table ?,Li(B  [?s?c?h])
-    (aset standard-display-table ?,Lj(B  [?~])
-    (aset standard-display-table ?,Lk(B  [?y])
-    (aset standard-display-table ?,Ll(B  [?'])
-    (aset standard-display-table ?,Lm(B  [?e?'])
-    (aset standard-display-table ?,Ln(B  [?y?u])
-    (aset standard-display-table ?,Lo(B  [?y?a])
+  (frob-display-table
+   (lambda (display-table)
+     (if (null cyrillic-language)
+         (remove-char-table 'cyrillic-iso8859-5 display-table)
+         (put-char-table ?,LP(B "a"   display-table)
+         (put-char-table ?,LQ(B "b"   display-table)
+         (put-char-table ?,LR(B "v"   display-table)
+         (put-char-table ?,LS(B "g"   display-table)
+         (put-char-table ?,LT(B "d"   display-table)
+         (put-char-table ?,LU(B "e"   display-table)
+         (put-char-table ?,Lq(B "yo"  display-table)
+         (put-char-table ?,LV(B "zh"  display-table)
+         (put-char-table ?,LW(B "z"   display-table)
+         (put-char-table ?,LX(B "i"   display-table)
+         (put-char-table ?,LY(B "j"   display-table)
+         (put-char-table ?,LZ(B "k"   display-table)
+         (put-char-table ?,L[(B "l"   display-table)
+         (put-char-table ?,L\(B "m"   display-table)
+         (put-char-table ?,L](B "n"   display-table)
+         (put-char-table ?,L^(B "o"   display-table)
+         (put-char-table ?,L_(B "p"   display-table)
+         (put-char-table ?,L`(B "r"   display-table)
+         (put-char-table ?,La(B "s"   display-table)
+         (put-char-table ?,Lb(B "t"   display-table)
+         (put-char-table ?,Lc(B "u"   display-table)
+         (put-char-table ?,Ld(B "f"   display-table)
+         (put-char-table ?,Le(B "kh"  display-table)
+         (put-char-table ?,Lf(B "ts"  display-table)
+         (put-char-table ?,Lg(B "ch"  display-table)
+         (put-char-table ?,Lh(B "sh"  display-table)
+         (put-char-table ?,Li(B "sch" display-table)
+         (put-char-table ?,Lj(B "~"   display-table)
+         (put-char-table ?,Lk(B "y"   display-table)
+         (put-char-table ?,Ll(B "'"   display-table)
+         (put-char-table ?,Lm(B "e'"  display-table)
+         (put-char-table ?,Ln(B "yu"  display-table)
+         (put-char-table ?,Lo(B "ya"  display-table)
+         (put-char-table ?,L0(B "A"   display-table)
+         (put-char-table ?,L1(B "B"   display-table)
+         (put-char-table ?,L2(B "V"   display-table)
+         (put-char-table ?,L3(B "G"   display-table)
+         (put-char-table ?,L4(B "D"   display-table)
+         (put-char-table ?,L5(B "E"   display-table)
+         (put-char-table ?,L!(B "Yo"  display-table)
+         (put-char-table ?,L6(B "Zh"  display-table)
+         (put-char-table ?,L7(B "Z"   display-table)
+         (put-char-table ?,L8(B "I"   display-table)
+         (put-char-table ?,L9(B "J"   display-table)
+         (put-char-table ?,L:(B "K"   display-table)
+         (put-char-table ?,L;(B "L"   display-table)
+         (put-char-table ?,L<(B "M"   display-table)
+         (put-char-table ?,L=(B "N"   display-table)
+         (put-char-table ?,L>(B "O"   display-table)
+         (put-char-table ?,L?(B "P"   display-table)
+         (put-char-table ?,L@(B "R"   display-table)
+         (put-char-table ?,LA(B "S"   display-table)
+         (put-char-table ?,LB(B "T"   display-table)
+         (put-char-table ?,LC(B "U"   display-table)
+         (put-char-table ?,LD(B "F"   display-table)
+         (put-char-table ?,LE(B "Kh"  display-table)
+         (put-char-table ?,LF(B "Ts"  display-table)
+         (put-char-table ?,LG(B "Ch"  display-table)
+         (put-char-table ?,LH(B "Sh"  display-table)
+         (put-char-table ?,LI(B "Sch" display-table)
+         (put-char-table ?,LJ(B "~"   display-table)
+         (put-char-table ?,LK(B "Y"   display-table)
+         (put-char-table ?,LL(B "'"   display-table)
+         (put-char-table ?,LM(B "E'"  display-table)
+         (put-char-table ?,LN(B "Yu"  display-table)
+         (put-char-table ?,LO(B "Ya"  display-table)
+         (put-char-table ?,Lt(B "ie"  display-table)
+         (put-char-table ?,Lw(B "i"   display-table)
+         (put-char-table ?,L~(B "u"   display-table)
+         (put-char-table ?,Lr(B "dj"  display-table)
+         (put-char-table ?,L{(B "chj" display-table)
+         (put-char-table ?,Ls(B "gj"  display-table)
+         (put-char-table ?,Lu(B "s"   display-table)
+         (put-char-table ?,L|(B "k"   display-table)
+         (put-char-table ?,Lv(B "i"   display-table)
+         (put-char-table ?,Lx(B "j"   display-table)
+         (put-char-table ?,Ly(B "lj"  display-table)
+         (put-char-table ?,Lz(B "nj"  display-table)
+         (put-char-table ?,L(B "dz"  display-table)
+         (put-char-table ?,L$(B "Ye"  display-table)
+         (put-char-table ?,L'(B "Yi"  display-table)
+         (put-char-table ?,L.(B "U"   display-table)
+         (put-char-table ?,L"(B "Dj"  display-table)
+         (put-char-table ?,L+(B "Chj" display-table)
+         (put-char-table ?,L#(B "Gj"  display-table)
+         (put-char-table ?,L%(B "S"   display-table)
+         (put-char-table ?,L,(B "K"   display-table)
+         (put-char-table ?,L&(B "I"   display-table)
+         (put-char-table ?,L((B "J"   display-table)
+         (put-char-table ?,L)(B "Lj"  display-table)
+         (put-char-table ?,L*(B "Nj"  display-table)
+         (put-char-table ?,L/(B "Dj"  display-table)
     
-    (aset standard-display-table ?,L0(B  [?A])
-    (aset standard-display-table ?,L1(B  [?B])
-    (aset standard-display-table ?,L2(B  [?V])
-    (aset standard-display-table ?,L3(B  [?G])
-    (aset standard-display-table ?,L4(B  [?D])
-    (aset standard-display-table ?,L5(B  [?E])
-    (aset standard-display-table ?,L!(B  [?Y?o])
-    (aset standard-display-table ?,L6(B  [?Z?h])
-    (aset standard-display-table ?,L7(B  [?Z])
-    (aset standard-display-table ?,L8(B  [?I])
-    (aset standard-display-table ?,L9(B  [?J])
-    (aset standard-display-table ?,L:(B  [?K])
-    (aset standard-display-table ?,L;(B  [?L])
-    (aset standard-display-table ?,L<(B  [?M])
-    (aset standard-display-table ?,L=(B  [?N])
-    (aset standard-display-table ?,L>(B  [?O])
-    (aset standard-display-table ?,L?(B  [?P])
-    (aset standard-display-table ?,L@(B  [?R])
-    (aset standard-display-table ?,LA(B  [?S])
-    (aset standard-display-table ?,LB(B  [?T])
-    (aset standard-display-table ?,LC(B  [?U])
-    (aset standard-display-table ?,LD(B  [?F])
-    (aset standard-display-table ?,LE(B  [?K?h])
-    (aset standard-display-table ?,LF(B  [?T?s])
-    (aset standard-display-table ?,LG(B  [?C?h])
-    (aset standard-display-table ?,LH(B  [?S?h])
-    (aset standard-display-table ?,LI(B  [?S?c?h])
-    (aset standard-display-table ?,LJ(B  [?~])
-    (aset standard-display-table ?,LK(B  [?Y])
-    (aset standard-display-table ?,LL(B  [?'])
-    (aset standard-display-table ?,LM(B  [?E?'])
-    (aset standard-display-table ?,LN(B  [?Y?u])
-    (aset standard-display-table ?,LO(B  [?Y?a])
-    
-    (aset standard-display-table ?,Lt(B  [?i?e])
-    (aset standard-display-table ?,Lw(B  [?i])
-    (aset standard-display-table ?,L~(B  [?u])
-    (aset standard-display-table ?,Lr(B  [?d?j])
-    (aset standard-display-table ?,L{(B  [?c?h?j])
-    (aset standard-display-table ?,Ls(B  [?g?j])
-    (aset standard-display-table ?,Lu(B  [?s])
-    (aset standard-display-table ?,L|(B  [?k])
-    (aset standard-display-table ?,Lv(B  [?i])
-    (aset standard-display-table ?,Lx(B  [?j])
-    (aset standard-display-table ?,Ly(B  [?l?j])
-    (aset standard-display-table ?,Lz(B  [?n?j])
-    (aset standard-display-table ?,L(B  [?d?z])
-    
-    (aset standard-display-table ?,L$(B  [?Y?e])
-    (aset standard-display-table ?,L'(B  [?Y?i])
-    (aset standard-display-table ?,L.(B  [?U])
-    (aset standard-display-table ?,L"(B  [?D?j])
-    (aset standard-display-table ?,L+(B  [?C?h?j])
-    (aset standard-display-table ?,L#(B  [?G?j])
-    (aset standard-display-table ?,L%(B  [?S])
-    (aset standard-display-table ?,L,(B  [?K])
-    (aset standard-display-table ?,L&(B  [?I])
-    (aset standard-display-table ?,L((B  [?J])
-    (aset standard-display-table ?,L)(B  [?L?j])
-    (aset standard-display-table ?,L*(B  [?N?j])
-    (aset standard-display-table ?,L/(B  [?D?j])
-    
-    (when (equal cyrillic-language "Bulgarian")
-      (aset standard-display-table ?,Li(B [?s?h?t])
-      (aset standard-display-table ?,LI(B [?S?h?t])
-      (aset standard-display-table ?,Ln(B [?i?u])
-      (aset standard-display-table ?,LN(B [?I?u])
-      (aset standard-display-table ?,Lo(B [?i?a])
-      (aset standard-display-table ?,LO(B [?I?a]))
-    
-    (when (equal cyrillic-language "Ukrainian") ; based on the official 
-					; transliteration table
-      (aset standard-display-table ?,LX(B [?y])
-      (aset standard-display-table ?,L8(B [?Y])
-      (aset standard-display-table ?,LY(B [?i])
-      (aset standard-display-table ?,L9(B [?Y])
-    (aset standard-display-table ?,Ln(B [?i?u])
-    (aset standard-display-table ?,Lo(B [?i?a]))))
-
-
+         (when (equal cyrillic-language "Bulgarian")
+           (put-char-table ?,Li(B "sht"  display-table)
+           (put-char-table ?,LI(B "Sht"  display-table)
+           (put-char-table ?,Ln(B "iu"   display-table)
+           (put-char-table ?,LN(B "Iu"   display-table)
+           (put-char-table ?,Lo(B "ia"   display-table)
+           (put-char-table ?,LO(B "Ia"   display-table))
+
+         (when (equal cyrillic-language "Ukrainian") ; based on the official 
+                                        ; transliteration table
+           (put-char-table ?,LX(B "y"    display-table)
+           (put-char-table ?,L8(B "Y"    display-table)
+           (put-char-table ?,LY(B "i"    display-table)
+           (put-char-table ?,L9(B "Y"    display-table)
+           (put-char-table ?,Ln(B "iu"   display-table)
+           (put-char-table ?,Lo(B "ia"   display-table)))) nil))
 ;;
 (provide 'cyril-util)
 

-- 
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)



More information about the XEmacs-Patches mailing list