annotate lisp/ilisp/ilisp-el.el @ 164:4e0740e5aab2

Added tag r20-3b8 for changeset 0132846995bd
author cvs
date Mon, 13 Aug 2007 09:43:39 +0200
parents b82b59fe008d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 ;;; -*- Mode: Emacs-Lisp -*-
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 ;;; ilisp-el.el --
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 ;;; This file is part of ILISP.
4
b82b59fe008d Import from CVS: tag r19-15b3
cvs
parents: 0
diff changeset
6 ;;; Version: 5.8
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 ;;; Copyright (C) 1990, 1991, 1992, 1993 Chris McConnell
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 ;;; 1993, 1994 Ivan Vasquez
4
b82b59fe008d Import from CVS: tag r19-15b3
cvs
parents: 0
diff changeset
10 ;;; 1994, 1995, 1996 Marco Antoniotti and Rick Busdiecker
b82b59fe008d Import from CVS: tag r19-15b3
cvs
parents: 0
diff changeset
11 ;;; 1996 Marco Antoniotti and Rick Campbell
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 ;;; Other authors' names for which this Copyright notice also holds
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 ;;; may appear later in this file.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 ;;;
4
b82b59fe008d Import from CVS: tag r19-15b3
cvs
parents: 0
diff changeset
16 ;;; Send mail to 'ilisp-request@naggum.no' to be included in the
b82b59fe008d Import from CVS: tag r19-15b3
cvs
parents: 0
diff changeset
17 ;;; ILISP mailing list. 'ilisp@naggum.no' is the general ILISP
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 ;;; mailing list were bugs and improvements are discussed.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 ;;; ILISP is freely redistributable under the terms found in the file
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 ;;; COPYING.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 ;;; ILISP extensions to emacs lisp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 ;;;%Utils
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 ;;; This should be in emacs, but it isn't.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 (defun lisp-mem (item list &optional elt=)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 "Test to see if ITEM is equal to an item in LIST.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 Option comparison function ELT= defaults to equal."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 (let ((elt= (or elt= (function equal)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 (done nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 (while (and list (not done))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 (if (funcall elt= item (car list))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 (setq done list)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 (setq list (cdr list))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 done))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 ;;;%%Misc
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 (defun lisp-memk (item list key)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 "Test to see if ITEM is in LIST using KEY on each item in LIST
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 before comparing it to ITEM."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 (lisp-mem item list (function (lambda (x y)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 (equal x (funcall key y))))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 ;;; This should be in emacs, but it isn't.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 (defun lisp-del (item list &optional test)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 "Delete ITEM from LIST using TEST comparison and return the result.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 Default test is equal."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 (let ((test (or test (function equal)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 (element list)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 (prev nil)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 (done nil))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 (while (and element (not done))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 (if (funcall test item (car element))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 (progn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 (setq done t)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 (if prev
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 (rplacd prev (cdr element))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 (setq list (cdr list))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 (setq prev element
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 element (cdr element))))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 list))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 ;;;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 (defun lisp-last (list)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 "Return the last element of LIST."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 (while (cdr list)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 (setq list (cdr list)))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 (car list))