Mercurial > hg > xemacs-beta
diff lisp/tl/emu.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | e04119814345 |
children | 54cc21c15cbb |
line wrap: on
line diff
--- a/lisp/tl/emu.el Mon Aug 13 09:00:04 2007 +0200 +++ b/lisp/tl/emu.el Mon Aug 13 09:02:59 2007 +0200 @@ -1,12 +1,12 @@ ;;; emu.el --- Emulation module for each Emacs variants -;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc. +;; Copyright (C) 1995,1996 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp> -;; Version: $Id: emu.el,v 1.4 1997/03/16 05:55:39 steve Exp $ -;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs +;; Version: $Id: emu.el,v 1.1.1.1 1996/12/18 22:43:38 steve Exp $ +;; Keywords: emulation, compatibility, NEmacs, MULE, XEmacs -;; This file is part of emu. +;; This file is part of tl (Tiny Library). ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -25,32 +25,6 @@ ;;; Code: -(defmacro defun-maybe (name &rest everything-else) - (or (and (fboundp name) - (not (get name 'defun-maybe)) - ) - (` (or (fboundp (quote (, name))) - (progn - (defun (, name) (,@ everything-else)) - (put (quote (, name)) 'defun-maybe t) - )) - ))) - -(defmacro defmacro-maybe (name &rest everything-else) - (or (and (fboundp name) - (not (get name 'defmacro-maybe)) - ) - (` (or (fboundp (quote (, name))) - (progn - (defmacro (, name) (,@ everything-else)) - (put (quote (, name)) 'defmacro-maybe t) - )) - ))) - -(put 'defun-maybe 'lisp-indent-function 'defun) -(put 'defmacro-maybe 'lisp-indent-function 'defun) - - (or (boundp 'emacs-major-version) (defconst emacs-major-version (string-to-int emacs-version))) (or (boundp 'emacs-minor-version) @@ -103,6 +77,22 @@ )) +;;; @ 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. +\[emu.el]" + (as-binary-input-file + (insert-file-contents-literally filename visit beg end replace) + )) + + ;;; @ MIME charset ;;; @@ -134,31 +124,20 @@ default-mime-charset))) -;;; @ Emacs 19.29 emulation +;;; @ EMACS 19.29 emulation ;;; (defvar path-separator ":" "Character used to separate concatenated paths.") -(defun-maybe buffer-substring-no-properties (start end) - "Return the characters of part of the buffer, without the text properties. -The two arguments START and END are character positions; -they can be in either order. [Emacs 19.29 emulating function]" - (let ((string (buffer-substring start end))) - (set-text-properties 0 (length string) nil string) - string)) - -(defun-maybe match-string (num &optional string) - "Return string of text matched by last search. -NUM specifies which parenthesized expression in the last regexp. - Value is nil if NUMth pair didn't match, or there were less than NUM pairs. -Zero means the entire text matched by the whole regexp or whole string. -STRING should be given if the last search was by `string-match' on STRING. -\[Emacs 19.29 emulating function]" - (if (match-beginning num) - (if string - (substring string (match-beginning num) (match-end num)) - (buffer-substring (match-beginning num) (match-end num))))) +(or (fboundp 'buffer-substring-no-properties) + (defun buffer-substring-no-properties (beg end) + "Return the text from BEG to END, without text properties, as a string. +\[emu.el; EMACS 19.29 emulating function]" + (let ((string (buffer-substring beg end))) + (tl:set-text-properties 0 (length string) nil string) + string)) + ) (or running-emacs-19_29-or-later running-xemacs @@ -176,20 +155,21 @@ ) )) - -;;; @ Emacs 19.30 emulation -;;; - -;; This function was imported Emacs 19.30. -(defun-maybe add-to-list (list-var element) - "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. +(or (fboundp 'add-to-list) + ;; This function was imported Emacs 19.30. + (defun add-to-list (list-var element) + "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. If you want to use `add-to-list' on a variable that is not defined until a certain package is loaded, you should put the call to `add-to-list' into a hook function that will be run only after loading the package. -\[Emacs 19.30 emulating function]" - (or (member element (symbol-value list-var)) - (set list-var (cons element (symbol-value list-var))) - )) +\[emu.el; EMACS 19.30 emulating function]" + (or (member element (symbol-value list-var)) + (set list-var (cons element (symbol-value list-var))))) + ) + + +;;; @ EMACS 19.30 emulation +;;; (cond ((fboundp 'insert-file-contents-literally) ) @@ -201,7 +181,7 @@ 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. -\[Emacs 19.30 emulating function]" +\[emu.el; Emacs 19.30 emulating function]" (let (file-name-handler-alist) (insert-file-contents filename visit beg end replace) )) @@ -211,41 +191,47 @@ )) -;;; @ Emacs 19.31 emulation +;;; @ EMACS 19.31 emulation ;;; -(defun-maybe buffer-live-p (object) - "Return non-nil if OBJECT is a buffer which has not been killed. +(or (fboundp 'buffer-live-p) + (defun buffer-live-p (object) + "Return non-nil if OBJECT is a buffer which has not been killed. Value is nil if OBJECT is not a buffer or if it has been killed. -\[Emacs 19.31 emulating function]" - (and object - (get-buffer object) - (buffer-name (get-buffer object)) - )) +\[emu.el; EMACS 19.31 emulating function]" + (and object + (get-buffer object) + (buffer-name (get-buffer object)) + )) + ) -;; This macro was imported Emacs 19.33. -(defmacro-maybe save-selected-window (&rest body) - "Execute BODY, then select the window that was selected before BODY. -\[Emacs 19.31 emulating function]" - (list 'let - '((save-selected-window-window (selected-window))) - (list 'unwind-protect - (cons 'progn body) - (list 'select-window 'save-selected-window-window)))) +(or (fboundp 'save-selected-window) + ;; This function was imported Emacs 19.33. + (defmacro save-selected-window (&rest body) + "Execute BODY, then select the window that was selected before BODY. +\[emu.el; EMACS 19.31 emulating function]" + (list 'let + '((save-selected-window-window (selected-window))) + (list 'unwind-protect + (cons 'progn body) + (list 'select-window 'save-selected-window-window)))) + ) ;;; @ XEmacs emulation ;;; -(defun-maybe functionp (obj) - "Returns t if OBJ is a function, nil otherwise. -\[XEmacs emulating function]" - (or (subrp obj) - (byte-code-function-p obj) - (and (symbolp obj)(fboundp obj)) - (and (consp obj)(eq (car obj) 'lambda)) - )) - +(or (fboundp 'functionp) + (defun functionp (obj) + "Returns t if OBJ is a function, nil otherwise. +\[emu.el; XEmacs emulating function]" + (or (subrp obj) + (byte-code-function-p obj) + (and (symbolp obj)(fboundp obj)) + (and (consp obj)(eq (car obj) 'lambda)) + )) + ) + ;;; @ for XEmacs 20 ;;;