mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-10 08:10:21 -08:00
(ring-insert-at-beginning): New function.
Don't visit the file, just read it.
This commit is contained in:
parent
0c287afb97
commit
9c545670f3
1 changed files with 14 additions and 2 deletions
|
|
@ -51,6 +51,18 @@
|
|||
"Make a ring that can contain SIZE elements."
|
||||
(cons 0 (cons 0 (make-vector size nil))))
|
||||
|
||||
(defun ring-insert-at-beginning (ring item)
|
||||
"Add to RING the item ITEM. Add it at the front (the early end)."
|
||||
(let* ((vec (cdr (cdr ring)))
|
||||
(veclen (length vec))
|
||||
(hd (car ring))
|
||||
(ln (car (cdr ring))))
|
||||
(setq ln (min veclen (1+ ln))
|
||||
hd (ring-minus1 hd veclen))
|
||||
(aset vec hd item)
|
||||
(setcar ring hd)
|
||||
(setcar (cdr ring) ln)))
|
||||
|
||||
(defun ring-plus1 (index veclen)
|
||||
"INDEX+1, with wraparound"
|
||||
(let ((new-index (+ index 1)))
|
||||
|
|
@ -72,8 +84,8 @@
|
|||
(mod (1- (+ head (- ringlen index))) veclen))
|
||||
|
||||
(defun ring-insert (ring item)
|
||||
"Insert a new item onto the ring. If the ring is full, dump the oldest
|
||||
item to make room."
|
||||
"Insert onto ring RING the item ITEM, as the newest (last) item.
|
||||
If the ring is full, dump the oldest item to make room."
|
||||
(let* ((vec (cdr (cdr ring)))
|
||||
(veclen (length vec))
|
||||
(hd (car ring))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue