From 9be71ac1f46cd04e61aca00ffabc5324c9dfdf5c Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Wed, 26 Aug 2015 20:10:21 -0700 Subject: 2081 - preliminary data model for undo --- edit.mu | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/edit.mu b/edit.mu index 611fc23c..8d41b223 100644 --- a/edit.mu +++ b/edit.mu @@ -33,11 +33,11 @@ scenario editor-initially-prints-string-to-screen [ container editor-data [ # editable text: doubly linked list of characters (head contains a special sentinel) - data:address:duplex-list - top-of-screen:address:duplex-list - bottom-of-screen:address:duplex-list + data:address:duplex-list:character + top-of-screen:address:duplex-list:character + bottom-of-screen:address:duplex-list:character # location before cursor inside data - before-cursor:address:duplex-list + before-cursor:address:duplex-list:character # raw bounds of display area on screen # always displays from row 1 (leaving row 0 for a menu) and at most until bottom of screen @@ -6505,6 +6505,46 @@ recipe foo [ ] ] +## undo/redo + +exclusive-container operation [ + typing:character + move:move-operation + delete:delete-operation +] + +container move-operation [ + before-row:number + before-column:number + before-top-of-screen:address:duplex-list:character + after-row:number + after-column:number + after-top-of-screen:address:duplex-list:character +] + +container delete-operation [ + before-row:number + before-column:number + before-top-of-screen:address:duplex-list:character + after-row:number + after-column:number + after-top-of-screen:address:duplex-list:character + deleted:address:duplex-list:character + deleted-from:address:duplex-list:character +] + +# todo: +# operations for recipe side and each sandbox-data +# undo delete sandbox as a separate primitive on the status bar +# types of operations: +# typing +# cursor movement and scrolling +# delete (backspace, delete, ctrl-k, ctrl-u) +# collapse runs +# of the same event (arrow keys, etc.) +# of typing that's not newline or backspace or tab +# render entire screen blindly on undo/redo operations for now + ## helpers for drawing editor borders recipe draw-box [ -- cgit 1.4.1-2-gfad0