Comments? Objections?
xemacs-packages/fsf-compat/ChangeLog addition:
2006-11-11 Aidan Kehoe <kehoea(a)parhasard.net>
* mule-unicode-charsets.el:
Provide support for some FSF-specific Unicode-coverage Mule
charsets.
XEmacs Packages source patch:
Diff command: cvs -q diff -Nu
Files affected: xemacs-packages/fsf-compat/mule-unicode-charsets.el
===================================================================
RCS
Index: xemacs-packages/fsf-compat/mule-unicode-charsets.el
===================================================================
RCS file: mule-unicode-charsets.el
diff -N mule-unicode-charsets.el
--- /dev/null Sat Nov 11 19:14:42 2006
+++ mule-unicode-charsets.el Sat Nov 11 19:14:19 2006
@@ -0,0 +1,95 @@
+;;; mule-unicode-charsets.el --- Provide the FSF's Mule Unicode subsets in
+;;; XEmacs.
+
+;; Copyright (C) 2006 by Free Software Foundation, Inc.
+
+;; Author: Aidan Kehoe <kehoea(a)parhasard.net>
+;; Keywords: Unicode, Mule
+
+;; 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: Not in FSF
+
+;;; Commentary:
+
+;;; Code:
+
+(define-ccl-program fsf-compat-ccl-encode-to-ucs-2
+ `(1
+ ((r1 = (r1 << 8))
+ (r1 = (r1 | r2))
+ (mule-to-unicode r0 r1)
+ (r1 = (r0 >> 8))
+ (r2 = (r0 & 255))))
+ "CCL program to transform Mule characters to UCS-2.")
+
+(defun fsf-compat-init-mule-unicode-charsets ()
+ "Make some Mule character sets that the FSF uses available in XEmacs.
+
+These character sets cover some Unicode code space explicitly; we use a
+different solution to the same problem, so you should only need these
+character sets if you're editing FSF source. "
+ (let (charset-symbol)
+ (loop
+ for (first-ucs last-ucs final) in '((#x0100 #x24FF ?1)
+ (#x2500 #x33ff ?2)
+ (#xE000 #xFFFF ?3))
+ do
+ (setq charset-symbol
+ (intern (format "mule-unicode-%04x-%04x"
+ first-ucs last-ucs)))
+ (make-charset charset-symbol
+ (format
+ "Unicode subset (U+%04X..U+%04X) for FSF compatibility."
+ first-ucs last-ucs)
+ (list 'dimension 2
+ 'registries ["iso10646-1"]
+ 'chars 96
+ 'columns 1
+ 'direction 'l2r
+ 'final final
+ 'graphic 0
+ 'short-name (format "Unicode subset %c" final)
+ 'long-name (format "Unicode subset (U+%04X..U+%04X)"
+ first-ucs last-ucs)
+ 'ccl-program 'fsf-compat-ccl-encode-to-ucs-2))
+ ;; The names of the character sets lie, at least as of GNU Emacs
+ ;; 22.0.50.3. The difference appears to be that they keep assigning
+ ;; code points until the end of the 96x96 space of the character sets.
+ (loop for ku from 32 to 127 do
+ (loop for ten from 32 to 127 do
+ (set-unicode-conversion (make-char charset-symbol ku ten) first-ucs)
+ (incf first-ucs))))))
+
+;; The following code creates a form, which, when evaluated in GNU Emacs,
+;; checks our compatibility with their three character sets.
+
+; (progn
+; (insert "(require 'cl)\n\n(assert\n (and\n")
+; (loop
+; for charset-symbol in '(mule-unicode-2500-33ff
+; mule-unicode-e000-ffff
+; mule-unicode-0100-24ff)
+; do
+; (loop for ku from 32 to 127 do
+; (loop for ten from 32 to 127 do
+; (insert (format
+; " (eq (encode-char (make-char '%s %d %d) 'ucs) #x%04X)\n"
+; charset-symbol ku ten
+; (encode-char (make-char charset-symbol ku ten) 'ucs))))))
+; (insert " ) nil \"We're incompatible with the FSF!\")"))
--
Santa Maradona, priez pour moi!
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches