update.
[elisp/apel.git] / emu.el
diff --git a/emu.el b/emu.el
index 030900c..b6c36dc 100644 (file)
--- a/emu.el
+++ b/emu.el
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs
+;; Keywords: emulation, compatibility, Nemacs, MULE, Emacs/mule, XEmacs
 
 ;; This file is part of emu.
 
 
 ;; This file is part of emu.
 
@@ -19,8 +19,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Code:
 
 
 ;;; Code:
 
   (defalias 'tl:overlay-put 'overlay-put)
   (make-obsolete 'tl:overlay-put 'overlay-put)
   )
   (defalias 'tl:overlay-put 'overlay-put)
   (make-obsolete 'tl:overlay-put 'overlay-put)
   )
-(unless (fboundp 'tl:overlay-put)
+(unless (fboundp 'tl:overlay-buffer)
   (defalias 'tl:overlay-buffer 'overlay-buffer)
   (make-obsolete 'tl:overlay-buffer 'overlay-buffer)
   )
 
 (require 'poem)
 (require 'mcharset)
   (defalias 'tl:overlay-buffer 'overlay-buffer)
   (make-obsolete 'tl:overlay-buffer 'overlay-buffer)
   )
 
 (require 'poem)
 (require 'mcharset)
+(require 'invisible)
 
 (defsubst char-list-to-string (char-list)
   "Convert list of character CHAR-LIST to string."
 
 (defsubst char-list-to-string (char-list)
   "Convert list of character CHAR-LIST to string."
 CHAR can be any multilingual character
 TABLE defaults to the current buffer's category table."
                (mapconcat (lambda (chr)
 CHAR can be any multilingual character
 TABLE defaults to the current buffer's category table."
                (mapconcat (lambda (chr)
-                            (char-to-string (int-char chr)))
+                            (if (integerp chr)
+                                (char-to-string (int-char chr))
+                              (char-to-string chr)))
+                          ;; `char-category-list' returns a list of
+                          ;; characters in XEmacs 21.2.25 and later,
+                          ;; otherwise integers.
                           (char-category-list character)
                           ""))
              )
                           (char-category-list character)
                           ""))
              )
@@ -117,7 +123,7 @@ TABLE defaults to the current buffer's category table."
              ))
        )
       ((boundp 'NEMACS)
              ))
        )
       ((boundp 'NEMACS)
-       ;; for NEmacs and NEpoch
+       ;; for Nemacs and Nepoch
 
        ;; old MULE emulation
        (defconst *noconv*    0)
 
        ;; old MULE emulation
        (defconst *noconv*    0)
@@ -129,8 +135,8 @@ TABLE defaults to the current buffer's category table."
        
        (defun code-convert-string (str ic oc)
         "Convert code in STRING from SOURCE code to TARGET code,
        
        (defun code-convert-string (str ic oc)
         "Convert code in STRING from SOURCE code to TARGET code,
-On successful converion, returns the result string,
-else returns nil. [emu-nemacs.el; Mule emulating function]"
+On successful conversion, returns the result string,
+else returns nil."
         (if (not (eq ic oc))
             (convert-string-kanji-code str ic oc)
           str))
         (if (not (eq ic oc))
             (convert-string-kanji-code str ic oc)
           str))
@@ -138,7 +144,7 @@ else returns nil. [emu-nemacs.el; Mule emulating function]"
        (defun code-convert-region (beg end ic oc)
         "Convert code of the text between BEGIN and END from SOURCE
 to TARGET. On successful conversion returns t,
        (defun code-convert-region (beg end ic oc)
         "Convert code of the text between BEGIN and END from SOURCE
 to TARGET. On successful conversion returns t,
-else returns nil. [emu-nemacs.el; Mule emulating function]"
+else returns nil."
         (if (/= ic oc)
             (save-excursion
               (save-restriction
         (if (/= ic oc)
             (save-excursion
               (save-restriction
@@ -156,7 +162,7 @@ else returns nil. [emu-nemacs.el; Mule emulating function]"
        
        (defun code-convert-string (str ic oc)
         "Convert code in STRING from SOURCE code to TARGET code,
        
        (defun code-convert-string (str ic oc)
         "Convert code in STRING from SOURCE code to TARGET code,
-On successful converion, returns the result string,
+On successful conversion, returns the result string,
 else returns nil. [emu-latin1.el; old MULE emulating function]"
         str)
 
 else returns nil. [emu-latin1.el; old MULE emulating function]"
         str)
 
@@ -192,8 +198,7 @@ It is obsolete, so don't use it."))
 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.
 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.
-\[emu-nemacs.el]"
+  This function ensures that none of these modifications will take place."
   (as-binary-input-file
    ;; Returns list absolute file name and length of data inserted.
    (insert-file-contents-literally filename visit beg end replace)))
   (as-binary-input-file
    ;; Returns list absolute file name and length of data inserted.
    (insert-file-contents-literally filename visit beg end replace)))
@@ -223,10 +228,35 @@ find-file-hooks, etc.
        (autoload 'enriched-decode "tinyrich")
        ))
 
        (autoload 'enriched-decode "tinyrich")
        ))
 
+(if (or (and (eq emacs-major-version 19)
+            (>= emacs-minor-version (if (featurep 'xemacs) 14 29)))
+       (and (eq emacs-major-version 20)
+            (< emacs-minor-version (if (featurep 'xemacs) 3 1))))
+    (eval-after-load "enriched"
+      '(if (fboundp 'si:enriched-encode)
+          nil
+        (fset 'si:enriched-encode (symbol-function 'enriched-encode))
+        (defun enriched-encode (from to &optional orig-buf)
+          (let* ((si:enriched-initial-annotation enriched-initial-annotation)
+                 (enriched-initial-annotation
+                  (if (stringp si:enriched-initial-annotation)
+                      si:enriched-initial-annotation
+                    (function
+                     (lambda ()
+                       (save-excursion
+                         ;; Eval this in the buffer we are annotating.  This
+                         ;; fixes a bug which was saving incorrect File-Width
+                         ;; information, since we were looking at local
+                         ;; variables in the wrong buffer.
+                         (if orig-buf (set-buffer orig-buf))
+                         (funcall si:enriched-initial-annotation)))))))
+            (si::enriched-encode from to))))))
+
 
 ;;; @ end
 ;;;
 
 
 ;;; @ end
 ;;;
 
-(provide 'emu)
+(require 'product)
+(product-provide (provide 'emu) (require 'apel-ver))
 
 ;;; emu.el ends here
 
 ;;; emu.el ends here