@@ -185,6 +185,50 @@ impl Document {
188+ pub fn undo(&mut self) -> bool {
189+ if let Some(transaction) = self.history.undo() {
190+ let old_doc = self.text().clone();
192+ let success = transaction.apply(&mut self.state);
194+ // update tree-sitter syntax tree
195+ if let Some(syntax) = &mut self.syntax {
198+ .update(&old_doc, &self.state.doc, transaction.changes())
202+ // reset changeset to fix len
203+ self.changes = ChangeSet::new(self.text());
210+ pub fn redo(&mut self) -> bool {
211+ if let Some(transaction) = self.history.redo() {
212+ let old_doc = self.text().clone();
214+ let success = transaction.apply(&mut self.state);
216+ // update tree-sitter syntax tree
217+ if let Some(syntax) = &mut self.syntax {
220+ .update(&old_doc, &self.state.doc, transaction.changes())
224+ // reset changeset to fix len
225+ self.changes = ChangeSet::new(self.text());
188 #[inline]
232 #[inline]
189 pub fn mode(&self) -> Mode {
233 pub fn mode(&self) -> Mode {
190 self.mode
234 self.mode