I ran into a similar issue with emacs, so I made Dumb Jump. I tried many of the solutions mentioned in the accepted answer, but I always ran into one or more of the following issues:
- Solution only worked for a single programming language
- Solution required an index (TAG) file or persistent process
I badly wanted a solution that "just worked" and didn't require customization or setup. That is, I wanted to clone a random repo on Github and navigate around it like any other of my own projects.
Right now Dumb Jump has basic support for:
- Emacs Lisp
- ...and more
It's available via MELPA and GitHub issues and PRs are more than welcome.