| Lugaru's Epsilon Programmer's
 Editor 14.04
 
 
Context:
 
 
 | 
| Previous | Up | Next |  | Narrowing | Primitives and EEL Subroutines | Searching Primitives |  
 
 
Epsilon User's Manual and Reference > 
Primitives and EEL Subroutines > 
Buffer Primitives > 
 Undo Primitivesint undo_op(int is_undo)undo_mainloop()
 undo_redisplay()
 user buffer int undo_size;
 
With a nonzero argument, the undo_op( ) primitive undoes one
basic operation like the undo command, described in Undoing.  With an argument of zero, it acts like redo.
It returns a bit pattern describing what types of operations were
undone or redone.  The bit codes are defined in codes.h.
 UNDO_INSERTmeans that originally an insertion occurred, and it
was either undone or redone.  TheUNDO_DELETEandUNDO_REPLACEcodes are similar.
Epsilon groups individual buffer changes into groups, and undoes one
group at a time.  While saving changes for undoing, Epsilon begins a
new group when it redisplays buffers or when it begins a new command in
the main loop.  The UNDO_REDISPcode indicates the former
happened, andUNDO_MAINLOOPthe latter.UNDO_MOVEindicates movement is being undone, andUNDO_ENDis used when
Epsilon could only undo part of a command.  If undo_op( ) returns
zero, the buffer was not collecting undo information (see below). 
Epsilon automatically starts a new undo group each time it does
normal redisplay or passes through its main loop, by calling either
the undo_redisplay( ) or undo_mainloop( ) primitives,
respectively.  You can call either of these primitives yourself to
make Epsilon start a new undo group. 
In addition to starting a new group, the undo_mainloop( )
primitive also makes the current buffer start to collect undo
information.  When you first create a buffer, Epsilon doesn't keep
undo information for it, so that "system" buffers don't have this
unnecessary overhead.  Each time it passes through the main loop,
Epsilon calls undo_mainloop( ), and this makes the current buffer
start collecting undo information, if it isn't already, and if the
buffer-specific variable undo_size is nonzero. 
int undo_count(int is_undo)
The undo_count( ) primitive takes a parameter that specifies
whether undoing or redoing is involved, like undo_op( ).  The
primitive returns a value indicating how much undoing or redoing
information is saved.  The number doesn't correspond to a particular
number of commands, but to their complexity.
 
user buffer int undo_flag;
In addition to buffer changes and movements, Epsilon can record other
information in its list of undoable operations.  Each time you set
the undo_flag variable, Epsilon inserts a "flag" in its undo
list with the particular value you specify.  When Epsilon is undoing
or redoing and encounters a flag, it immediately ends the current
group of undo operations and returns a code with the
 UNDO_FLAGbit on.  It puts the value of the flag it encountered in the
undo_flag variable.  The yank-pop command uses flags1and2for undoing the previous yank. 
 
 
 
 
| Previous | Up | Next |  | Narrowing | Primitives and EEL Subroutines | Searching Primitives |  
 
  Epsilon Programmer's Editor 14.04 manual. Copyright (C) 1984, 2021 by Lugaru Software Ltd. All rights reserved. |