Sorry for the long response, but you asked why:
Diff tools typically show an overview bar indicating where the files are different, and I think we all see the value of an overview bar in the context of diffs. Editing a file is the process of introducing diffs -- is it really that different?
When I'm editing a 2,000 line file and making changes, I can only see 60 lines at a time. It feels restrictive to my mind; I want "landmarks" and more context. Especially in unfamiliar files -- when working in teams with 500 to 2,000 other developers in projects with anywhere from 10,000 to 600,000 files, it's not surprising that a lot of files are unfamiliar but still need comprehension and/or editing.
I want to see:
1. Where lines have been inserted/changed (I don't mentally differentiate between inserts or changes, and many SE commands blur the distinction anyway by converting "changed" to "inserted" due to the macro writer conveniently deleting a line and then inserting a new properly formatted line; and vice versa).
2. Where lines have been deleted (SE doesn't do this currently), e.g. with a small red mark in the margin in between the adjacent lines. It feels disorienting to see insert/modify markers without being able to see deletion markers; I'm only seeing attributions for part of my "editing payload".
3. Which edits have been saved already, and which edits haven't been saved yet. VS does this very nicely by showing a green mark in the margin for saved edits, and a yellow mark in the margin for unsaved edits.
Why? I'm a visual thinker.
- When I'm copy/pasting from one "Foo.c" to another "Foo.c" that look similar, the overview bar makes it more visually apparent whether I'm in the "copy from" file (unedited, blank overview bar) or the "paste to" file (colorful overview bar), even when the current 60 lines on the screen are unedited in either file.
- When editing an unfamiliar file, I sometimes add lines and scroll around gaining a better understanding of the file. Sometimes while scrolling I lose track of where my edits were in the file, or which of the 8 overloaded functions with the same name the lines were in (overloaded functions diminish the value of using open_local_symbol). An overview bar makes it visually apparent where there are edits, and less annoying/cumbersome to find my bearings again.
- There are a lot of little reasons why it's desirable. There probably isn't any one "this is huge and appeals to everyone" reason. I could give more examples, but instead I'm going to go back to vacationing...
FWIW, a lot of my co-workers have installed an addon for VS that gives it an overview bar (with a miniaturized rendering of the file that even includes syntax coloring; not sure what I think of that part, haven't used it myself yet, but I've used overview bars in various other editors and file viewers).
Anyway, I was hoping this could be done purely in Slick-C, so it would be portable and so it could be docked as a toolbar. But I guess it will require a DLL to do the rendering. Hopefully there's a way to host a bitmap (or a window i.e. HWND) on a form, and dynamically update/replace the bitmap. If so then a DLL could create a bitmap and give it to the Slick-C code to put on the form. Hopefully it can be done purely in memory (versus writing the bitmap to disk and having Slick-C load it from disk). It would be more efficient with less "refresh lag" if it were a native feature.
Ideally it should be a per-window adornment (not a single toolbar), but that requires a native feature. (In the meantime I might try to hack it to be superimposed the overview on top of the scrollbar, but that seems ugly).