1 ;;; emu.el --- Emulation module for each Emacs variants
3 ;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
5 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
6 ;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs
8 ;; This file is part of emu.
10 ;; This program is free software; you can redistribute it and/or
11 ;; modify it under the terms of the GNU General Public License as
12 ;; published by the Free Software Foundation; either version 2, or (at
13 ;; your option) any later version.
15 ;; This program is distributed in the hope that it will be useful, but
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 ;; General Public License for more details.
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
29 (defvar running-emacs-18 (<= emacs-major-version 18))
30 (defvar running-xemacs (featurep 'xemacs))
32 (defvar running-mule-merged-emacs (and (not (boundp 'MULE))
33 (not running-xemacs) (featurep 'mule)))
34 (defvar running-xemacs-with-mule (and running-xemacs (featurep 'mule)))
36 (defvar running-emacs-19 (and (not running-xemacs) (= emacs-major-version 19)))
37 (defvar running-emacs-19_29-or-later
38 (or (and running-emacs-19 (>= emacs-minor-version 29))
39 (and (not running-xemacs)(>= emacs-major-version 20))))
41 (defvar running-xemacs-19 (and running-xemacs
42 (= emacs-major-version 19)))
43 (defvar running-xemacs-20-or-later (and running-xemacs
44 (>= emacs-major-version 20)))
45 (defvar running-xemacs-19_14-or-later
46 (or (and running-xemacs-19 (>= emacs-minor-version 14))
47 running-xemacs-20-or-later))
51 (defvar mouse-button-1 'button1)
52 (defvar mouse-button-2 'button2)
53 (defvar mouse-button-3 'button3)
55 ((>= emacs-major-version 19)
57 (defvar mouse-button-1 [mouse-1])
58 (defvar mouse-button-2 [mouse-2])
59 (defvar mouse-button-3 [down-mouse-3])
63 (defvar mouse-button-1 nil)
64 (defvar mouse-button-2 nil)
65 (defvar mouse-button-3 nil)
69 (unless (fboundp 'tl:make-overlay)
70 (defalias 'tl:make-overlay 'make-overlay)
71 (make-obsolete 'tl:make-overlay 'make-overlay)
73 (unless (fboundp 'tl:overlay-put)
74 (defalias 'tl:overlay-put 'overlay-put)
75 (make-obsolete 'tl:overlay-put 'overlay-put)
77 (unless (fboundp 'tl:overlay-put)
78 (defalias 'tl:overlay-buffer 'overlay-buffer)
79 (make-obsolete 'tl:overlay-buffer 'overlay-buffer)
85 (defsubst char-list-to-string (char-list)
86 "Convert list of character CHAR-LIST to string."
87 (apply (function string) char-list))
89 (cond ((featurep 'mule)
90 (cond ((featurep 'xemacs) ; for XEmacs with MULE
91 ;; old Mule emulating aliases
93 ;;(defalias 'char-leading-char 'char-charset)
95 (defun char-category (character)
96 "Return string of category mnemonics for CHAR in TABLE.
97 CHAR can be any multilingual character
98 TABLE defaults to the current buffer's category table."
99 (mapconcat (lambda (chr)
100 (char-to-string (int-char chr)))
101 (char-category-list character)
104 ((>= emacs-major-version 20) ; for Emacs 20
105 (defalias 'insert-binary-file-contents-literally
106 'insert-file-contents-literally)
108 ;; old Mule emulating aliases
109 (defun char-category (character)
110 "Return string of category mnemonics for CHAR in TABLE.
111 CHAR can be any multilingual character
112 TABLE defaults to the current buffer's category table."
113 (category-set-mnemonics (char-category-set character)))
115 (t ; for MULE 1.* and 2.*
120 ;; for NEmacs and NEpoch
122 ;; old MULE emulation
123 (defconst *noconv* 0)
127 (defconst *internal* 3)
128 (defconst *euc-japan* 3)
130 (defun code-convert-string (str ic oc)
131 "Convert code in STRING from SOURCE code to TARGET code,
132 On successful converion, returns the result string,
133 else returns nil. [emu-nemacs.el; Mule emulating function]"
135 (convert-string-kanji-code str ic oc)
138 (defun code-convert-region (beg end ic oc)
139 "Convert code of the text between BEGIN and END from SOURCE
140 to TARGET. On successful conversion returns t,
141 else returns nil. [emu-nemacs.el; Mule emulating function]"
145 (narrow-to-region beg end)
146 (convert-region-kanji-code beg end ic oc)))
150 ;; for Emacs 19 and XEmacs without MULE
152 ;; old MULE emulation
153 (defconst *internal* nil)
154 (defconst *ctext* nil)
155 (defconst *noconv* nil)
157 (defun code-convert-string (str ic oc)
158 "Convert code in STRING from SOURCE code to TARGET code,
159 On successful converion, returns the result string,
160 else returns nil. [emu-latin1.el; old MULE emulating function]"
163 (defun code-convert-region (beg end ic oc)
164 "Convert code of the text between BEGIN and END from SOURCE
165 to TARGET. On successful conversion returns t,
166 else returns nil. [emu-latin1.el; old MULE emulating function]"
171 ;;; @ Mule emulating aliases
173 ;;; You should not use it.
175 (or (boundp '*noconv*)
176 (defconst *noconv* 'binary
177 "Coding-system for binary.
178 This constant is defined to emulate old MULE anything older than MULE 2.3.
179 It is obsolete, so don't use it."))
182 ;;; @ without code-conversion
185 (defalias 'insert-binary-file-contents 'insert-file-contents-as-binary)
186 (make-obsolete 'insert-binary-file-contents 'insert-file-contents-as-binary)
188 (defun-maybe insert-binary-file-contents-literally (filename
191 "Like `insert-file-contents-literally', q.v., but don't code conversion.
192 A buffer may be modified in several ways after reading into the buffer due
193 to advanced Emacs features, such as file-name-handlers, format decoding,
194 find-file-hooks, etc.
195 This function ensures that none of these modifications will take place.
197 (as-binary-input-file
198 ;; Returns list absolute file name and length of data inserted.
199 (insert-file-contents-literally filename visit beg end replace)))
202 ;;; @ for text/richtext and text/enriched
205 (cond ((fboundp 'richtext-decode)
208 ((or running-emacs-19_29-or-later running-xemacs-19_14-or-later)
210 (autoload 'richtext-decode "richtext")
211 (or (assq 'text/richtext format-alist)
215 '("Extended MIME text/richtext format."
216 "Content-[Tt]ype:[ \t]*text/richtext"
217 richtext-decode richtext-encode t enriched-mode))
221 ;; don't have enriched.el
222 (autoload 'richtext-decode "tinyrich")
223 (autoload 'enriched-decode "tinyrich")