* EMU-ELS (emu-modules): Add `static'.
[elisp/apel.git] / poem-xm.el
index 1ce5eec..4c0ac8d 100644 (file)
@@ -1,4 +1,4 @@
-;;; poem-xm.el --- poem implementation for XEmacs-mule
+;;; poem-xm.el --- poem module for XEmacs-mule; -*-byte-compile-dynamic: t;-*-
 
 ;; Copyright (C) 1998 Free Software Foundation, Inc.
 
@@ -24,6 +24,8 @@
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'poe))
 (require 'poem-20)
 
 
@@ -34,6 +36,9 @@
 (and (coding-system-property 'iso-2022-jp 'input-charset-conversion)
      (copy-coding-system 'iso-2022-7bit 'iso-2022-jp))
 
+(and (coding-system-property 'iso-2022-jp-dos 'input-charset-conversion)
+     (copy-coding-system 'iso-2022-7bit-dos 'iso-2022-jp-dos))
+
 ;; Redefine if -{dos|mac|unix} is not found.
 (or (find-coding-system 'raw-text-dos)
     (copy-coding-system 'no-conversion-dos 'raw-text-dos))
        mnemonic "ISO7/SS2"
        eol-type nil)))
 
+(or (find-coding-system 'gb2312-dos)
+    (copy-coding-system 'cn-gb-2312-dos 'gb2312-dos))
+(or (find-coding-system 'gb2312-mac)
+    (copy-coding-system 'cn-gb-2312-mac 'gb2312-mac))
+(or (find-coding-system 'gb2312-unix)
+    (copy-coding-system 'cn-gb-2312-unix 'gb2312-unix))
+
 (or (find-coding-system 'euc-kr-dos)
     (make-coding-system
      'euc-kr 'iso2022
                  mnemonic "ko/EUC"
                  eol-type nil)))
 
+;; (when (= (function-max-args 'coding-system-list) 0)
+;;   (or (fboundp 'coding-system-list-internal)
+;;       (fset 'coding-system-list-internal
+;;             (symbol-function 'coding-system-list)))
+;;   (defun coding-system-list (&optional base-only)
+;;     "Return a list of all existing coding systems.
+;; If optional arg BASE-ONLY is non-nil, only base coding systems are listed."
+;;     (if base-only
+;;         (let (dest
+;;               (rest (coding-system-list-internal))
+;;               cs)
+;;           (while rest
+;;             (setq cs (coding-system-name (coding-system-base (pop rest))))
+;;             (or (memq cs dest)
+;;                 (push cs dest))
+;;             )
+;;           dest)
+;;       (coding-system-list-internal)))
+;;   )
+
+
+;;; @ without code-conversion
+;;;
+
+(defun insert-file-contents-as-binary (filename
+                                      &optional visit beg end replace)
+  "Like `insert-file-contents', but only reads in the file literally.
+A buffer may be modified in several ways after reading into the buffer,
+to Emacs features such as format decoding, character code
+conversion, find-file-hooks, automatic uncompression, etc.
+
+This function ensures that none of these modifications will take place."
+  (let ((format-alist nil)
+       (after-insert-file-functions nil)
+       (coding-system-for-read 'binary)
+       (coding-system-for-write 'binary)
+       (jka-compr-compression-info-list nil)
+       (jam-zcat-filename-list nil)
+       (find-buffer-file-type-function
+        (if (fboundp 'find-buffer-file-type)
+            (symbol-function 'find-buffer-file-type)
+          nil)))
+    (unwind-protect
+       (progn
+         (fset 'find-buffer-file-type (lambda (filename) t))
+         (insert-file-contents filename visit beg end replace))
+      (if find-buffer-file-type-function
+         (fset 'find-buffer-file-type find-buffer-file-type-function)
+       (fmakunbound 'find-buffer-file-type)))))
+
 
 ;;; @ buffer representation
 ;;;
@@ -114,7 +176,7 @@ but the contents viewed as characters do change.
 ;;; @ string
 ;;;
 
-(defun string-to-int-list (str)
+(defun-maybe string-to-int-list (str)
   (mapcar #'char-int str))
 
 (defalias 'looking-at-as-unibyte 'looking-at)