changeset 4498:f0c81cd2a959

Merge.
author Mats Lidell <matsl@xemacs.org>
date Sun, 10 Aug 2008 23:24:15 +0200
parents f863b2ee146f (current diff) c95c06ee1e9d (diff)
children c86a3c1b7416
files lisp/mule/cyril-util.el src/ChangeLog
diffstat 22 files changed, 461 insertions(+), 314 deletions(-) [+]
line wrap: on
line diff
--- a/etc/ChangeLog	Sun Aug 03 23:21:31 2008 +0200
+++ b/etc/ChangeLog	Sun Aug 10 23:24:15 2008 +0200
@@ -1,3 +1,12 @@
+2008-08-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* HELLO: Add a coding cookie, now the UTF-8 sequences prevent the
+	file being recognised as ISO-2022-7 automatically.
+
+2008-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* HELLO: Encode the Arabic using UTF-8 sequences, not ISO-8859-6. 
+
 2008-02-21  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* README: Add descriptions of Daniel Polansky's icons.
--- a/etc/HELLO	Sun Aug 03 23:21:31 2008 +0200
+++ b/etc/HELLO	Sun Aug 10 23:24:15 2008 +0200
@@ -1,9 +1,11 @@
+-*- coding: iso-2022-7 -*-
+
 You need many fonts to read all.
 Please correct this incomplete list and add more!
 
 ---------------------------------------------------------
 Amharic	($(3"c!<!N"^(B)	$(3!A!,!>(B
-Arabic			[2](38R(47d(3T!JSa(4W(3W[0](B
+Arabic (%Gةّيبرعلا%@)	%Gمكيلع%@ %Gمالّسلا%@
 Croatian (Hrvatski)	Bog (Bok), Dobar dan
 Czech (,Bh(Besky)		Dobr,B}(B den
 Danish (Dansk)		Hej, Goddag
--- a/lisp/ChangeLog	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/ChangeLog	Sun Aug 10 23:24:15 2008 +0200
@@ -1,3 +1,58 @@
+2008-08-09  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* mule/cyril-util.el: Remove. Use the version in packages instead.
+
+2008-08-08  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* unicode.el: 
+	* mule/mule-cmds.el: 
+	* mule/latin.el: 
+	* mule/cyrillic.el: 
+	Rework the various identifiers using error-sequence to use
+	invalid-sequence instead.
+
+2008-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* specifier.el (current-display-table): Initialise this here, not
+	in x-init.el, since we want it even on non-X builds to use the
+	support for displaying Unicode error sequences according to the
+	current locale.
+	* mule/mule-cmds.el (set-language-info): 
+	Document error-sequence-coding-system, used to describe how to
+	display characters that are not valid Unicode on disk. 
+	* mule/mule-cmds.el (finish-set-language-environment): 
+	Implement error-sequence-coding-system. 
+	* unicode.el (unicode-error-sequence-warning-face): 
+	New face, to make it possible to distinguish invalid Unicode
+	sequences from the characters given by the valid Unicode
+	sequences. 
+	* mule/cyrillic.el ("Russian"): 
+	("Ukrainian"): 
+	("Bulgarian"): 
+	("Belarusian"): 
+	("Cyrillic-ALT"): Add support for error-sequence-coding-system for
+	all these languages.
+	* mule/latin.el: 
+	Add support for error-sequence-coding-system for the
+	Latin-alphabet language environments.
+
+2008-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* mule/iso-with-esc.el (greek-iso-8bit-with-esc): 
+	(arabic-iso-8bit-with-esc): 
+	Add these two here. Move the implementation of the
+	'arabic-iso8859-6  character set here, with commentary on why that
+	is reasonable. 
+	* mule/arabic.el (iso-8859-6): 
+	Add iso-8859-6, windows-1256 implementations using
+	make-8-bit-coding-system. Remove our non-standard Mule character
+	sets. 
+	* unicode.el (load-unicode-tables): Remove Arabic since it's no
+	longer dumped.
+	* mule/mule-msw-init-late.el: Remove Arabic.
+	* mule/mule-category.el (predefined-category-list): Remove
+	Arabic. 
+
 2008-07-26  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* x-init.el (x-initialize-compose): 
--- a/lisp/mule/arabic.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/arabic.el	Sun Aug 10 23:24:15 2008 +0200
@@ -28,79 +28,204 @@
 
 ;;; Code:
 
-; (make-charset 'arabic-iso8859-6 
-; 	      "Right-Hand Part of Latin/Arabic Alphabet (ISO/IEC 8859-6): ISO-IR-127"
-; 	      '(dimension
-; 		1
-; 		registry "ISO8859-6"
-; 		chars 96
-; 		columns 1
-; 		direction r2l
-; 		final ?G
-; 		graphic 1
-; 		short-name "RHP of ISO8859/6"
-; 		long-name "RHP of Arabic (ISO 8859-6): ISO-IR-127"
-; 		))
+;; See iso-with-esc.el for commentary on the ISO standard Arabic character
+;; set.
 
-;; For Arabic, we need three different types of character sets.
-;; Digits are of direction left-to-right and of width 1-column.
-;; Others are of direction right-to-left and of width 1-column or
-;; 2-column.
-(make-charset 'arabic-digit "Arabic digit"
-	      '(dimension 1
-		registries ["MuleArabic-0"]
-		chars 94
-		columns 1
-		direction l2r
-		final ?2
-		graphic 0
-		short-name "Arabic digit"
-		long-name "Arabic digit"
-		))
+(make-8-bit-coding-system
+ 'iso-8859-6
+ '((#xA0 ?\u00A0) ;; NO-BREAK SPACE
+   (#xA4 ?\u00A4) ;; CURRENCY SIGN
+   (#xAC ?\u060C) ;; ARABIC COMMA
+   (#xAD ?\u00AD) ;; SOFT HYPHEN
+   (#xBB ?\u061B) ;; ARABIC SEMICOLON
+   (#xBF ?\u061F) ;; ARABIC QUESTION MARK
+   (#xC1 ?\u0621) ;; ARABIC LETTER HAMZA
+   (#xC2 ?\u0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
+   (#xC3 ?\u0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
+   (#xC4 ?\u0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
+   (#xC5 ?\u0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
+   (#xC6 ?\u0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
+   (#xC7 ?\u0627) ;; ARABIC LETTER ALEF
+   (#xC8 ?\u0628) ;; ARABIC LETTER BEH
+   (#xC9 ?\u0629) ;; ARABIC LETTER TEH MARBUTA
+   (#xCA ?\u062A) ;; ARABIC LETTER TEH
+   (#xCB ?\u062B) ;; ARABIC LETTER THEH
+   (#xCC ?\u062C) ;; ARABIC LETTER JEEM
+   (#xCD ?\u062D) ;; ARABIC LETTER HAH
+   (#xCE ?\u062E) ;; ARABIC LETTER KHAH
+   (#xCF ?\u062F) ;; ARABIC LETTER DAL
+   (#xD0 ?\u0630) ;; ARABIC LETTER THAL
+   (#xD1 ?\u0631) ;; ARABIC LETTER REH
+   (#xD2 ?\u0632) ;; ARABIC LETTER ZAIN
+   (#xD3 ?\u0633) ;; ARABIC LETTER SEEN
+   (#xD4 ?\u0634) ;; ARABIC LETTER SHEEN
+   (#xD5 ?\u0635) ;; ARABIC LETTER SAD
+   (#xD6 ?\u0636) ;; ARABIC LETTER DAD
+   (#xD7 ?\u0637) ;; ARABIC LETTER TAH
+   (#xD8 ?\u0638) ;; ARABIC LETTER ZAH
+   (#xD9 ?\u0639) ;; ARABIC LETTER AIN
+   (#xDA ?\u063A) ;; ARABIC LETTER GHAIN
+   (#xE0 ?\u0640) ;; ARABIC TATWEEL
+   (#xE1 ?\u0641) ;; ARABIC LETTER FEH
+   (#xE2 ?\u0642) ;; ARABIC LETTER QAF
+   (#xE3 ?\u0643) ;; ARABIC LETTER KAF
+   (#xE4 ?\u0644) ;; ARABIC LETTER LAM
+   (#xE5 ?\u0645) ;; ARABIC LETTER MEEM
+   (#xE6 ?\u0646) ;; ARABIC LETTER NOON
+   (#xE7 ?\u0647) ;; ARABIC LETTER HEH
+   (#xE8 ?\u0648) ;; ARABIC LETTER WAW
+   (#xE9 ?\u0649) ;; ARABIC LETTER ALEF MAKSURA
+   (#xEA ?\u064A) ;; ARABIC LETTER YEH
+   (#xEB ?\u064B) ;; ARABIC FATHATAN
+   (#xEC ?\u064C) ;; ARABIC DAMMATAN
+   (#xED ?\u064D) ;; ARABIC KASRATAN
+   (#xEE ?\u064E) ;; ARABIC FATHA
+   (#xEF ?\u064F) ;; ARABIC DAMMA
+   (#xF0 ?\u0650) ;; ARABIC KASRA
+   (#xF1 ?\u0651) ;; ARABIC SHADDA
+   (#xF2 ?\u0652)) ;; ARABIC SUKUN
+ "ISO 8859-6 (Arabic)"
+'(mnemonic "ArISO"))
 
-(make-charset 'arabic-1-column "Arabic 1-column"
-	      '(dimension
-		1
-		registries ["MuleArabic-1"]
-		chars 94
-		columns 1
-		direction r2l
-		final ?3
-		graphic 0
-		short-name "Arabic 1-col"
-		long-name "Arabic 1-column"
-		))
+(make-8-bit-coding-system
+ 'windows-1256
+ '((#x80 ?\u20AC) ;; EURO SIGN
+   (#x81 ?\u067E) ;; ARABIC LETTER PEH
+   (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+   (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
+   (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+   (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+   (#x86 ?\u2020) ;; DAGGER
+   (#x87 ?\u2021) ;; DOUBLE DAGGER
+   (#x88 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
+   (#x89 ?\u2030) ;; PER MILLE SIGN
+   (#x8A ?\u0679) ;; ARABIC LETTER TTEH
+   (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+   (#x8C ?\u0152) ;; LATIN CAPITAL LIGATURE OE
+   (#x8D ?\u0686) ;; ARABIC LETTER TCHEH
+   (#x8E ?\u0698) ;; ARABIC LETTER JEH
+   (#x8F ?\u0688) ;; ARABIC LETTER DDAL
+   (#x90 ?\u06AF) ;; ARABIC LETTER GAF
+   (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+   (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+   (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+   (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+   (#x95 ?\u2022) ;; BULLET
+   (#x96 ?\u2013) ;; EN DASH
+   (#x97 ?\u2014) ;; EM DASH
+   (#x98 ?\u06A9) ;; ARABIC LETTER KEHEH
+   (#x99 ?\u2122) ;; TRADE MARK SIGN
+   (#x9A ?\u0691) ;; ARABIC LETTER RREH
+   (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+   (#x9C ?\u0153) ;; LATIN SMALL LIGATURE OE
+   (#x9D ?\u200C) ;; ZERO WIDTH NON-JOINER
+   (#x9E ?\u200D) ;; ZERO WIDTH JOINER
+   (#x9F ?\u06BA) ;; ARABIC LETTER NOON GHUNNA
+   (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+   (#xA1 ?\u060C) ;; ARABIC COMMA
+   (#xA2 ?\u00A2) ;; CENT SIGN
+   (#xA3 ?\u00A3) ;; POUND SIGN
+   (#xA4 ?\u00A4) ;; CURRENCY SIGN
+   (#xA5 ?\u00A5) ;; YEN SIGN
+   (#xA6 ?\u00A6) ;; BROKEN BAR
+   (#xA7 ?\u00A7) ;; SECTION SIGN
+   (#xA8 ?\u00A8) ;; DIAERESIS
+   (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+   (#xAA ?\u06BE) ;; ARABIC LETTER HEH DOACHASHMEE
+   (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+   (#xAC ?\u00AC) ;; NOT SIGN
+   (#xAD ?\u00AD) ;; SOFT HYPHEN
+   (#xAE ?\u00AE) ;; REGISTERED SIGN
+   (#xAF ?\u00AF) ;; MACRON
+   (#xB0 ?\u00B0) ;; DEGREE SIGN
+   (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+   (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+   (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+   (#xB4 ?\u00B4) ;; ACUTE ACCENT
+   (#xB5 ?\u00B5) ;; MICRO SIGN
+   (#xB6 ?\u00B6) ;; PILCROW SIGN
+   (#xB7 ?\u00B7) ;; MIDDLE DOT
+   (#xB8 ?\u00B8) ;; CEDILLA
+   (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
+   (#xBA ?\u061B) ;; ARABIC SEMICOLON
+   (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+   (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
+   (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+   (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
+   (#xBF ?\u061F) ;; ARABIC QUESTION MARK
+   (#xC0 ?\u06C1) ;; ARABIC LETTER HEH GOAL
+   (#xC1 ?\u0621) ;; ARABIC LETTER HAMZA
+   (#xC2 ?\u0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
+   (#xC3 ?\u0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
+   (#xC4 ?\u0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
+   (#xC5 ?\u0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
+   (#xC6 ?\u0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
+   (#xC7 ?\u0627) ;; ARABIC LETTER ALEF
+   (#xC8 ?\u0628) ;; ARABIC LETTER BEH
+   (#xC9 ?\u0629) ;; ARABIC LETTER TEH MARBUTA
+   (#xCA ?\u062A) ;; ARABIC LETTER TEH
+   (#xCB ?\u062B) ;; ARABIC LETTER THEH
+   (#xCC ?\u062C) ;; ARABIC LETTER JEEM
+   (#xCD ?\u062D) ;; ARABIC LETTER HAH
+   (#xCE ?\u062E) ;; ARABIC LETTER KHAH
+   (#xCF ?\u062F) ;; ARABIC LETTER DAL
+   (#xD0 ?\u0630) ;; ARABIC LETTER THAL
+   (#xD1 ?\u0631) ;; ARABIC LETTER REH
+   (#xD2 ?\u0632) ;; ARABIC LETTER ZAIN
+   (#xD3 ?\u0633) ;; ARABIC LETTER SEEN
+   (#xD4 ?\u0634) ;; ARABIC LETTER SHEEN
+   (#xD5 ?\u0635) ;; ARABIC LETTER SAD
+   (#xD6 ?\u0636) ;; ARABIC LETTER DAD
+   (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+   (#xD8 ?\u0637) ;; ARABIC LETTER TAH
+   (#xD9 ?\u0638) ;; ARABIC LETTER ZAH
+   (#xDA ?\u0639) ;; ARABIC LETTER AIN
+   (#xDB ?\u063A) ;; ARABIC LETTER GHAIN
+   (#xDC ?\u0640) ;; ARABIC TATWEEL
+   (#xDD ?\u0641) ;; ARABIC LETTER FEH
+   (#xDE ?\u0642) ;; ARABIC LETTER QAF
+   (#xDF ?\u0643) ;; ARABIC LETTER KAF
+   (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+   (#xE1 ?\u0644) ;; ARABIC LETTER LAM
+   (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+   (#xE3 ?\u0645) ;; ARABIC LETTER MEEM
+   (#xE4 ?\u0646) ;; ARABIC LETTER NOON
+   (#xE5 ?\u0647) ;; ARABIC LETTER HEH
+   (#xE6 ?\u0648) ;; ARABIC LETTER WAW
+   (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+   (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+   (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+   (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+   (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+   (#xEC ?\u0649) ;; ARABIC LETTER ALEF MAKSURA
+   (#xED ?\u064A) ;; ARABIC LETTER YEH
+   (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+   (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+   (#xF0 ?\u064B) ;; ARABIC FATHATAN
+   (#xF1 ?\u064C) ;; ARABIC DAMMATAN
+   (#xF2 ?\u064D) ;; ARABIC KASRATAN
+   (#xF3 ?\u064E) ;; ARABIC FATHA
+   (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+   (#xF5 ?\u064F) ;; ARABIC DAMMA
+   (#xF6 ?\u0650) ;; ARABIC KASRA
+   (#xF7 ?\u00F7) ;; DIVISION SIGN
+   (#xF8 ?\u0651) ;; ARABIC SHADDA
+   (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+   (#xFA ?\u0652) ;; ARABIC SUKUN
+   (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+   (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+   (#xFD ?\u200E) ;; LEFT-TO-RIGHT MARK
+   (#xFE ?\u200F) ;; RIGHT-TO-LEFT MARK
+   (#xFF ?\u06D2));; ARABIC LETTER YEH BARREE
+ "Windows-1256 (Arabic)"
+ '(mnemonic "cp1256"
+   documentation
+   "This is the much Windows encoding for Arabic, much superior to the ISO
+standard one."
+   aliases (cp1256)))
 
-(make-charset 'arabic-2-column "Arabic 2-column"
-	      '(dimension
-		1
-		registries ["MuleArabic-2"]
-		chars 94
-		columns 2
-		direction r2l
-		final ?4
-		graphic 0
-		short-name "Arabic 2-col"
-		long-name "Arabic 2-column"
-		))
+;; The Mac Arabic coding systems don't have defined MIME names. 
 
-(make-coding-system 'iso-8859-6 'iso2022
-		    "ISO-8859-6 (Arabic)"
-		    '(charset-g0 ascii
-				 charset-g1 arabic-iso8859-6
-				 charset-g2 t
-				 charset-g3 t
-				 no-iso6429 t
-				 mnemonic "MIME/Arbc"
-				 ))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; ARABIC
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; (define-language-environment 'arabic
-;;   "Arabic"
-;;   (lambda ()
-;;     (require 'arabic)))
+;; #### Decide what to do about the syntax of the Arabic punctuation. 
 
 ;;; arabic.el ends here
--- a/lisp/mule/cyril-util.el	Sun Aug 03 23:21:31 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-;;; cyril-util.el ---  utilities for Cyrillic scripts -*- coding: iso-2022-7bit; -*-
-
-;; Copyright (C) 1997  Free Software Foundation, Inc.
-;; Copyright (C) 2002 Ben Wing.
-
-;; Keywords: mule, multilingual, Cyrillic
-
-;; This file is part of XEmacs.
-
-;; XEmacs is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; XEmacs 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 XEmacs; see the file COPYING.  If not, write to the Free
-;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;; 02111-1307, USA.
-
-;;; Synched up with: Emacs 21.1 (language/cyril-util.el).
-
-;;; 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:
-
-
-;; Display 
-
-;; Written by Valery Alexeev <valery@math.uga.edu>.
-
-(defvar cyrillic-language-alist
-      '(("Belorussian") ("Bulgarian") ("Macedonian") ("Russian") ("Serbian")
-        ("Ukrainian"))
-      "*List of known Cyrillic languages")
-
-;;;###autoload
-(defun standard-display-cyrillic-translit (&optional cyrillic-language
-					   disable)
-  "Display a cyrillic buffer using a transliteration.
-For readability, the table is slightly
-different from the one used for the input method `cyrillic-translit'.
-
-The argument is a string which specifies which language you are using;
-that affects the choice of transliterations slightly.
-Possible values are listed in 'cyrillic-language-alist'.
-
-Specifying a prefix arg, by preceding
-\\[standard-display-cyrillic-translit] with \\[universal-argument]
-turns off Cyrillic display.  Noninteractively, the DISABLE argument
-does the same thing.  "
-  (interactive
-   (list
-    (let* ((completion-ignore-case t)
-	   (default-language (if (assoc-ignore-case
-				  current-language-environment
-				  cyrillic-language-alist)
-				 current-language-environment
-			       "Russian")))
-      (or current-prefix-arg
-	  (completing-read
-	   (format "Cyrillic language (default %s): " default-language)
-	   cyrillic-language-alist nil t nil nil default-language)))))
-  (frob-display-table
-   (lambda (display-table)
-     (if (or disable current-prefix-arg)
-         (if (char-table-p display-table)
-             (remove-char-table 'cyrillic-iso8859-5 display-table))
-       (put-display-table ?,LP(B "a"   display-table)
-       (put-display-table ?,LQ(B "b"   display-table)
-       (put-display-table ?,LR(B "v"   display-table)
-       (put-display-table ?,LS(B "g"   display-table)
-       (put-display-table ?,LT(B "d"   display-table)
-       (put-display-table ?,LU(B "e"   display-table)
-       (put-display-table ?,Lq(B "yo"  display-table)
-       (put-display-table ?,LV(B "zh"  display-table)
-       (put-display-table ?,LW(B "z"   display-table)
-       (put-display-table ?,LX(B "i"   display-table)
-       (put-display-table ?,LY(B "j"   display-table)
-       (put-display-table ?,LZ(B "k"   display-table)
-       (put-display-table ?,L[(B "l"   display-table)
-       (put-display-table ?,L\(B "m"   display-table)
-       (put-display-table ?,L](B "n"   display-table)
-       (put-display-table ?,L^(B "o"   display-table)
-       (put-display-table ?,L_(B "p"   display-table)
-       (put-display-table ?,L`(B "r"   display-table)
-       (put-display-table ?,La(B "s"   display-table)
-       (put-display-table ?,Lb(B "t"   display-table)
-       (put-display-table ?,Lc(B "u"   display-table)
-       (put-display-table ?,Ld(B "f"   display-table)
-       (put-display-table ?,Le(B "kh"  display-table)
-       (put-display-table ?,Lf(B "ts"  display-table)
-       (put-display-table ?,Lg(B "ch"  display-table)
-       (put-display-table ?,Lh(B "sh"  display-table)
-       (put-display-table ?,Li(B "sch" display-table)
-       (put-display-table ?,Lj(B "~"   display-table)
-       (put-display-table ?,Lk(B "y"   display-table)
-       (put-display-table ?,Ll(B "'"   display-table)
-       (put-display-table ?,Lm(B "e'"  display-table)
-       (put-display-table ?,Ln(B "yu"  display-table)
-       (put-display-table ?,Lo(B "ya"  display-table)
-       (put-display-table ?,L0(B "A"   display-table)
-       (put-display-table ?,L1(B "B"   display-table)
-       (put-display-table ?,L2(B "V"   display-table)
-       (put-display-table ?,L3(B "G"   display-table)
-       (put-display-table ?,L4(B "D"   display-table)
-       (put-display-table ?,L5(B "E"   display-table)
-       (put-display-table ?,L!(B "Yo"  display-table)
-       (put-display-table ?,L6(B "Zh"  display-table)
-       (put-display-table ?,L7(B "Z"   display-table)
-       (put-display-table ?,L8(B "I"   display-table)
-       (put-display-table ?,L9(B "J"   display-table)
-       (put-display-table ?,L:(B "K"   display-table)
-       (put-display-table ?,L;(B "L"   display-table)
-       (put-display-table ?,L<(B "M"   display-table)
-       (put-display-table ?,L=(B "N"   display-table)
-       (put-display-table ?,L>(B "O"   display-table)
-       (put-display-table ?,L?(B "P"   display-table)
-       (put-display-table ?,L@(B "R"   display-table)
-       (put-display-table ?,LA(B "S"   display-table)
-       (put-display-table ?,LB(B "T"   display-table)
-       (put-display-table ?,LC(B "U"   display-table)
-       (put-display-table ?,LD(B "F"   display-table)
-       (put-display-table ?,LE(B "Kh"  display-table)
-       (put-display-table ?,LF(B "Ts"  display-table)
-       (put-display-table ?,LG(B "Ch"  display-table)
-       (put-display-table ?,LH(B "Sh"  display-table)
-       (put-display-table ?,LI(B "Sch" display-table)
-       (put-display-table ?,LJ(B "~"   display-table)
-       (put-display-table ?,LK(B "Y"   display-table)
-       (put-display-table ?,LL(B "'"   display-table)
-       (put-display-table ?,LM(B "E'"  display-table)
-       (put-display-table ?,LN(B "Yu"  display-table)
-       (put-display-table ?,LO(B "Ya"  display-table)
-       (put-display-table ?,Lt(B "ie"  display-table)
-       (put-display-table ?,Lw(B "i"   display-table)
-       (put-display-table ?,L~(B "u"   display-table)
-       (put-display-table ?,Lr(B "dj"  display-table)
-       (put-display-table ?,L{(B "chj" display-table)
-       (put-display-table ?,Ls(B "gj"  display-table)
-       (put-display-table ?,Lu(B "s"   display-table)
-       (put-display-table ?,L|(B "k"   display-table)
-       (put-display-table ?,Lv(B "i"   display-table)
-       (put-display-table ?,Lx(B "j"   display-table)
-       (put-display-table ?,Ly(B "lj"  display-table)
-       (put-display-table ?,Lz(B "nj"  display-table)
-       (put-display-table ?,L(B "dz"  display-table)
-       (put-display-table ?,L$(B "Ye"  display-table)
-       (put-display-table ?,L'(B "Yi"  display-table)
-       (put-display-table ?,L.(B "U"   display-table)
-       (put-display-table ?,L"(B "Dj"  display-table)
-       (put-display-table ?,L+(B "Chj" display-table)
-       (put-display-table ?,L#(B "Gj"  display-table)
-       (put-display-table ?,L%(B "S"   display-table)
-       (put-display-table ?,L,(B "K"   display-table)
-       (put-display-table ?,L&(B "I"   display-table)
-       (put-display-table ?,L((B "J"   display-table)
-       (put-display-table ?,L)(B "Lj"  display-table)
-       (put-display-table ?,L*(B "Nj"  display-table)
-       (put-display-table ?,L/(B "Dj"  display-table)
-    
-       (when (equal cyrillic-language "Bulgarian")
-         (put-display-table ?,Li(B "sht"  display-table)
-         (put-display-table ?,LI(B "Sht"  display-table)
-         (put-display-table ?,Ln(B "iu"   display-table)
-         (put-display-table ?,LN(B "Iu"   display-table)
-         (put-display-table ?,Lo(B "ia"   display-table)
-         (put-display-table ?,LO(B "Ia"   display-table))
-
-       (when (equal cyrillic-language "Ukrainian") ; based on the official 
-                                        ; transliteration table
-         (put-display-table ?,LX(B "y"    display-table)
-         (put-display-table ?,L8(B "Y"    display-table)
-         (put-display-table ?,LY(B "i"    display-table)
-         (put-display-table ?,L9(B "Y"    display-table)
-         (put-display-table ?,Ln(B "iu"   display-table)
-         (put-display-table ?,Lo(B "ia"   display-table)))) nil))
-;;
-(provide 'cyril-util)
-
-;; Local Variables:
-;; coding: iso-2022-7bit
-;; End:
-
-;;; cyril-util.el ends here
--- a/lisp/mule/cyrillic.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/cyrillic.el	Sun Aug 10 23:24:15 2008 +0200
@@ -370,6 +370,7 @@
 	     (coding-system koi8-r)
 	     (native-coding-system koi8-r)
 	     (coding-priority koi8-r)
+	     (invalid-sequence-coding-system koi8-r)
 	     (input-method . "cyrillic-yawerty")
 	     (features cyril-util)
 	     (locale "ru")
@@ -543,6 +544,7 @@
  "Ukrainian" '((coding-system koi8-u)
                (coding-priority koi8-u)
                (locale "uk")
+               (invalid-sequence-coding-system koi8-u)
                (input-method . "cyrillic-ukrainian")
                (documentation
                 . "Support for Ukrainian."))
@@ -689,6 +691,7 @@
 (set-language-info-alist
  "Bulgarian" '((coding-system windows-1251)
                (coding-priority windows-1251)
+	       (invalid-sequence-coding-system windows-1251)
                (input-method . "bulgarian-bds")
                (locale "bg")
                (documentation
@@ -699,6 +702,7 @@
 (set-language-info-alist
  "Belarusian" '((coding-system windows-1251)
                 (coding-priority windows-1251)
+		(invalid-sequence-coding-system windows-1251)
                 (locale "be")
                 (input-method . "belarusian")
                 (documentation
@@ -845,6 +849,7 @@
  "Cyrillic-ALT" '((charset cyrillic-iso8859-5)
                   (coding-system alternativnyj)
                   (native-coding-system alternativnyj)
+		  (invalid-sequence-coding-system alternativnyj)
                   (coding-priority alternativnyj)
                   (input-method . "cyrillic-yawerty")
                   (features cyril-util)
--- a/lisp/mule/greek.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/greek.el	Sun Aug 10 23:24:15 2008 +0200
@@ -328,6 +328,7 @@
 	   (coding-system iso-8859-7)
 	   (coding-priority iso-8859-7)
 	   (native-coding-system iso-8859-7)
+	   (invalid-sequence-coding-system iso-8859-7)
 	   (locale "el")
 	   (input-method . "greek")
 	   (sample-text . "Greek (,FGkk]mija(B)	,FCei\(B ,Fsar(B")
--- a/lisp/mule/iso-with-esc.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/iso-with-esc.el	Sun Aug 10 23:24:15 2008 +0200
@@ -98,3 +98,108 @@
   charset-g3 t
    no-iso6429 t
    mnemonic "MIME/Hbrw"))
+
+;;;###autoload
+(make-coding-system
+ 'greek-iso-8bit-with-esc 'iso2022 "MIME ISO-8859-7"
+ '(charset-g0 ascii
+   charset-g1 greek-iso8859-7
+   charset-g2 t
+   charset-g3 t
+   mnemonic "Grk"))
+
+;; ISO 8859-6 is such a useless character set that it seems a waste of
+;; codespace to dump it. Let me count the ways: 
+;; 
+;; 1. It doesn't support Persian or Urdu, let alone Sinhalese, despite
+;;    plenty of unallocated code points.
+;;
+;; 2. It doesn't encode all the vowel diacritics (the Harakaat) despite that
+;;    they are necessary, even for the Arabs, for basic things like
+;;    dictionary entries, children's books, and occasional disambiguation.
+;;
+;; 3. The Arabs don't use it, they use Windows-1256, which also supports
+;;    Persian, at least, as well as the French characters necessary in
+;;    Lebanon and North Africa.
+
+(make-charset
+ 'arabic-iso8859-6 
+ "Right-Hand Part of Latin/Arabic Alphabet (ISO/IEC 8859-6): ISO-IR-127"
+ '(dimension 1
+   registry "ISO8859-6"
+   chars 96
+   columns 1
+   direction r2l
+   final ?G
+   graphic 1
+   short-name "RHP of ISO8859/6"
+   long-name "RHP of Arabic (ISO 8859-6): ISO-IR-127"))
+
+(loop
+  for (iso8859-6 unicode)
+  in '((#xA0 #x00A0) ;; NO-BREAK SPACE
+       (#xA4 #x00A4) ;; CURRENCY SIGN
+       (#xAC #x060C) ;; ARABIC COMMA
+       (#xAD #x00AD) ;; SOFT HYPHEN
+       (#xBB #x061B) ;; ARABIC SEMICOLON
+       (#xBF #x061F) ;; ARABIC QUESTION MARK
+       (#xC1 #x0621) ;; ARABIC LETTER HAMZA
+       (#xC2 #x0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
+       (#xC3 #x0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
+       (#xC4 #x0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
+       (#xC5 #x0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
+       (#xC6 #x0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
+       (#xC7 #x0627) ;; ARABIC LETTER ALEF
+       (#xC8 #x0628) ;; ARABIC LETTER BEH
+       (#xC9 #x0629) ;; ARABIC LETTER TEH MARBUTA
+       (#xCA #x062A) ;; ARABIC LETTER TEH
+       (#xCB #x062B) ;; ARABIC LETTER THEH
+       (#xCC #x062C) ;; ARABIC LETTER JEEM
+       (#xCD #x062D) ;; ARABIC LETTER HAH
+       (#xCE #x062E) ;; ARABIC LETTER KHAH
+       (#xCF #x062F) ;; ARABIC LETTER DAL
+       (#xD0 #x0630) ;; ARABIC LETTER THAL
+       (#xD1 #x0631) ;; ARABIC LETTER REH
+       (#xD2 #x0632) ;; ARABIC LETTER ZAIN
+       (#xD3 #x0633) ;; ARABIC LETTER SEEN
+       (#xD4 #x0634) ;; ARABIC LETTER SHEEN
+       (#xD5 #x0635) ;; ARABIC LETTER SAD
+       (#xD6 #x0636) ;; ARABIC LETTER DAD
+       (#xD7 #x0637) ;; ARABIC LETTER TAH
+       (#xD8 #x0638) ;; ARABIC LETTER ZAH
+       (#xD9 #x0639) ;; ARABIC LETTER AIN
+       (#xDA #x063A) ;; ARABIC LETTER GHAIN
+       (#xE0 #x0640) ;; ARABIC TATWEEL
+       (#xE1 #x0641) ;; ARABIC LETTER FEH
+       (#xE2 #x0642) ;; ARABIC LETTER QAF
+       (#xE3 #x0643) ;; ARABIC LETTER KAF
+       (#xE4 #x0644) ;; ARABIC LETTER LAM
+       (#xE5 #x0645) ;; ARABIC LETTER MEEM
+       (#xE6 #x0646) ;; ARABIC LETTER NOON
+       (#xE7 #x0647) ;; ARABIC LETTER HEH
+       (#xE8 #x0648) ;; ARABIC LETTER WAW
+       (#xE9 #x0649) ;; ARABIC LETTER ALEF MAKSURA
+       (#xEA #x064A) ;; ARABIC LETTER YEH
+       (#xEB #x064B) ;; ARABIC FATHATAN
+       (#xEC #x064C) ;; ARABIC DAMMATAN
+       (#xED #x064D) ;; ARABIC KASRATAN
+       (#xEE #x064E) ;; ARABIC FATHA
+       (#xEF #x064F) ;; ARABIC DAMMA
+       (#xF0 #x0650) ;; ARABIC KASRA
+       (#xF1 #x0651) ;; ARABIC SHADDA
+       (#xF2 #x0652));; ARABIC SUKUN
+  do (set-unicode-conversion (make-char 'arabic-iso8859-6 iso8859-6)
+                             unicode))
+
+;;;###autoload
+(make-coding-system
+ 'arabic-iso-8bit-with-esc 'iso2022  ;; GNU's iso-8859-6 is
+                                     ;; iso2022-compatible.
+ "ISO-8859-6 (Arabic)"
+ '(charset-g0 ascii
+   charset-g1 arabic-iso8859-6
+   charset-g2 t
+   charset-g3 t
+   no-iso6429 t
+   mnemonic "MIME/Arbc"))
+
--- a/lisp/mule/latin.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/latin.el	Sun Aug 10 23:24:15 2008 +0200
@@ -957,11 +957,12 @@
   for ((charset codesys default-input nice-charset-1 nice-charset-2
                 ;; supported-langs is a list if the doc string is replaced
                 ;; entirely
-                supported-langs) 
+                supported-langs invalid-sequence-coding-system) 
        langenvs) in
   '(((latin-iso8859-1 iso-8859-1 "latin-1-prefix" "Latin-1" "ISO-8859-1"
 " Danish, Dutch, English, Faeroese, Finnish, French, German, Icelandic,
- Irish, Italian, Norwegian, Portuguese, Spanish, and Swedish.")
+ Irish, Italian, Norwegian, Portuguese, Spanish, and Swedish."
+      windows-1252)
      (("Danish" "da")
       ("Dutch" "nl" "TUTORIAL.nl")
       ("Faeroese" "fo")
@@ -1024,6 +1025,8 @@
      (coding-system ,codesys)
      (coding-priority ,codesys)
      (native-coding-system ,codesys)
+     (invalid-sequence-coding-system ,(or invalid-sequence-coding-system
+                                          codesys))
      (documentation . ,(if (listp supported-langs) (car supported-langs)
 			 (format "\
 Generic language environment for %s (%s)." nice-charset-1 nice-charset-2))))
--- a/lisp/mule/mule-category.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/mule-category.el	Sun Aug 10 23:24:15 2008 +0200
@@ -244,7 +244,6 @@
     (latin-iso8859-4	?l)
     (latin-iso8859-9	?l)
     (cyrillic-iso8859-5 ?y "Cyrillic character set")
-    (arabic-iso8859-6	?b "Arabic character set")
     (greek-iso8859-7	?g "Greek character set")
     (hebrew-iso8859-8	?w "Hebrew character set")
     (katakana-jisx0201	?k "Japanese 1-byte Katakana character set")
--- a/lisp/mule/mule-cmds.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/mule-cmds.el	Sun Aug 10 23:24:15 2008 +0200
@@ -225,7 +225,15 @@
 
                      If there is no value for this property, the MS Windows
                      locale is assumed to have the same name as the
-                     language environment."
+                     language environment.
+
+  invalid-sequence-coding-system
+                     VALUE is a fixed-width 8-bit coding system used to
+                     display Unicode error sequences (using a face to make
+                     it clear that the data is invalid).  In Western Europe
+                     this is normally windows-1252; in the Russia and the
+                     former Soviet Union koi8-ru or windows-1251 makes more
+                     sense."
   (if (symbolp lang-env)
       (setq lang-env (symbol-name lang-env)))
   (let (lang-slot prop-slot)
@@ -760,6 +768,25 @@
     (if (functionp func)
 	(funcall func)))
 
+  (let ((invalid-sequence-coding-system
+         (get-language-info language-name 'invalid-sequence-coding-system))
+        (disp-table (specifier-instance current-display-table))
+        glyph)
+    (when (consp invalid-sequence-coding-system)
+      (setq invalid-sequence-coding-system
+            (car invalid-sequence-coding-system)))
+    (map-char-table
+     #'(lambda (key entry)
+         (setq glyph (make-glyph
+                      (vector
+                       'string :data
+                       (decode-coding-string (string entry)
+                                             invalid-sequence-coding-system))))
+         (set-glyph-face glyph 'unicode-invalid-sequence-warning-face)
+         (put-char-table key glyph disp-table)
+         nil)
+     unicode-error-default-translation-table))
+
   ;; Fit the charsets preferences in unicode conversions for the
   ;; language environment.
   (set-language-unicode-precedence-list
--- a/lisp/mule/mule-msw-init-late.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/mule-msw-init-late.el	Sun Aug 10 23:24:15 2008 +0200
@@ -37,7 +37,6 @@
 	   (greek-iso8859-7 . "Greek") 
 	   (latin-iso8859-9 . "Turkish")
 	   (hebrew-iso8859-8 . "Hebrew")
-	   (arabic-iso8859-6 . "Arabic")
 	   (latin-iso8859-4 . "Baltic")
 	   (vietnamese-viscii-lower . "Viet Nam")
 	   (vietnamese-viscii-upper . "Viet Nam")
--- a/lisp/mule/mule-win32-init.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/mule/mule-win32-init.el	Sun Aug 10 23:24:15 2008 +0200
@@ -162,7 +162,8 @@
         ; ("ANSI"        1253 no-conversion "Windows 3.1 Greek")
        ("ANSI"        1254 no-conversion "Windows 3.1 Turkish")
        ("ANSI"        1255 no-conversion "Hebrew")
-       ("ANSI"        1256 no-conversion "Arabic")
+       ;; We implement these ourselves.
+       ; ("ANSI"        1256 no-conversion "Arabic")
        ("ANSI"        1257 no-conversion "Baltic")
        ("ANSI"        1258 no-conversion "VietNam")
        ;; #### Is this category right? I don't have Lunde to hand, and the
--- a/lisp/specifier.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/specifier.el	Sun Aug 10 23:24:15 2008 +0200
@@ -988,4 +988,18 @@
 			 (specifier-instance specifier domain))))
 		   (list (cons nil inst))))))))))
 
+;; Character 160 (octal 0240) displays incorrectly under some X
+;; installations apparently due to a universally crocked font width
+;; specification.  Display it as a space since that's what's expected. 
+;;
+;; (make-char-table 'generic) instead of (make-display-table) because
+;; make-display-table isn't dumped, and this file is. 
+;;
+;; We also want the global display table to be actually globally
+;; initialised; that's why this is here, and not in x-init.el, these days.
+
+(set-specifier current-display-table 
+               #s(char-table type generic data (?\xA0 ?\x20))
+               'global)
+
 ;;; specifier.el ends here
--- a/lisp/unicode.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/unicode.el	Sun Aug 10 23:24:15 2008 +0200
@@ -73,7 +73,6 @@
 	    ("8859-3.TXT" latin-iso8859-3 #xA0 #xFF #x-80)
 	    ("8859-4.TXT" latin-iso8859-4 #xA0 #xFF #x-80)
 	    ("8859-5.TXT" cyrillic-iso8859-5 #xA0 #xFF #x-80)
-	    ("8859-6.TXT" arabic-iso8859-6 #xA0 #xFF #x-80)
 	    ("8859-7.TXT" greek-iso8859-7 #xA0 #xFF #x-80)
 	    ("8859-8.TXT" hebrew-iso8859-8 #xA0 #xFF #x-80)
 	    ("8859-9.TXT" latin-iso8859-9 #xA0 #xFF #x-80)
@@ -154,12 +153,12 @@
       '(ascii control-1 latin-iso8859-1 latin-iso8859-2 latin-iso8859-15
 	greek-iso8859-7 hebrew-iso8859-8 ipa cyrillic-iso8859-5
 	latin-iso8859-16 latin-iso8859-3 latin-iso8859-4 latin-iso8859-9
-	vietnamese-viscii-lower vietnamese-viscii-upper arabic-iso8859-6
+	vietnamese-viscii-lower vietnamese-viscii-upper 
 	jit-ucs-charset-0 japanese-jisx0208 japanese-jisx0208-1978
 	japanese-jisx0212 japanese-jisx0213-1 japanese-jisx0213-2
 	chinese-gb2312 chinese-sisheng chinese-big5-1 chinese-big5-2
 	indian-is13194 korean-ksc5601 chinese-cns11643-1 chinese-cns11643-2
-	chinese-isoir165 arabic-1-column arabic-2-column arabic-digit
+	chinese-isoir165 
 	composite ethiopic indian-1-column indian-2-column jit-ucs-charset-0
 	katakana-jisx0201 lao thai-tis620 thai-xtis tibetan tibetan-1-column
 	latin-jisx0201 chinese-cns11643-3 chinese-cns11643-4
@@ -526,7 +525,7 @@
 To transform XEmacs Unicode error sequences to the Latin-1 characters that
 correspond to the octets on disk, you can use this variable.  ")
 
-(defvar unicode-error-sequence-regexp-range
+(defvar unicode-invalid-sequence-regexp-range
   (and (featurep 'mule)
        (format "%c%c-%c"
                (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 0)
@@ -564,7 +563,7 @@
     ;; Comment out until the issue in
     ;; 18179.49815.622843.336527@parhasard.net is fixed.
     (assert t ; (re-search-forward (concat "[" 
-              ;                        unicode-error-sequence-regexp-range
+              ;                        unicode-invalid-sequence-regexp-range
               ;                        "]"))
             nil
             (format "Could not find char ?\\x%x in buffer" i))))
@@ -586,12 +585,12 @@
 	  (setq begin
 		(progn
 		  (skip-chars-forward
-		   (concat "^" unicode-error-sequence-regexp-range))
+		   (concat "^" unicode-invalid-sequence-regexp-range))
 		  (point))
 		end (and (not (= (point) (point-max)))
 			 (progn
 			   (skip-chars-forward
-			    unicode-error-sequence-regexp-range)
+			    unicode-invalid-sequence-regexp-range)
 			   (point))))
 	  (if end
 	      (funcall frob-function begin end))))))
@@ -611,6 +610,9 @@
        (translate-region start finish table))
      begin end buffer))
 
+;; Sure would be nice to be able to use defface here. 
+(copy-face 'highlight 'unicode-invalid-sequence-warning-face)
+
 (unless (featurep 'mule)
   ;; We do this in such a roundabout way--instead of having the above defun
   ;; and defvar calls inside a (when (featurep 'mule) ...) form--to have
@@ -619,8 +621,8 @@
   ;; Lisp.
   (mapcar #'unintern
           '(ccl-encode-to-ucs-2 unicode-error-default-translation-table
-            unicode-error-sequence-regexp-range
-            frob-unicode-errors-region unicode-error-translate-region)))
+            unicode-invalid-regexp-range frob-unicode-errors-region
+            unicode-error-translate-region)))
 
 ;; #### UTF-7 is not yet implemented, and it's tricky to do.  There's
 ;; an implementation in appendix A.1 of the Unicode Standard, Version
--- a/lisp/x-init.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/lisp/x-init.el	Sun Aug 10 23:24:15 2008 +0200
@@ -312,15 +312,4 @@
   (if (equal display "") (setq display nil))
   (make-frame-on-device 'x display props))
 
-;; Character 160 (octal 0240) displays incorrectly under X apparently
-;; due to a universally crocked font width specification.  Display it
-;; as a space since that's what seems to be expected.
-;;
-;; (make-char-table 'generic) instead of (make-display-table) because
-;; make-display-table isn't dumped, and this file is. 
-
-(let ((tab (make-char-table 'generic)))
-  (put-char-table 160 " " tab)
-  (set-specifier current-display-table tab 'global 'x))
-
 ;;; x-init.el ends here
--- a/src/ChangeLog	Sun Aug 03 23:21:31 2008 +0200
+++ b/src/ChangeLog	Sun Aug 10 23:24:15 2008 +0200
@@ -1,3 +1,15 @@
+2008-08-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* objects-xlike-inc.c (charset_table): Remove the entry for
+	Vcharset_arabic_iso8859_7, thank you Robert Delius Royar.
+
+2008-08-05  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* mule-charset.c (complex_vars_of_mule_charset): 
+	Remove Vcharset_arabic_iso8859_7.
+	* lisp.h: Remove Vcharset_arabic_iso8859_7.
+	See commentary in lisp/mule/iso-with-esc.el for motivation. 
+
 2008-08-03  Mats Lidell  <matsl@xemacs.org>
 
 	* config.h.in: Renamed USE_XFT_GAUGE to USE_XFT_GAUGES in sync
--- a/src/lisp.h	Sun Aug 03 23:21:31 2008 +0200
+++ b/src/lisp.h	Sun Aug 10 23:24:15 2008 +0200
@@ -5229,7 +5229,6 @@
 extern Lisp_Object Vcharset_latin_iso8859_4;
 extern Lisp_Object Vcharset_thai_tis620;
 extern Lisp_Object Vcharset_greek_iso8859_7;
-extern Lisp_Object Vcharset_arabic_iso8859_6;
 extern Lisp_Object Vcharset_hebrew_iso8859_8;
 extern Lisp_Object Vcharset_katakana_jisx0201;
 extern Lisp_Object Vcharset_latin_jisx0201;
--- a/src/mule-charset.c	Sun Aug 03 23:21:31 2008 +0200
+++ b/src/mule-charset.c	Sun Aug 10 23:24:15 2008 +0200
@@ -47,7 +47,6 @@
 Lisp_Object Vcharset_latin_iso8859_4;
 Lisp_Object Vcharset_thai_tis620;
 Lisp_Object Vcharset_greek_iso8859_7;
-Lisp_Object Vcharset_arabic_iso8859_6;
 Lisp_Object Vcharset_hebrew_iso8859_8;
 Lisp_Object Vcharset_katakana_jisx0201;
 Lisp_Object Vcharset_latin_jisx0201;
@@ -94,7 +93,6 @@
   Qlatin_iso8859_4,
   Qthai_tis620,
   Qgreek_iso8859_7,
-  Qarabic_iso8859_6,
   Qhebrew_iso8859_8,
   Qkatakana_jisx0201,
   Qlatin_jisx0201,
@@ -1112,7 +1110,6 @@
   DEFSYMBOL (Qlatin_iso8859_4);
   DEFSYMBOL (Qthai_tis620);
   DEFSYMBOL (Qgreek_iso8859_7);
-  DEFSYMBOL (Qarabic_iso8859_6);
   DEFSYMBOL (Qhebrew_iso8859_8);
   DEFSYMBOL (Qkatakana_jisx0201);
   DEFSYMBOL (Qlatin_jisx0201);
@@ -1236,15 +1233,6 @@
 		  build_msg_string ("ISO8859-7 (Greek)"),
 		  build_msg_string ("ISO8859-7 (Greek)"),
 		  vector1(build_string("iso8859-7")), 0, 0);
-  staticpro (&Vcharset_arabic_iso8859_6);
-  Vcharset_arabic_iso8859_6 =
-    make_charset (LEADING_BYTE_ARABIC_ISO8859_6, Qarabic_iso8859_6, 2,
-		  CHARSET_TYPE_96, 1, 1, 'G',
-		  CHARSET_RIGHT_TO_LEFT,
-		  build_string ("ISO8859-6"),
-		  build_msg_string ("ISO8859-6 (Arabic)"),
-		  build_msg_string ("ISO8859-6 (Arabic)"),
-		  vector1(build_string ("iso8859-6")), 0, 0);
   staticpro (&Vcharset_hebrew_iso8859_8);
   Vcharset_hebrew_iso8859_8 =
     make_charset (LEADING_BYTE_HEBREW_ISO8859_8, Qhebrew_iso8859_8, 2,
--- a/src/objects-xlike-inc.c	Sun Aug 03 23:21:31 2008 +0200
+++ b/src/objects-xlike-inc.c	Sun Aug 10 23:24:15 2008 +0200
@@ -358,7 +358,6 @@
     { &Vcharset_latin_iso8859_9, NULL, NULL },
     { &Vcharset_latin_iso8859_15, NULL, NULL },
     { &Vcharset_thai_tis620, NULL, NULL },
-    { &Vcharset_arabic_iso8859_6, NULL, NULL },
     { &Vcharset_hebrew_iso8859_8, "Hebrew", "he" },
     { &Vcharset_cyrillic_iso8859_5, NULL, NULL },
     /* #### these probably are not quite right */
--- a/tests/ChangeLog	Sun Aug 03 23:21:31 2008 +0200
+++ b/tests/ChangeLog	Sun Aug 10 23:24:15 2008 +0200
@@ -1,3 +1,9 @@
+2008-08-10  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* automated/mule-tests.el (featurep): Update the list of character
+	sets in etc/HELLO to reflect that we've deleted the
+	XEmacs-specific Arabic character sets.
+
 2008-05-21  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* automated/mule-tests.el (featurep): 
--- a/tests/automated/mule-tests.el	Sun Aug 03 23:21:31 2008 +0200
+++ b/tests/automated/mule-tests.el	Sun Aug 10 23:24:15 2008 +0200
@@ -527,20 +527,20 @@
              ;; irrelevant.
              (sort (charsets-in-region (point-min) (point-max))
                    #'string<)
-             '(arabic-1-column arabic-2-column ascii chinese-big5-1
-               chinese-gb2312 cyrillic-iso8859-5 ethiopic greek-iso8859-7
-               hebrew-iso8859-8 japanese-jisx0208 japanese-jisx0212
-               katakana-jisx0201 korean-ksc5601 latin-iso8859-1
-               latin-iso8859-2 thai-xtis vietnamese-viscii-lower)))
+             '(ascii chinese-big5-1 chinese-gb2312 cyrillic-iso8859-5
+               ethiopic greek-iso8859-7 hebrew-iso8859-8 japanese-jisx0208
+               japanese-jisx0212 jit-ucs-charset-0 katakana-jisx0201
+               korean-ksc5601 latin-iso8859-1 latin-iso8859-2 thai-xtis
+               vietnamese-viscii-lower)))
     (Assert (equal 
              (sort (charsets-in-string (buffer-substring (point-min)
 							 (point-max)))
                    #'string<)
-             '(arabic-1-column arabic-2-column ascii chinese-big5-1
-               chinese-gb2312 cyrillic-iso8859-5 ethiopic greek-iso8859-7
-               hebrew-iso8859-8 japanese-jisx0208 japanese-jisx0212
-               katakana-jisx0201 korean-ksc5601 latin-iso8859-1
-               latin-iso8859-2 thai-xtis vietnamese-viscii-lower))))
+             '(ascii chinese-big5-1 chinese-gb2312 cyrillic-iso8859-5
+               ethiopic greek-iso8859-7 hebrew-iso8859-8 japanese-jisx0208
+               japanese-jisx0212 jit-ucs-charset-0 katakana-jisx0201
+               korean-ksc5601 latin-iso8859-1 latin-iso8859-2 thai-xtis
+               vietnamese-viscii-lower))))
 
   ;;---------------------------------------------------------------
   ;; Language environments, and whether the specified values are sane.