Change history markers confusion

"[email protected]" <[email protected]> Thu, 15 May 2025 07:35:46 -0700 (PDT)
Newsgroups gmane.comp.lib.scintilla.devel
Message-ID <[email protected]>
I'm a little confused by the behavior of the change history markers. I'm 
seeing a modified and saved marker in situations where I would've expected 
a reverted to modified marker. I am using only the markers and turned off 
the indicators.

If I open a file that contains the text

*This is a test.*

and edit it to

*This was a test.*

by moving the cursor to the right of the letter *i* in the word *is*, and 
pressing delete to delete the *i*, the marker in the change history margin 
turns orange. Typing the letters *w*, then *a* continue to make the marker 
orange. When I save it, the marker turns green. If I undo once, the marker 
turns green-yellow. If I undo once again, the marker turns cyan as the line 
is now at its original state. This behaves exactly as expected.

However, if I reopen the file and repeat the edits but after the first undo 
where the marker turns green-yellow, I add a character and the marker stays 
green-yellow instead of orange. The documentation states "The margin shows 
a block indicating the overall state of the line, prioritizing the more 
consequential modified states." but I still would've expected the line to 
be considered modified.

Now reopen the file and edit the line to

*This as I rest.*

by selecting the *i* in *is* and typing the letter *a* to replace the *I*, then 
selecting the letter *a* in the word *a* and pressing the letter *I* to 
replace it, then selecting the letter *t* in *test* and replacing it with 
*r*, the marker turns orange as expected. Save the file and the marker 
turns green. However, if undo once, the marker stays green instead of the 
green-yellow I expected. Undo again and the marker stays green. Why did the 
marker stay green instead of green-yellow? It appears that you get 
different marker colors depending on whether you edited from a single 
position on a saved line versus editing multiple positions on a saved line.

Reopen the file and edit the line to

*This 1 is 2 a 3 test.*

by inserting the characters and saving results in the same behavior with 
the marker staying green as you undo each change until you get back to the 
original state of the line. If you redo all the changes, the marker is 
green. Undo once and the marker stays green. Now type some text and the 
marker turns orange as expected but that conflicts with the behavior from 
my second behavior above where the marker stayed green-yellow after adding 
some text after an undo.

The documentation for SC_MARKNUM_HISTORY_SAVED (green marker) says "This 
line was modified and saved. This line is the same as its state on disk." 
but that's not the behavior that I'm seeing. I looked at Visual Studio and 
their history markers only have 3 states where there is no reverted to 
modified, it's just modified. I originally made reverted to modified and 
modified the same color but a tester got confused by it so I made reverted 
to modified its own color. I now see what the tester got confused by was 
the marker actually turning green after an undo instead of orange.

So is this all a bug or is it behaving as expected?

Also, I put the change history markers in its own margin. If I have markers 
on and indicators off, hiding the change history margin for some reason 
changes the background color of each line of text to the history marker 
color of each line.

-- 
You received this message because you are subscribed to the Google Groups "scintilla-interest" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/scintilla-interest/0a2f6d86-a33b-480b-8021-1da39f95d4e2n%40googlegroups.com.