This change has the advantage that we can do helpful stuff with Unicode
error octets, like displaying them as, say, the corresponding Latin 1 or
koi8-r character (depending on language environment) in red. More generally,
without this patch, display tables couldn’t handle anything non-Latin-1,
which made them of limited usefulness.
5 files changed, 291 insertions(+), 228 deletions(-)
lisp/ChangeLog | 43 +++++++
lisp/disp-table.el | 203 +++++++++++++++++++++---------------
lisp/font.el | 6 -
lisp/mule/cyril-util.el | 259 ++++++++++++++++++++++-------------------------
lisp/x-init.el | 8 -
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1198524128 -3600
# Node ID e214ff9f9507794f61ad09d81e5f9272447c87d2
# Parent cc293ef846d240af187a523bb32eb5e26a083531
Use char-tables, not vectors, to instantiate the display table specifiers.
2007-07-21 Aidan Kehoe <kehoea(a)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(a)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.
diff -r cc293ef846d2 -r e214ff9f9507 lisp/ChangeLog
--- a/lisp/ChangeLog Mon Dec 24 14:00:51 2007 +0100
+++ b/lisp/ChangeLog Mon Dec 24 20:22:08 2007 +0100
@@ -1,3 +1,46 @@ 2007-12-22 Stephen J. Turnbull <stephe
+2007-07-21 Aidan Kehoe <kehoea(a)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(a)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.
+
2007-12-22 Stephen J. Turnbull <stephen(a)xemacs.org>
Factor out lists of operators specially treated by `make-autoload'.
diff -r cc293ef846d2 -r e214ff9f9507 lisp/disp-table.el
--- a/lisp/disp-table.el Mon Dec 24 14:00:51 2007 +0100
+++ b/lisp/disp-table.el Mon Dec 24 20:22:08 2007 +0100
@@ -1,6 +1,6 @@
;;; disp-table.el --- functions for dealing with char tables.
-;; Copyright (C) 1987, 1994, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1994, 1997, 2007 Free Software Foundation, Inc.
;; Copyright (C) 1995 Sun Microsystems.
;; Author: Howard Gayle
@@ -28,56 +28,82 @@
;;; 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.
+
+This returns a generic character table; previously it returned a vector, but
+that was not helpful when dealing with internationalized characters above
+#xFF. See `make-char-table' for details of character tables in general. To
+write code that works with both vectors and character tables, add something
+like the following to the beginning of your file, and use
+`put-display-table' to set what a given character is displayed as, and
+`get-display-table' to examine what that character is currently displayed
+as:
+
+\(defun-when-void put-display-table (range value display-table)
+ \"Set the value for char RANGE to VALUE in DISPLAY-TABLE. \"
+ (ecase (type-of display-table)
+ (vector
+ (aset display-table range value))
+ (char-table
+ (put-char-table range value display-table))))
+
+\(defun-when-void get-display-table (character display-table)
+ \"Find value for CHARACTER in DISPLAY-TABLE. \"
+ (ecase (type-of display-table)
+ (vector
+ (aref display-table character))
+ (char-table
+ (get-char-table character display-table))))
+
+In this implementation, `put-display-table' and `get-display-table' are
+aliases of `put-char-table' and `get-char-table' respectively, and are
+always available. "
+ (make-char-table 'generic))
+
+;;;###autoload
+(defalias 'put-display-table #'put-char-table)
+
+;;;###autoload
+(defalias 'get-display-table #'get-char-table)
+
(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))))))))
+ (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)
+ (princ
+ "\n\nFor some of the various other 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"))))
+
;;;###autoload
(defun describe-current-display-table (&optional domain)
@@ -89,21 +115,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,29 +134,44 @@
(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 [sic].
+
+GNU Emacs includes this function. There, `literally' has no good meaning.
+Under XEmacs, this function makes characters with numeric values in the
+range L to H display as themselves; that is, as ASCII, latin-iso8859-1,
+latin-iso8859-2 or whatever. See `standard-display-default' for the inverse
+function. "
(frob-display-table
(lambda (x)
(standard-display-8bit-1 x l h))
locale))
(defun standard-display-default-1 (dt l h)
+ "Misnamed function under XEmacs. See `standard-display-default'."
(while (<= l h)
- (aset dt l nil)
+ (put-char-table (int-to-char l) (format "\\%o" l) dt)
(setq l (1+ l))))
;;;###autoload
(defun standard-display-default (l h &optional locale)
- "Display characters in the range L to H using the default notation."
+ "Display characters in the range L to H using octal escape notation.
+
+In the XEmacs context this function is misnamed. Under GNU Emacs,
+characters in the range #xA0 to #xFF display as octal escapes unless
+`standard-display-european' has been called; this function neutralizes the
+effects of `standard-display-european'. Under XEmacs, those characters
+normally do not display as octal escapes (this ignores hackery like
+specifying the X11 font character set on non-Mule builds) and this function
+sets them to display as octal escapes. "
(frob-display-table
(lambda (x)
(standard-display-default-1 x l h))
@@ -145,11 +182,8 @@
"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)
@@ -158,11 +192,8 @@ it is meaningless for an X frame."
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 +202,41 @@ X frame."
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."
+ "Toggle display of European characters encoded with ISO 8859-1.
+When enabled (the default), characters in the range of 160 to 255 display
+as accented characters. With negative prefix argument, display characters in
+that range as octal escapes.
+
+If you want to work in a Western European language under XEmacs, it
+shouldn't be necessary to call this function--things should just work. But
+it's in a sufficient number of init files that we're not in a hurry to
+remove it. "
(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)
diff -r cc293ef846d2 -r e214ff9f9507 lisp/font.el
--- a/lisp/font.el Mon Dec 24 14:00:51 2007 +0100
+++ b/lisp/font.el Mon Dec 24 20:22:08 2007 +0100
@@ -254,17 +254,17 @@ for use in the 'weight' field of an X fo
(i 0))
;; Standard ASCII characters
(while (< i 26)
- (aset table (+ i ?a) (+ i ?A))
+ (put-display-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-display-table i (- i 32) table)
(setq i (1+ i)))
(setq i 248)
(while (< i 255) ;; Oslash - Thorn
- (aset table i (- i 32))
+ (put-display-table i (- i 32) table)
(setq i (1+ i)))
table))
diff -r cc293ef846d2 -r e214ff9f9507 lisp/mule/cyril-util.el
--- a/lisp/mule/cyril-util.el Mon Dec 24 14:00:51 2007 +0100
+++ b/lisp/mule/cyril-util.el Mon Dec 24 20:22:08 2007 +0100
@@ -26,17 +26,11 @@
;;; Commentary:
+;;; #### Remove this, use the one in packages instead, but with the below
+;;; standard-display-cyrillic-translit. This file is unfortunately shadowed
+;;; if you have the Mule packages installed!
+
;;; 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
@@ -44,11 +38,9 @@
;; Written by Valery Alexeev <valery(a)math.uga.edu>.
(defvar cyrillic-language-alist
- (list '("Belorussian") '("Bulgarian")
'("Macedonian")
- '("Russian") '("Serbian") '("Ukrainian"))
- "*List of known cyrillic languages")
-
-(defvar standard-display-table)
+ '(("Belorussian") ("Bulgarian") ("Macedonian")
("Russian") ("Serbian")
+ ("Ukrainian"))
+ "*List of known Cyrillic languages")
;;;###autoload
(defun standard-display-cyrillic-translit (&optional cyrillic-language)
@@ -67,129 +59,122 @@ If the argument is nil, we return the di
(completing-read
"Cyrillic language (default nil): "
cyrillic-language-alist nil t nil nil nil))))
+ (when (equal cyrillic-language "")
+ (setq cyrillic-language nil))
+ (frob-display-table
+ (lambda (display-table)
+ (if (null cyrillic-language)
+ (if (char-table-p display-table)
+ (remove-char-table 'cyrillic-iso8859-5 display-table))
+ (put-display-table ?а "a" display-table)
+ (put-display-table ?б "b" display-table)
+ (put-display-table ?в "v" display-table)
+ (put-display-table ?г "g" display-table)
+ (put-display-table ?д "d" display-table)
+ (put-display-table ?е "e" display-table)
+ (put-display-table ?ё "yo" display-table)
+ (put-display-table ?ж "zh" display-table)
+ (put-display-table ?з "z" display-table)
+ (put-display-table ?и "i" display-table)
+ (put-display-table ?й "j" display-table)
+ (put-display-table ?к "k" display-table)
+ (put-display-table ?л "l" display-table)
+ (put-display-table ?м "m" display-table)
+ (put-display-table ?н "n" display-table)
+ (put-display-table ?о "o" display-table)
+ (put-display-table ?п "p" display-table)
+ (put-display-table ?р "r" display-table)
+ (put-display-table ?с "s" display-table)
+ (put-display-table ?т "t" display-table)
+ (put-display-table ?у "u" display-table)
+ (put-display-table ?ф "f" display-table)
+ (put-display-table ?х "kh" display-table)
+ (put-display-table ?ц "ts" display-table)
+ (put-display-table ?ч "ch" display-table)
+ (put-display-table ?ш "sh" display-table)
+ (put-display-table ?щ "sch" display-table)
+ (put-display-table ?ъ "~" display-table)
+ (put-display-table ?ы "y" display-table)
+ (put-display-table ?ь "'" display-table)
+ (put-display-table ?э "e'" display-table)
+ (put-display-table ?ю "yu" display-table)
+ (put-display-table ?я "ya" display-table)
+ (put-display-table ?А "A" display-table)
+ (put-display-table ?Б "B" display-table)
+ (put-display-table ?В "V" display-table)
+ (put-display-table ?Г "G" display-table)
+ (put-display-table ?Д "D" display-table)
+ (put-display-table ?Е "E" display-table)
+ (put-display-table ?Ё "Yo" display-table)
+ (put-display-table ?Ж "Zh" display-table)
+ (put-display-table ?З "Z" display-table)
+ (put-display-table ?И "I" display-table)
+ (put-display-table ?Й "J" display-table)
+ (put-display-table ?К "K" display-table)
+ (put-display-table ?Л "L" display-table)
+ (put-display-table ?М "M" display-table)
+ (put-display-table ?Н "N" display-table)
+ (put-display-table ?О "O" display-table)
+ (put-display-table ?П "P" display-table)
+ (put-display-table ?Р "R" display-table)
+ (put-display-table ?С "S" display-table)
+ (put-display-table ?Т "T" display-table)
+ (put-display-table ?У "U" display-table)
+ (put-display-table ?Ф "F" display-table)
+ (put-display-table ?Х "Kh" display-table)
+ (put-display-table ?Ц "Ts" display-table)
+ (put-display-table ?Ч "Ch" display-table)
+ (put-display-table ?Ш "Sh" display-table)
+ (put-display-table ?Щ "Sch" display-table)
+ (put-display-table ?Ъ "~" display-table)
+ (put-display-table ?Ы "Y" display-table)
+ (put-display-table ?Ь "'" display-table)
+ (put-display-table ?Э "E'" display-table)
+ (put-display-table ?Ю "Yu" display-table)
+ (put-display-table ?Я "Ya" display-table)
+ (put-display-table ?є "ie" display-table)
+ (put-display-table ?ї "i" display-table)
+ (put-display-table ?ў "u" display-table)
+ (put-display-table ?ђ "dj" display-table)
+ (put-display-table ?ћ "chj" display-table)
+ (put-display-table ?ѓ "gj" display-table)
+ (put-display-table ?ѕ "s" display-table)
+ (put-display-table ?ќ "k" display-table)
+ (put-display-table ?і "i" display-table)
+ (put-display-table ?ј "j" display-table)
+ (put-display-table ?љ "lj" display-table)
+ (put-display-table ?њ "nj" display-table)
+ (put-display-table ?џ "dz" display-table)
+ (put-display-table ?Є "Ye" display-table)
+ (put-display-table ?Ї "Yi" display-table)
+ (put-display-table ?Ў "U" display-table)
+ (put-display-table ?Ђ "Dj" display-table)
+ (put-display-table ?Ћ "Chj" display-table)
+ (put-display-table ?Ѓ "Gj" display-table)
+ (put-display-table ?Ѕ "S" display-table)
+ (put-display-table ?Ќ "K" display-table)
+ (put-display-table ?І "I" display-table)
+ (put-display-table ?Ј "J" display-table)
+ (put-display-table ?Љ "Lj" display-table)
+ (put-display-table ?Њ "Nj" display-table)
+ (put-display-table ?Џ "Dj" display-table)
+
+ (when (equal cyrillic-language "Bulgarian")
+ (put-display-table ?щ "sht" display-table)
+ (put-display-table ?Щ "Sht" display-table)
+ (put-display-table ?ю "iu" display-table)
+ (put-display-table ?Ю "Iu" display-table)
+ (put-display-table ?я "ia" display-table)
+ (put-display-table ?Я "Ia" display-table))
- (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 ?а [?a])
- (aset standard-display-table ?б [?b])
- (aset standard-display-table ?в [?v])
- (aset standard-display-table ?г [?g])
- (aset standard-display-table ?д [?d])
- (aset standard-display-table ?е [?e])
- (aset standard-display-table ?ё [?y?o])
- (aset standard-display-table ?ж [?z?h])
- (aset standard-display-table ?з [?z])
- (aset standard-display-table ?и [?i])
- (aset standard-display-table ?й [?j])
- (aset standard-display-table ?к [?k])
- (aset standard-display-table ?л [?l])
- (aset standard-display-table ?м [?m])
- (aset standard-display-table ?н [?n])
- (aset standard-display-table ?о [?o])
- (aset standard-display-table ?п [?p])
- (aset standard-display-table ?р [?r])
- (aset standard-display-table ?с [?s])
- (aset standard-display-table ?т [?t])
- (aset standard-display-table ?у [?u])
- (aset standard-display-table ?ф [?f])
- (aset standard-display-table ?х [?k?h])
- (aset standard-display-table ?ц [?t?s])
- (aset standard-display-table ?ч [?c?h])
- (aset standard-display-table ?ш [?s?h])
- (aset standard-display-table ?щ [?s?c?h])
- (aset standard-display-table ?ъ [?~])
- (aset standard-display-table ?ы [?y])
- (aset standard-display-table ?ь [?'])
- (aset standard-display-table ?э [?e?'])
- (aset standard-display-table ?ю [?y?u])
- (aset standard-display-table ?я [?y?a])
-
- (aset standard-display-table ?А [?A])
- (aset standard-display-table ?Б [?B])
- (aset standard-display-table ?В [?V])
- (aset standard-display-table ?Г [?G])
- (aset standard-display-table ?Д [?D])
- (aset standard-display-table ?Е [?E])
- (aset standard-display-table ?Ё [?Y?o])
- (aset standard-display-table ?Ж [?Z?h])
- (aset standard-display-table ?З [?Z])
- (aset standard-display-table ?И [?I])
- (aset standard-display-table ?Й [?J])
- (aset standard-display-table ?К [?K])
- (aset standard-display-table ?Л [?L])
- (aset standard-display-table ?М [?M])
- (aset standard-display-table ?Н [?N])
- (aset standard-display-table ?О [?O])
- (aset standard-display-table ?П [?P])
- (aset standard-display-table ?Р [?R])
- (aset standard-display-table ?С [?S])
- (aset standard-display-table ?Т [?T])
- (aset standard-display-table ?У [?U])
- (aset standard-display-table ?Ф [?F])
- (aset standard-display-table ?Х [?K?h])
- (aset standard-display-table ?Ц [?T?s])
- (aset standard-display-table ?Ч [?C?h])
- (aset standard-display-table ?Ш [?S?h])
- (aset standard-display-table ?Щ [?S?c?h])
- (aset standard-display-table ?Ъ [?~])
- (aset standard-display-table ?Ы [?Y])
- (aset standard-display-table ?Ь [?'])
- (aset standard-display-table ?Э [?E?'])
- (aset standard-display-table ?Ю [?Y?u])
- (aset standard-display-table ?Я [?Y?a])
-
- (aset standard-display-table ?є [?i?e])
- (aset standard-display-table ?ї [?i])
- (aset standard-display-table ?ў [?u])
- (aset standard-display-table ?ђ [?d?j])
- (aset standard-display-table ?ћ [?c?h?j])
- (aset standard-display-table ?ѓ [?g?j])
- (aset standard-display-table ?ѕ [?s])
- (aset standard-display-table ?ќ [?k])
- (aset standard-display-table ?і [?i])
- (aset standard-display-table ?ј [?j])
- (aset standard-display-table ?љ [?l?j])
- (aset standard-display-table ?њ [?n?j])
- (aset standard-display-table ?џ [?d?z])
-
- (aset standard-display-table ?Є [?Y?e])
- (aset standard-display-table ?Ї [?Y?i])
- (aset standard-display-table ?Ў [?U])
- (aset standard-display-table ?Ђ [?D?j])
- (aset standard-display-table ?Ћ [?C?h?j])
- (aset standard-display-table ?Ѓ [?G?j])
- (aset standard-display-table ?Ѕ [?S])
- (aset standard-display-table ?Ќ [?K])
- (aset standard-display-table ?І [?I])
- (aset standard-display-table ?Ј [?J])
- (aset standard-display-table ?Љ [?L?j])
- (aset standard-display-table ?Њ [?N?j])
- (aset standard-display-table ?Џ [?D?j])
-
- (when (equal cyrillic-language "Bulgarian")
- (aset standard-display-table ?щ [?s?h?t])
- (aset standard-display-table ?Щ [?S?h?t])
- (aset standard-display-table ?ю [?i?u])
- (aset standard-display-table ?Ю [?I?u])
- (aset standard-display-table ?я [?i?a])
- (aset standard-display-table ?Я [?I?a]))
-
- (when (equal cyrillic-language "Ukrainian") ; based on the official
- ; transliteration table
- (aset standard-display-table ?и [?y])
- (aset standard-display-table ?И [?Y])
- (aset standard-display-table ?й [?i])
- (aset standard-display-table ?Й [?Y])
- (aset standard-display-table ?ю [?i?u])
- (aset standard-display-table ?я [?i?a]))))
-
-
+ (when (equal cyrillic-language "Ukrainian") ; based on the official
+ ; transliteration table
+ (put-display-table ?и "y" display-table)
+ (put-display-table ?И "Y" display-table)
+ (put-display-table ?й "i" display-table)
+ (put-display-table ?Й "Y" display-table)
+ (put-display-table ?ю "iu" display-table)
+ (put-display-table ?я "ia" display-table)))) nil))
;;
(provide 'cyril-util)
diff -r cc293ef846d2 -r e214ff9f9507 lisp/x-init.el
--- a/lisp/x-init.el Mon Dec 24 14:00:51 2007 +0100
+++ b/lisp/x-init.el Mon Dec 24 20:22:08 2007 +0100
@@ -336,11 +336,11 @@ This function is a trivial wrapper aroun
;; 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-display-table doesn't exist when this file is loaded.
+;; (make-char-table 'generic) instead of (make-display-table) because
+;; make-display-table isn't dumped, and this file is.
-(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
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghé, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches