X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=emu.el;h=dfc33b1b9549dc3225e1bf689499a11911d3c876;hb=dd17f9362c2dd8e6d25cae6964ea9aa0d28a127b;hp=7cc47ebfe12b8857487d950b0976c96d1f7a9cb3;hpb=ffeba3c986971ce58ec384999c4dd88bf091887b;p=elisp%2Fapel.git diff --git a/emu.el b/emu.el index 7cc47eb..dfc33b1 100644 --- a/emu.el +++ b/emu.el @@ -1,9 +1,8 @@ ;;; emu.el --- Emulation module for each Emacs variants -;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc. +;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko -;; Version: $Id: emu.el,v 7.40 1997/03/06 21:35:37 morioka Exp $ ;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs ;; This file is part of emu. @@ -36,6 +35,17 @@ )) ))) +(defmacro defsubst-maybe (name &rest everything-else) + (or (and (fboundp name) + (not (get name 'defsubst-maybe)) + ) + (` (or (fboundp (quote (, name))) + (progn + (defsubst (, name) (,@ everything-else)) + (put (quote (, name)) 'defsubst-maybe t) + )) + ))) + (defmacro defmacro-maybe (name &rest everything-else) (or (and (fboundp name) (not (get name 'defmacro-maybe)) @@ -48,18 +58,27 @@ ))) (put 'defun-maybe 'lisp-indent-function 'defun) +(put 'defsubst-maybe 'lisp-indent-function 'defun) (put 'defmacro-maybe 'lisp-indent-function 'defun) +(defmacro defconst-maybe (name &rest everything-else) + (or (and (boundp name) + (not (get name 'defconst-maybe)) + ) + (` (or (boundp (quote (, name))) + (progn + (defconst (, name) (,@ everything-else)) + (put (quote (, name)) 'defconst-maybe t) + )) + ))) + -(or (boundp 'emacs-major-version) - (defconst emacs-major-version (string-to-int emacs-version))) -(or (boundp 'emacs-minor-version) - (defconst emacs-minor-version - (string-to-int - (substring - emacs-version - (string-match (format "%d\\." emacs-major-version) emacs-version) - )))) +(defconst-maybe emacs-major-version (string-to-int emacs-version)) +(defconst-maybe emacs-minor-version + (string-to-int + (substring emacs-version + (string-match (format "%d\\." emacs-major-version) + emacs-version)))) (defvar running-emacs-18 (<= emacs-major-version 18)) (defvar running-xemacs (string-match "XEmacs" emacs-version)) @@ -81,13 +100,22 @@ (or (and running-xemacs-19 (>= emacs-minor-version 14)) running-xemacs-20-or-later)) -(cond (running-mule-merged-emacs - ;; for mule merged EMACS - (require 'emu-e20) +(cond (running-xemacs + ;; for XEmacs + (require 'emu-xemacs) + (cond ((featurep 'mule) + ;; for XEmacs with MULE + (require 'emu-20) + (require 'emu-x20) + ) + (t + ;; for XEmacs without MULE + (require 'emu-latin1) + )) ) - (running-xemacs-with-mule - ;; for XEmacs/mule - (require 'emu-x20) + (running-mule-merged-emacs + ;; for Emacs 20.1 and 20.2 + (require 'emu-e20) ) ((boundp 'MULE) ;; for MULE 1.* and 2.* @@ -98,8 +126,9 @@ (require 'emu-nemacs) ) (t - ;; for EMACS 19 and XEmacs 19 (without mule) + ;; for Emacs 19 (require 'emu-e19) + (require 'emu-latin1) )) @@ -109,11 +138,11 @@ (defun charsets-to-mime-charset (charsets) "Return MIME charset from list of charset CHARSETS. This function refers variable `charsets-mime-charset-alist' -and `default-mime-charset'. [emu.el]" +and `default-mime-charset'." (if charsets (or (catch 'tag (let ((rest charsets-mime-charset-alist) - cell csl) + cell) (while (setq cell (car rest)) (if (catch 'not-subset (let ((set1 charsets) @@ -134,6 +163,17 @@ and `default-mime-charset'. [emu.el]" default-mime-charset))) +;;; @ Emacs 19 emulation +;;; + +(defun-maybe minibuffer-prompt-width () + "Return the display width of the minibuffer prompt." + (save-excursion + (set-buffer (window-buffer (minibuffer-window))) + (current-column) + )) + + ;;; @ Emacs 19.29 emulation ;;; @@ -234,6 +274,16 @@ Value is nil if OBJECT is not a buffer or if it has been killed. (list 'select-window 'save-selected-window-window)))) +;;; @ Emacs 20.3 emulation +;;; + +(defmacro-maybe string-as-multibyte (string) + "Return a multibyte string with the same individual bytes as STRING. +If STRING is multibyte, the result is STRING itself. +\[Emacs 20.3 emulating macro]" + string) + + ;;; @ XEmacs emulation ;;; @@ -246,6 +296,22 @@ Value is nil if OBJECT is not a buffer or if it has been killed. (and (consp obj)(eq (car obj) 'lambda)) )) +(defun-maybe point-at-eol (&optional arg buffer) + "Return the character position of the last character on the current line. +With argument N not nil or 1, move forward N - 1 lines first. +If scan reaches end of buffer, return that position. +This function does not move point. [XEmacs emulating function]" + (save-excursion + (if buffer + (set-buffer buffer) + ) + (if arg + (forward-line (1- arg)) + ) + (end-of-line) + (point) + )) + ;;; @ for XEmacs 20 ;;; @@ -256,12 +322,18 @@ Value is nil if OBJECT is not a buffer or if it has been killed. (or (fboundp 'int-char) (fset 'int-char (symbol-function 'identity)) ) +(or (fboundp 'char-or-char-int-p) + (fset 'char-or-char-int-p (symbol-function 'integerp)) + ) ;;; @ for text/richtext and text/enriched ;;; -(cond ((or running-emacs-19_29-or-later running-xemacs-19_14-or-later) +(cond ((fboundp 'richtext-decode) + ;; have richtext.el + ) + ((or running-emacs-19_29-or-later running-xemacs-19_14-or-later) ;; have enriched.el (autoload 'richtext-decode "richtext") (or (assq 'text/richtext format-alist)