home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
editor
/
me_cd.arc
/
MARKRING.MUT
< prev
next >
Wrap
Text File
|
1988-09-26
|
1KB
|
43 lines
; markring.mut : Maintain a ring of marks so it is easy to jump to
; often referenced places in a buffer.
; Notes:
; Marking regions does not effect the que.
; Each buffer has its own que.
; When the que is full, the que wraps around.
; Be sure to add (init-markring) to buffer-created-hook
; Clearing the buffer (or reading in a file) clears all the marks
; but does not reset the ring (a hook would be nice, hint hint).
; uses:
; marks: 1..4
; buffer-var 0: head of the que, buffer-var 1: tail,
; buffer-var 2: items in que
; See me.h for the definations.
; C Durland
(include me.h)
(defun
init-markring MAIN
{ (buffer-var Qhead MARK1)(buffer-var Qtail MARK1) (buffer-var Qsize 0) }
push-mark ; Put a mark in the que
{
(int x)
(arg-prefix (x (buffer-var Qhead)))(set-mark)
(msg "Mark qued.")
(if (> (+= x 1) MARKn)(x MARK1))(buffer-var Qhead x)
(x (buffer-var Qsize))(if (> (+= x 1) MARKn)(x MARKn))
(buffer-var Qsize x)
}
pop-mark ; Cycle through the que
{
(int size x)
(x (buffer-var Qtail))(size (buffer-var Qsize))
(if (== size 0) { (msg "Mark que empty")(done) } )
(arg-prefix x)(exchange-dot-and-mark)
(if (or (> (+= x 1) MARKn) (> x size)) (x 1))
(buffer-var Qtail x)
}
)