Add all the emacs format encodings. From Douglas.
authorRaymond Toy <toy.raymond@gmail.com>
Sat, 26 May 2012 15:24:22 +0000 (08:24 -0700)
committerRaymond Toy <toy.raymond@gmail.com>
Sat, 26 May 2012 15:24:22 +0000 (08:24 -0700)
src/code/fd-stream.lisp

index 820c22d..85aa0b8 100644 (file)
 ;;;; Utility functions (misc routines, etc)
 
 (defparameter *stream-encoding-file-attribute-translations*
-  '(;; Emacs specific codings.
-    ((:iso-8859-1 :unix)
-     "latin-1" "latin-1-unix" "iso-latin-1-unix" "iso-8859-1-unix")
-    ((:iso-8859-1 :dos)
-     "latin-1" "latin-1-dos" "iso-latin-1-dos" "iso-8859-1-dos")
-    ((:iso-8859-1 :max)
-     "latin-1" "latin-1-mac" "iso-latin-1-mac" "iso-8859-1-mac")
-    ((:utf-8 :unix) "utf-8-unix")
-    ((:utf-8 :dos) "utf-8-dos")
-    ((:utf-8 :mac) "utf-8-mac")
-    ((:euc-jp :unix) "euc-jp-unix")
-    ((:euc-jp :dos) "euc-jp-dos")
-    ((:euc-jp :mac) "euc-jp-mac")
-    )
+  (flet ((emacs-coding (target &rest list)
+          (flet ((add-suffix (list suffix)
+                   (let ((list* nil))
+                     (dolist (coding list)
+                       (push (format nil "~A-~A" coding suffix) list*))
+                     (nreverse list*))))
+            `((,target ,@list)
+              ((,target :unix) ,@(add-suffix list "unix"))
+              ((,target :dos) ,@(add-suffix list "dos"))
+              ((,target :mac) ,@(add-suffix list "mac"))))))
+    `(;; Emacs specific codings.
+      ,@(emacs-coding :utf-8 "utf-8" "utf-8-with-signature" "mule-utf-8")
+      ,@(emacs-coding :utf-16le "utf-16le" "utf-16-le")
+      ,@(emacs-coding :utf-16be "utf-16be" "utf-16-be")
+      ,@(emacs-coding :utf-16 "utf-16" "utf-16le-with-signature" "utf-16be-with-signature")
+      ,@(emacs-coding :us-ascii "us-ascii" "iso-safe")
+      ,@(emacs-coding :iso-8859-1 "iso-8859-1" "latin-1" "iso-latin-1")
+      ,@(emacs-coding :iso-8859-1 "binary" "no-conversion" "raw-text")
+      ,@(emacs-coding :iso-8859-2 "iso-8859-2" "latin-2" "iso-latin-2")
+      ,@(emacs-coding :iso-8859-3 "iso-8859-3" "latin-3" "iso-latin-3")
+      ,@(emacs-coding :iso-8859-4 "iso-8859-4" "latin-4" "iso-latin-4")
+      ,@(emacs-coding :iso-8859-5 "iso-8859-5" "cyrillic-iso-8bit")
+      ,@(emacs-coding :iso-8859-6 "iso-8859-6")
+      ,@(emacs-coding :iso-8859-7 "iso-8859-7" "greek-iso-8bit")
+      ,@(emacs-coding :iso-8859-8 "iso-8859-8" "hebrew-iso-8bit")
+      ,@(emacs-coding :iso-8859-9 "iso-8859-9" "latin-5" "iso-latin-5")
+      ,@(emacs-coding :iso-8859-10 "iso-8859-10" "latin-6" "iso-latin-6")
+      ,@(emacs-coding :iso-8859-11 "iso-8859-11")
+      ,@(emacs-coding :iso-8859-13 "iso-8859-13" "latin-7" "iso-latin-7")
+      ,@(emacs-coding :iso-8859-14 "iso-8859-14" "latin-8" "iso-latin-8")
+      ,@(emacs-coding :iso-8859-15 "iso-8859-15" "latin-9" "iso-latin-9" "latin-0")
+      ,@(emacs-coding :iso-8859-16 "iso-8859-16" "latin-10" "iso-latin-10")
+      ,@(emacs-coding :cp437 "cp437" "ibm437")
+      ,@(emacs-coding :cp850 "cp850" "ibm850")
+      ,@(emacs-coding :cp852 "cp852" "ibm852")
+      ,@(emacs-coding :cp857 "cp857" "ibm857")
+      ,@(emacs-coding :cp858 "cp858")
+      ,@(emacs-coding :cp860 "cp860" "ibm860")
+      ,@(emacs-coding :cp861 "cp861" "ibm861")
+      ,@(emacs-coding :cp862 "cp862" "ibm862")
+      ,@(emacs-coding :cp863 "cp863" "ibm863")
+      ,@(emacs-coding :cp865 "cp865" "ibm865")
+      ,@(emacs-coding :roman8 "roman8" "hp-roman8")
+      ,@(emacs-coding :macintosh "mac-roman")
+      ,@(emacs-coding :utf-7 "utf-7")
+      ,@(emacs-coding :cp1250 "cp1250" "windows-1250")
+      ,@(emacs-coding :cp1251 "cp1251" "windows-1251")
+      ,@(emacs-coding :cp1252 "cp1252" "windows-1252")
+      ,@(emacs-coding :cp1253 "cp1253" "windows-1253")
+      ,@(emacs-coding :cp1254 "cp1254" "windows-1254")
+      ,@(emacs-coding :cp1255 "cp1255" "windows-1255")
+      ,@(emacs-coding :cp1256 "cp1256" "windows-1256")
+      ,@(emacs-coding :cp1257 "cp1257" "windows-1257")
+      ,@(emacs-coding :cp1258 "cp1258" "windows-1258")
+      ,@(emacs-coding :cp851 "cp851" "ibm851")
+      ,@(emacs-coding :cp737 "cp737")
+      ,@(emacs-coding :cp869 "cp869" "ibm869")
+      ,@(emacs-coding :cp866 "cp866")
+      ,@(emacs-coding :koi8 "koi8" "koi8-r" "cyrillic-koi8" "cp878")
+      ,@(emacs-coding :koi8-u "koi8-u")
+      ,@(emacs-coding :koi8-t "koi8-t")
+      ,@(emacs-coding :cp1125 "cp1125" "ruscii" "cp866u")
+      ,@(emacs-coding :cp855 "cp855" "ibm855")
+      ,@(emacs-coding :mik "mik")
+      ,@(emacs-coding :pt154 "pt154")
+      ,@(emacs-coding :ebcdic-us "ebcdic-us")
+      ,@(emacs-coding :ebcdic-uk "ebcdic-uk")
+      ,@(emacs-coding :cp1047 "cp1047" "ibm1047")
+      ,@(emacs-coding :iso-2022-cn "iso-2022-cn" "chinese-iso-7bit")
+      ,@(emacs-coding :iso-2022-cn-ext "iso-2022-cn-ext")
+      ,@(emacs-coding :gb2312 "gb2312" "cn-gb" "euc-cn" "euc-china"
+                     "cn-gb-2312" "chinese-iso-8bit")
+      ,@(emacs-coding :big5 "big5" "cp950" "cn-big5" "chinese-big5")
+      ,@(emacs-coding :big5hkscs "big5-hkscs" "cn-big5-hkscs" "chinese-big5-hkscs")
+      ,@(emacs-coding :euc-tw "euc-tw" "euc-taiwan")
+      ,@(emacs-coding :cp936 "cp936" "windows-936" "gbk" "chinese-gbk")
+      ,@(emacs-coding :gb18030 "gb18030" "chinese-gb18003")
+      ,@(emacs-coding :cp874 "ibm874" "cp874")
+      ,@(emacs-coding :tis-620 "tis-620" "tis620" "th-tis620" "thai-tis620")
+      ,@(emacs-coding :viscii "viscii" "vietnamese-viscii")
+      ,@(emacs-coding :tcvn "tcvn-5712" "tcvn" "vietnamese-tcvn")
+      ,@(emacs-coding :georgian-ps "georgian-ps")
+      ,@(emacs-coding :georgian-academy "georgian-academy")
+      ,@(emacs-coding :iso-2022-jp "iso-2022-jp" "junet")
+      ,@(emacs-coding :iso-2022-jp-2 "iso-2022-jp-2")
+      ,@(emacs-coding :shift-jis "shift_jis" "sjis" "japanese-shift-jis")
+      ,@(emacs-coding :cp932 "cp932" "japanese-cp932")
+      ,@(emacs-coding :euc-jp "euc-jp" "euc-japan" "euc-japan-1990" "japanese-iso-8bit")
+      ,@(emacs-coding :euc-ms "eucjp-ms")
+      ,@(emacs-coding :iso-2022-jp-3 "iso-2022-jp-3" "iso-2022-jp-2004")
+      ,@(emacs-coding :euc-jisx0213 "euc-jisx0213" "euc-jis-2004")
+      ,@(emacs-coding :euc-korea "euc-korea" "euc-kr" "korean-iso-8bit")
+      ,@(emacs-coding :iso-2022-kr "iso-2022-kr" "korean-iso-7bit-lock")
+      ,@(emacs-coding :cp949 "cp949" "korean-cp949")
+      ))
   "List of coding translations used by 'stream-encoding-file-attribute to map
   the read file coding into a native external-format.  Each element is a list of
   a native external-format followed by a list of coding strings that are to be