Often when fixing a bug or implementing a new feature in a code repository, I start off with an investigatory step.
For example, I would have a lead, a word such as "Article" and I would start by grepping the codebase for "Article". Suppose there are 5 files that contain the word. I would open up one of these files with emacs. Reading the file, I would learn that the code in that file is just a "wrapper" function, and the real meat of the work happens in another place (the parent/caller function) This step would repeat for about a dozen times until I found what I'm looking for. Sometimes I don't find what I'm looking for. Sometimes on a 10 step exploration ( 10 files opened up consecutively) I would decide to take 4 steps back, and branch off in another direction/idea.
Four days later I would be in the shower and have a thought flash, and would want to revisit/retrace my steps but the emacs instance has long been killed.
Is bookmarks.el the answer? Or are there better ways to wander down rabbit holes with emacs.
M-.
to jump to definitions, you can useM-,
to go back to where you've looked for the definition. There's also the mark ring, which has the limitation to being separate for each buffer.