ses: Deferred updates

 
 5.1 Deferred updates
 ====================
 
 To save time by avoiding redundant computations, cells that need
 recalculation due to changes in other cells are added to a set.  At the
 end of the command, each cell in the set is recalculated once.  This can
 create a new set of cells that need recalculation.  The process is
 repeated until either the set is empty or it stops changing (due to
 circular references among the cells).  In extreme cases, you might see
 progress messages of the form “Recalculating...  (NNN cells left)”.  If
 you interrupt the calculation using ‘C-g’, the spreadsheet will be left
 in an inconsistent state, so use ‘C-_’ or ‘C-c C-l’ to fix it.
 
    To save even more time by avoiding redundant writes, cells that have
 changes are added to a set instead of being written immediately to the
 data area.  Each cell in the set is written once, at the end of the
 command.  If you change vast quantities of cells, you might see a
 progress message of the form “Writing...  (NNN cells left)”.  These
 deferred cell-writes cannot be interrupted by ‘C-g’, so you’ll just have
 to wait.
 
    SES uses ‘run-with-idle-timer’ to move the cell underline when Emacs
 will be scrolling the buffer after the end of a command, and also to
 narrow and underline after ‘C-x C-v’.  This is visible as a momentary
 glitch after C-x C-v and certain scrolling commands.  You can type ahead
 without worrying about the glitch.