Ticket #234 (closed defect: fixed)

Opened 8 years ago

Last modified 4 years ago

No basic undo/redo system in the GUI.

Reported by: Christophe Owned by: armin
Priority: normal Milestone:
Component: Gobby Version:
Severity: normal Keywords:
Cc: Launchpad Bug:

Description

Hello,

A basic undo/redo system isn't available in the GUI (no menu entry or button to do "undo" or "redo"). I look into src and found some kind of implementation. But nothing connect src code to GUI.

I know undo/redo is very difficult to implement in "concurent editor" (I read mailling list and articles). But I think the very basic implementation (global undo/redo on the document, for all users) be _very_ usefull instead of "nothing" (in waiting for a better control).

Thank's for your work on this project.

Christophe.

Change History

  Changed 8 years ago by armin

Since a global Undo is not what a user expects when pressing an Undo button we decided to take it out completely. The undo stuff in obby is not working and therefore not used.

  Changed 8 years ago by anonymous

I just deleted a source code file with a bad manipulation, and can't undo my mistake because no undo function exists. I think it's a really important feature, why not permit to undo what the user done ( and which hasn't be modified by other user ) ?

  Changed 8 years ago by asheesh@…

I suggest having a "lame" undo feature, where undo would work the same as 'cut 'and 'paste'.

The pasted result does appear as coming from the user doing the pasting, even if he cut text that someone else wrote. The same should happen with undo: If you delete something, even if it was written by someone else, then undo could make it owned by you.

That should be simple enough, no? If not, *any* sort of undo would be fantastic, even if something even simpler!

  Changed 8 years ago by armin

It is not. The problem with Undo is that we need to keep track of changes a single user makes. These, however may depend on changes other made that should not be undone.

  Changed 8 years ago by asheesh@…

Maybe the editor program (Gobby) could at least turn consecutive delete operations into one big "cut" operation (like how in Emacs you can always yank what you cut). That way, at least some operations can be undone (even imperfectly), just by pasting.

I know this isn't "real" undo-redo, but it would probably have saved our friend in this ticket who lost his source code.

  Changed 8 years ago by Wannes

I have no idea how undo systems work but this might be an acceptable temporary solution. You can maybe make a per user undo that works on complete words. When a user edits a word that is in the undo history of another user, all the words in the undo history before the edited word then are removed. this will provide perfect undo fucntionality when editing on different parts of a text, and solves some of the dependecy issues. Its far from a perfect solution tho.

maybe it would be nice do be able to divide the docuemnt in different undo segments, when editing source code for example, functions you're working on can be put in different section.

  Changed 7 years ago by klaas@…

(Sorry for doubleposting - the difference with #39 is not clear to me)

Lack of Undo capabilities is a definite show stopper for use of Gobby for me (I'm thinking seriously of using Gobby for pair programming). I think lot's of things could be added at relatively low cost (configurable by the user):

* 'private' undo until this bumps into conflicts with other users * global undo as an option

As stated above - having this is very much preferable over not being able to undo at all.... also because people expect things to be more complicated (as regarding undo) in a multi-people editor.

As a further development you could lots, I'll probably write about this in the near future but want to get up to speed with the mailinglists first.

in reply to: ↑ description   Changed 6 years ago by anonymous

It would be very useful to have a "global" undo/redo feature which will contain a copy of the buffer on each client machine. This will also allow anybody to undo any client's changes. If you keep it simple and limited to that scope then their should be no concurrent errors. Another thought is instead of a copy on each client's computer have a single buffer on the host that each client references for an undo/redo procedure.

Otherwise I think this is a great problem that offers a different approach to collaboration on editing.

Replying to Christophe:

Hello, A basic undo/redo system isn't available in the GUI (no menu entry or button to do "undo" or "redo"). I look into src and found some kind of implementation. But nothing connect src code to GUI. I know undo/redo is very difficult to implement in "concurent editor" (I read mailling list and articles). But I think the very basic implementation (global undo/redo on the document, for all users) be _very_ usefull instead of "nothing" (in waiting for a better control). Thank's for your work on this project. Christophe.

  Changed 6 years ago by armin

  • status changed from new to closed
  • resolution set to fixed

Proper Local Group Undo has been implemented in libinfinity and Gobby 0.4.90.

Note: See TracTickets for help on using tickets.