And try browsing code on Sourcegraph: https://sourcegraph.com/github.com/gorilla/websocket/-/blob/... (we support other languages as well). Right-click on "parseURL" and choose "Find All References". If you click on "HasPrefix" a few lines below, you'll see a cross-repo jump (and the right-click menu lets you see global/cross-repo references).
Sign up at https://sourcegraph.com to get it on your own GitHub repos.
I found a small issue with "peek definition" window: http://imgur.com/TT2KmpR.
(I am not affiliated with Jetbrains in any way)
Pros/cons of this tool?
Pros: I'm obviously biased so I won't go into those.
Cons: it's not a lightweight tool that's happy with 1 gig of memory. Configuring and waiting for code indexes takes a bit of time, especially if you're trying it out on large legacy codebases. It also won't manage a Git repository for you.
https://gitsense.com/rapid-browsing-1.mp4
And this is an example of bulk diffs browsing:
https://gitsense.com/rapid-browsing-2.mp4
You can find the source for the chrome extension at
http://github.com/gitsense/insight
And the Git indexing engine at
Edit:
It may not be obvious, but for the second example, I'm clicking the right arrow to quickly iterate through the diffs.
For the diff, this is done in realtime with https://github.com/Microsoft/monaco-editor
Also my product isn't really dependent on GitLab or GitHub. It works in standalone mode as well.
For what it's worth, features like that (along with, say, line-by-line staging) are the reason why I usually use a GUI client and only drop down to the command line when necessary.
Something even closer to what you're asking for... in github hit the 'history' button on a file (next to blame) and you'll get the commits which affected it. Hit the 7 character commit-id and you'll be taken to the diff of that change, jumped specifically to the file in question.
The history button in github is close to what I'd like, but it's not quite as friendly as single next/previous buttons that just paginate the changes to a file. That makes cycling through the history very easy, whilst 'click commit id, back, remember which commit we just viewed, click following commit id, repeate' all sounds a bit painful.
e.g. code navigation [1], search [2] and CodeLens [3].
[1] https://referencesource.microsoft.com/#mscorlib/system/strin...
[2] https://www.visualstudio.com/en-us/docs/search/code/advanced...
Checkout android code base for instance: http://gitplex.pmease.com/demo/android-framework-base/files?...
I actually created this tool to suffice my own needs when browsing history of QuickBuild source code.
Very vague landing page with signup here:
What kind of annotations would not make sense as comments?
Comments are inline with the code. Annotations are aside, and serve both as visual anchors and as "aside" notes.
You may also put annotations on any diffs: http://gitplex.pmease.com/demo/android-framework-base/commit...
--
[0] - "smart stick" can be implemented by remembering not just the line in file, but also the contents of that line and a (fuzzy) context.
I'm curious what you think of the single file history in current systems, are they OK but just missing annotations?
That's something that baffles me: the complete lack of a comfortable (or at least not painful) way to read and annotate source code on Android.
--
I dream of a tool that facilitates code reading and exploration. It has some similar features with code review tools, namely:
- integration with version control systems
- basic semantic search/navigation
- looks clean
- not meant to be for writing code
But my dream tool also has following features I haven't seen implemented in any code review tool (or anywhere):
- annotations - not just "comments", but the ability to tag lines, to strike them out, highlight, color, scribble on them, etc. - basically anything you'd do with a printout of a code
- easy way to review history of a single file (with annotations)
- ability to easily bookmark areas / pieces of code and use those bookmarks in comments / annotations
- ability for viewing structural diagrams of the codebase
- full blown semantic search - who calls, calls who, etc.
- project-structure-oriented, not repository-history/commit-oriented
Basically, I'd love a tool not for collaboration, but for individual work - a tool that would facilitate exploring and familiarizing yourself with big codebases, as well as empower one when the time comes to do bigger refactorings.
Would be doubly useful if I could use it on a tablet, so that I could get up from in front of my computer to go and think about the changes I'm about to make (right now, I end up actually printing code if I have to refactor something very messy).