I have a half-baked idea for a bundle and I wanted to solicit feedback in an attempt to more fully bake it.
When coding I commonly find myself jumping around not only within a file but often between files. Typically to do this I'm either using the CTags bundle or cmd-E, cmd-shift-F, click in the find window, look at something, then try to figure out where I was. I find myself expending way too much mental effort trying to remember where I am at any point in time.
My idea is for a module which allows you to set global bookmarks per project along with history as you follow the bookmarks. The bookmarks would be persisted via a file in the project root called .tmbookmarks or some such. The bundle would have these actions:
- add bookmark (also places bookmark on top of history) - show bookmarks - delete bookmark (presents list of bookmarks, select to delete one or more) - clear bookmarks (deletes all bookmarks) - show history - go back (returns to most recently added/followed bookmark) - go forward - clear history
The bookmarks/history would be presented either via tmdialog or simply as an HTML window (similar to CTags's navigation window).
The forward/back would be a browser-type history that is populated as you click thru your bookmarks. I'd like to tie the history into the CTags bundle as well.
So for example, you could do something like:
- add bookmark (this would add the current file/line) - cmd-e, cmd-shift-f, click to new file. - go back (this would save the current file/line then jump back to the just added bookmark)
I have to think a bit more about how the bookmarks/history will interact. It might be better to have the history work more like a shell's pushd/popd actions.
Also, obviously as you edit a file your bookmarks end up pointing to the wrong line. However, I have this crazy idea that I can save two or three lines of context with each bookmark (a la diff) so that when following a bookmark I can validate it and resync automatically (a la patch).
Thoughts?
j.