Initial Commit
[packages] / xemacs-packages / ilisp / ilcompat.el
1 ;;; -*- Mode: Emacs-Lisp -*-
2
3 ;;; ilcompat.el --
4 ;;;
5 ;;; This file is part of ILISP.
6 ;;; Please refer to the file COPYING for copyrights and licensing
7 ;;; information.
8 ;;; Please refer to the file ACKNOWLEGDEMENTS for an (incomplete) list
9 ;;; of present and past contributors.
10 ;;;
11 ;;; $Id: ilcompat.el,v 1.4 2002-06-03 23:36:58 wbd Exp $
12
13 (require 'cl)
14
15 ;;; Global definitions/declarations
16
17 (defconst +ilisp-emacs-version-id+
18   (cond ((string-match "XEmacs" emacs-version)
19          'xemacs)
20         ((string-match "Lucid" emacs-version)
21          (if (string-match "^19.[0-7][^0-9]" emacs-version)
22              'lucid-19
23            'lucid-19-new))
24         ((string-match "^19" emacs-version)
25          'fsf-19)
26         ((string-match "^20" emacs-version)
27          'fsf-20)
28         ((string-match "^21" emacs-version)
29          'fsf-21)
30         (t 'fsf-18))
31   "The major version of (X)Emacs ILISP is running in.
32 Declared as '(member fsf-19 fsf-19 fsf-20 fsf-21 lucid-19 lucid-19-new xemacs).
33 Set in ilcompat.el.")
34
35
36 (defconst +ilisp-emacs-minor-version-number+
37   (cond ((eq +ilisp-emacs-version-id+ 'fsf-18) 59)
38         ((or  (eq +ilisp-emacs-version-id+ 'lucid-19)
39               (eq +ilisp-emacs-version-id+ 'lucid-19-new)
40               )
41          12)                          ; Does emacs-minor-version work?
42         ((eq +ilisp-emacs-version-id+ 'xemacs) 14)
43         (t emacs-minor-version))
44   "The minor version of (X)Emacs ILISP is running in.
45 Set in ilcompat.el.")
46
47
48 ;;; Load Emacs version specific compatibility modules
49
50 (cond ((or (eq +ilisp-emacs-version-id+ 'lucid-19)
51            (eq +ilisp-emacs-version-id+ 'lucid-19-new))
52        (load "illuc19"))
53       ((eq +ilisp-emacs-version-id+ 'xemacs) (load "ilxemacs"))
54       ((eq +ilisp-emacs-version-id+ 'fsf-18) (load "ilfsf18"))
55       ((eq +ilisp-emacs-version-id+ 'fsf-19) (load "ilfsf19"))
56       ((eq +ilisp-emacs-version-id+ 'fsf-20) (load "ilfsf20"))
57       ((eq +ilisp-emacs-version-id+ 'fsf-21) (load "ilfsf21"))
58       )
59
60
61 ;;; Misc. bug work-arounds and compatibility bindings
62
63 (unless (eval-when-compile (ignore-errors (last '(a . b))))
64   ;; From Emacs 19.34's cl.el.
65   (defun last (x &optional n)
66     "Returns the last link in the list LIST.
67 With optional argument N, returns Nth-to-last link (default 1)."
68     (if n
69         (let ((m 0) (p x))
70           (while (consp p) (incf m) (pop p))
71           (if (<= n 0) p
72             (if (< n m) (nthcdr (- m n) x) x)))
73       (while (consp (cdr x)) (pop x))
74       x)))
75
76
77 ;;; Epilogue
78
79 (provide 'ilcompat)
80
81 ;;; end of file -- compat.el --