APEL 3.4.1.
[elisp/apel.git] / emu-mule.el
index c2e5a69..1ae0651 100644 (file)
@@ -1,12 +1,12 @@
 ;;; emu-mule.el --- emu module for Mule 1.* and Mule 2.*
 
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-mule.el,v 7.55 1996/09/23 17:43:43 morioka Exp $
+;; Version: $Id: emu-mule.el,v 7.64 1997/08/30 09:42:40 morioka Exp $
 ;; Keywords: emulation, compatibility, Mule
 
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
        )
       (running-emacs-18
        (require 'emu-18)
-       (defun tl:make-overlay (beg end &optional buffer type))
-       (defun tl:overlay-put (overlay prop value))
+       (defun make-overlay (beg end &optional buffer type))
+       (defun overlay-put (overlay prop value))
        ))
 
 
 ;;; @ character set
 ;;;
 
+(defalias 'make-char 'make-character)
+
+(defalias 'find-non-ascii-charset-string 'find-charset-string)
+(defalias 'find-non-ascii-charset-region 'find-charset-region)
+
 (defalias 'charset-bytes       'char-bytes)
 (defalias 'charset-description 'char-description)
 (defalias 'charset-registry    'char-registry)
   (code-convert-region start end *internal* coding-system)
   )
 
+(defun decode-coding-region (start end coding-system)
+  "Decode the text between START and END which is encoded in CODING-SYSTEM.
+\[emu-mule.el; EMACS 20 emulating function]"
+  (code-convert-region start end coding-system *internal*)
+  )
+
+(defun encode-coding-string (str coding-system)
+  "Encode the STRING to CODING-SYSTEM.
+\[emu-mule.el; EMACS 20 emulating function]"
+  (code-convert-string str *internal* coding-system)
+  )
+
 (defun decode-coding-string (str coding-system)
   "Decode the string STR which is encoded in CODING-SYSTEM.
-\[emu-mule.el]"
+\[emu-mule.el; EMACS 20 emulating function]"
   (let ((len (length str))
        ret)
     (while (and
 
 (defalias 'detect-coding-region 'code-detect-region)
 
+(defalias 'set-buffer-file-coding-system 'set-file-coding-system)
+
 (defmacro as-binary-process (&rest body)
   (` (let (selective-display   ; Disable ^M to nl translation.
           ;; Mule
        (,@ body)
        )))
 
+(defmacro as-binary-output-file (&rest body)
+  (` (let (mc-flag
+          (file-coding-system *noconv*)
+          )
+       (,@ body)
+       )))
+
 (defalias 'set-process-input-coding-system 'set-process-coding-system)
 
 
+;;; @ binary access
+;;;
+
+(defun insert-binary-file-contents-literally
+  (filename &optional visit beg end replace)
+  "Like `insert-file-contents-literally', q.v., but don't code conversion.
+A buffer may be modified in several ways after reading into the buffer due
+to advanced Emacs features, such as file-name-handlers, format decoding,
+find-file-hooks, etc.
+  This function ensures that none of these modifications will take place."
+  (let (mc-flag
+       (file-coding-system *noconv*)
+       )
+    (insert-file-contents-literally filename visit beg end replace)
+    ))
+
+
 ;;; @ MIME charset
 ;;;
 
     (x-shiftjis      . *sjis*)
     ))
 
-(defun mime-charset-to-coding-system (charset)
+(defun mime-charset-to-coding-system (charset &optional lbt)
   (if (stringp charset)
       (setq charset (intern (downcase charset)))
     )
-  (or (cdr (assq charset mime-charset-coding-system-alist))
-      (let ((cs (intern (concat "*" (symbol-name charset) "*"))))
-       (and (coding-system-p cs) cs)
-       )))
+  (let ((cs
+        (or (cdr (assq charset mime-charset-coding-system-alist))
+            (let ((cs (intern (concat "*" (symbol-name charset) "*"))))
+              (and (coding-system-p cs) cs)
+              ))))
+    (if (or (null lbt)
+           (null cs))
+       cs
+      (intern (concat (symbol-name cs) (symbol-name lbt)))
+      )))
 
 (defun detect-mime-charset-region (start end)
   "Return MIME charset for region between START and END.