MCPcopy Create free account
hub / github.com/cogentcore/core / undo

Method undo

texteditor/text/lines.go:1093–1141  ·  view source on GitHub ↗

undo undoes next group of items on the undo stack

()

Source from the content-addressed store, hash-verified

1091
1092// undo undoes next group of items on the undo stack
1093func (ls *Lines) undo() []*Edit {
1094 tbe := ls.Undos.UndoPop()
1095 if tbe == nil {
1096 // note: could clear the changed flag on tbe == nil in parent
1097 return nil
1098 }
1099 stgp := tbe.Group
1100 var eds []*Edit
1101 for {
1102 if tbe.Rect {
1103 if tbe.Delete {
1104 utbe := ls.insertTextRectImpl(tbe)
1105 utbe.Group = stgp + tbe.Group
1106 if ls.Options.EmacsUndo {
1107 ls.Undos.SaveUndo(utbe)
1108 }
1109 eds = append(eds, utbe)
1110 } else {
1111 utbe := ls.deleteTextRectImpl(tbe.Reg.Start, tbe.Reg.End)
1112 utbe.Group = stgp + tbe.Group
1113 if ls.Options.EmacsUndo {
1114 ls.Undos.SaveUndo(utbe)
1115 }
1116 eds = append(eds, utbe)
1117 }
1118 } else {
1119 if tbe.Delete {
1120 utbe := ls.insertTextImpl(tbe.Reg.Start, tbe.ToBytes())
1121 utbe.Group = stgp + tbe.Group
1122 if ls.Options.EmacsUndo {
1123 ls.Undos.SaveUndo(utbe)
1124 }
1125 eds = append(eds, utbe)
1126 } else {
1127 utbe := ls.deleteTextImpl(tbe.Reg.Start, tbe.Reg.End)
1128 utbe.Group = stgp + tbe.Group
1129 if ls.Options.EmacsUndo {
1130 ls.Undos.SaveUndo(utbe)
1131 }
1132 eds = append(eds, utbe)
1133 }
1134 }
1135 tbe = ls.Undos.UndoPopIfGroup(stgp)
1136 if tbe == nil {
1137 break
1138 }
1139 }
1140 return eds
1141}
1142
1143// EmacsUndoSave is called by View at end of latest set of undo commands.
1144// If EmacsUndo mode is active, saves the current UndoStack to the regular Undo stack

Callers 1

UndoMethod · 0.95

Calls 8

insertTextRectImplMethod · 0.95
deleteTextRectImplMethod · 0.95
insertTextImplMethod · 0.95
deleteTextImplMethod · 0.95
UndoPopMethod · 0.80
ToBytesMethod · 0.80
UndoPopIfGroupMethod · 0.80
SaveUndoMethod · 0.45

Tested by

no test coverage detected