Mercurial > hg > xemacs-beta
diff lisp/tl/emu.el @ 74:54cc21c15cbb r20-0b32
Import from CVS: tag r20-0b32
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:04:33 +0200 |
parents | 131b0175ea99 |
children | c7528f8e288d |
line wrap: on
line diff
--- a/lisp/tl/emu.el Mon Aug 13 09:03:47 2007 +0200 +++ b/lisp/tl/emu.el Mon Aug 13 09:04:33 2007 +0200 @@ -3,10 +3,10 @@ ;; Copyright (C) 1995,1996 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp> -;; Version: $Id: emu.el,v 1.1.1.1 1996/12/18 22:43:38 steve Exp $ -;; Keywords: emulation, compatibility, NEmacs, MULE, XEmacs +;; Version: $Id: emu.el,v 1.1.1.2 1996/12/21 20:50:49 steve Exp $ +;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs -;; 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 @@ -25,6 +25,20 @@ ;;; 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) + )) + ))) + +(put 'defun-maybe 'lisp-indent-function 'defun) + + (or (boundp 'emacs-major-version) (defconst emacs-major-version (string-to-int emacs-version))) (or (boundp 'emacs-minor-version) @@ -130,14 +144,24 @@ (defvar path-separator ":" "Character used to separate concatenated paths.") -(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. +(defun-maybe 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)) - ) + (let ((string (buffer-substring beg end))) + (tl: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. +\[emu.el; 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 running-emacs-19_29-or-later running-xemacs @@ -155,17 +179,16 @@ ) )) -(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. +;; 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. 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. \[emu.el; EMACS 19.30 emulating function]" - (or (member element (symbol-value list-var)) - (set list-var (cons element (symbol-value list-var))))) - ) + (or (member element (symbol-value list-var)) + (set list-var (cons element (symbol-value list-var))) + )) ;;; @ EMACS 19.30 emulation @@ -194,16 +217,14 @@ ;;; @ EMACS 19.31 emulation ;;; -(or (fboundp 'buffer-live-p) - (defun buffer-live-p (object) - "Return non-nil if OBJECT is a buffer which has not been killed. +(defun-maybe 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. \[emu.el; EMACS 19.31 emulating function]" - (and object - (get-buffer object) - (buffer-name (get-buffer object)) - )) - ) + (and object + (get-buffer object) + (buffer-name (get-buffer object)) + )) (or (fboundp 'save-selected-window) ;; This function was imported Emacs 19.33. @@ -221,17 +242,15 @@ ;;; @ XEmacs emulation ;;; -(or (fboundp 'functionp) - (defun functionp (obj) - "Returns t if OBJ is a function, nil otherwise. +(defun-maybe 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)) - )) - ) - + (or (subrp obj) + (byte-code-function-p obj) + (and (symbolp obj)(fboundp obj)) + (and (consp obj)(eq (car obj) 'lambda)) + )) + ;;; @ for XEmacs 20 ;;;