annotate lisp/emacs-lisp/ring.el @ 18092:8428d56cd207

(smtpmail-via-smtp): Recognize XVRB as a synonym for VERB and XONE as a synonym for ONEX. (smtpmail-read-response): Add "%s" to `message' calls to avoid problems with percent signs in strings. (smtpmail-read-response): Return all lines of the response text as a list of strings. Formerly only the first line was returned. This is insufficient when one wants to parse e.g. an EHLO response. Ignore responses starting with "0". This is necessary to support the VERB SMTP extension. (smtpmail-via-smtp): Try EHLO and find out which SMTP service extensions the receiving mailer supports. Issue the ONEX and XUSR commands if the corresponding extensions are supported. Issue VERB if supported and `smtpmail-debug-info' is non-nil. Add SIZE attribute to MAIL FROM: command if SIZE extension is supported. Add code that could set the BODY= attribute to MAIL FROM: if the receiving mailer supports 8BITMIME. This is currently disabled, since doing it right might involve adding MIME headers to, and in some cases reencoding, the message.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Jun 1997 22:24:22 +0000
parents de55dc47bae6
children cf992000b9c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2424
dbdccee84df3 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 905
diff changeset
1 ;;; ring.el --- handle rings of items
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
2
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
3 ;; Copyright (C) 1992 Free Software Foundation, Inc.
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
4
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
5 ;; Maintainer: FSF
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
6 ;; Keywords: extensions
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
7
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
8 ;; This file is part of GNU Emacs.
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
9
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
13 ;; any later version.
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
14
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
18 ;; GNU General Public License for more details.
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
19
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
23 ;; Boston, MA 02111-1307, USA.
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
24
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
25 ;;; Commentary:
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
26
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
27 ;; This code defines a ring data structure. A ring is a
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
28 ;; (hd-index length . vector)
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
29 ;; list. You can insert to, remove from, and rotate a ring. When the ring
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
30 ;; fills up, insertions cause the oldest elts to be quietly dropped.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
31 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
32 ;; In ring-ref, 0 is the index of the newest element. Higher indexes
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
33 ;; correspond to older elements; when the index equals the ring length,
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
34 ;; it wraps to the newest element again.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
35 ;;
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
36 ;; hd-index = vector index of the oldest ring item.
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
37 ;; Newer items follow this item; at the end of the vector,
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
38 ;; they wrap around to the start of the vector.
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
39 ;; length = number of items currently in the ring.
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
40 ;; This never exceeds the length of the vector itself.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
41 ;;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
42 ;; These functions are used by the input history mechanism, but they can
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 8031
diff changeset
43 ;; be used for other purposes as well.
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
44
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
45 ;;; Code:
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 658
diff changeset
46
905
48e4034a2176 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
47 ;;;###autoload
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
48 (defun ring-p (x)
2574
c782b69b60a4 Added and fixed documentation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2424
diff changeset
49 "Returns t if X is a ring; nil otherwise."
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
50 (and (consp x) (integerp (car x))
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
51 (consp (cdr x)) (integerp (car (cdr x)))
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
52 (vectorp (cdr (cdr x)))))
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
53
905
48e4034a2176 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
54 ;;;###autoload
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
55 (defun make-ring (size)
2574
c782b69b60a4 Added and fixed documentation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2424
diff changeset
56 "Make a ring that can contain SIZE elements."
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
57 (cons 0 (cons 0 (make-vector size nil))))
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
58
8031
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
59 (defun ring-insert-at-beginning (ring item)
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
60 "Add to RING the item ITEM. Add it at the front, as the oldest item."
8031
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
61 (let* ((vec (cdr (cdr ring)))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
62 (veclen (length vec))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
63 (hd (car ring))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
64 (ln (car (cdr ring))))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
65 (setq ln (min veclen (1+ ln))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
66 hd (ring-minus1 hd veclen))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
67 (aset vec hd item)
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
68 (setcar ring hd)
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
69 (setcar (cdr ring) ln)))
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
70
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
71 (defun ring-plus1 (index veclen)
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
72 "INDEX+1, with wraparound."
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
73 (let ((new-index (+ index 1)))
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
74 (if (= new-index veclen) 0 new-index)))
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
75
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
76 (defun ring-minus1 (index veclen)
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
77 "INDEX-1, with wraparound."
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
78 (- (if (= 0 index) veclen index) 1))
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
79
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
80 (defun ring-length (ring)
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
81 "Number of elements in the ring RING."
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
82 (car (cdr ring)))
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
83
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
84 (defun ring-empty-p (ring)
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
85 (= 0 (car (cdr ring))))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
86
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
87 (defun ring-index (index head ringlen veclen)
4516
95b9760d19e3 (ring-mod): Remove, since floor and mod
Paul Eggert <eggert@twinsun.com>
parents: 2582
diff changeset
88 (setq index (mod index ringlen))
95b9760d19e3 (ring-mod): Remove, since floor and mod
Paul Eggert <eggert@twinsun.com>
parents: 2582
diff changeset
89 (mod (1- (+ head (- ringlen index))) veclen))
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
90
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
91 (defun ring-insert (ring item)
8031
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
92 "Insert onto ring RING the item ITEM, as the newest (last) item.
4b45aa6d5d76 (ring-insert-at-beginning): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4516
diff changeset
93 If the ring is full, dump the oldest item to make room."
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
94 (let* ((vec (cdr (cdr ring)))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
95 (veclen (length vec))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
96 (hd (car ring))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
97 (ln (car (cdr ring))))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
98 (prog1
4516
95b9760d19e3 (ring-mod): Remove, since floor and mod
Paul Eggert <eggert@twinsun.com>
parents: 2582
diff changeset
99 (aset vec (mod (+ hd ln) veclen) item)
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
100 (if (= ln veclen)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
101 (setcar ring (ring-plus1 hd veclen))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
102 (setcar (cdr ring) (1+ ln))))))
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
103
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
104 (defun ring-remove (ring &optional index)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
105 "Remove an item from the RING. Return the removed item.
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
106 If optional INDEX is nil, remove the oldest item. If it's
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
107 numeric, remove the element indexed."
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
108 (if (ring-empty-p ring)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
109 (error "Ring empty")
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
110 (let* ((hd (car ring))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
111 (ln (car (cdr ring)))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
112 (vec (cdr (cdr ring)))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
113 (veclen (length vec))
4516
95b9760d19e3 (ring-mod): Remove, since floor and mod
Paul Eggert <eggert@twinsun.com>
parents: 2582
diff changeset
114 (tl (mod (1- (+ hd ln)) veclen))
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
115 oldelt)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
116 (if (null index)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
117 (setq index (1- ln)))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
118 (setq index (ring-index index hd ln veclen))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
119 (setq oldelt (aref vec index))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
120 (while (/= index tl)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
121 (aset vec index (aref vec (ring-plus1 index veclen)))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
122 (setq index (ring-plus1 index veclen)))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
123 (aset vec tl nil)
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
124 (setcar (cdr ring) (1- ln))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
125 oldelt)))
124
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
126
27691d738b4f Initial revision
David Lawrence <tale@gnu.org>
parents:
diff changeset
127 (defun ring-ref (ring index)
2574
c782b69b60a4 Added and fixed documentation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2424
diff changeset
128 "Returns RING's INDEX element.
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
129 INDEX = 0 is the most recently inserted; higher indices
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
130 correspond to older elements.
2574
c782b69b60a4 Added and fixed documentation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2424
diff changeset
131 INDEX need not be <= the ring length, the appropriate modulo operation
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
132 will be performed."
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
133 (if (ring-empty-p ring)
17212
de55dc47bae6 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
134 (error "Accessing an empty ring")
2582
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
135 (let* ((hd (car ring)) (ln (car (cdr ring))) (vec (cdr (cdr ring))))
e01048f32511 Rewritten. A poor choice of representation made the old code excessively
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2574
diff changeset
136 (aref vec (ring-index index hd ln (length vec))))))
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
137
2574
c782b69b60a4 Added and fixed documentation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2424
diff changeset
138 (provide 'ring)
c782b69b60a4 Added and fixed documentation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2424
diff changeset
139
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 245
diff changeset
140 ;;; ring.el ends here