-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a flag to show git blame
#1536
Comments
Thank you for your request. I think I like this idea! We could implement this as a new Layout-wise, we could probably include a second side-bar to the right of the line-number+git-changes side bar. Another idea could be to include it on the right hand side of the screen. Having the source code way out on the right is actually something I don't really like about the default The
|
What I really like about this idea is that I typically use To add a counter-argument as well: this leads us further away from "do one thing and do it well". It sounds like a rather easy to implement feature, but it might also be quite complex to get the layout right - something which would further complicate our "rendering" logic. @eth-p @keith-hall @Enselic: What's your opinion on this? |
Since it already is within scope of bat to integrate with git, I'd say this is a perfectly reasonable feature request. However, in my opinion, a good git blame tool needs to enable easy navigation back and forth in the git log, i.e. have e.g. a "blame parent commit of the commit that last changed this line" feature, like So for me the question boils down to "Is it ok for bat to only be a mediocre git blame tool?", and the answer I'm currently leaning towards is "If you can't do it really well, don't do it at all". There could of course be a clever way to implement "blame parent commit" that I'm not thinking about. That would perhaps change my mind. |
FWIW, my original reason for requesting this feature is because I was looking through a bunch of code with |
Thanks for elaborating on your use case! That particular VS Code extension is what I personally use. For the record, I would like to point out that it has a "Blame Previous Revision" button if you hover over its annotation, which works the same as "blame parent commit" I described above. I would like to dig a bit deeper into your use case if I may? Since you know about that extension, I suspect you are a VS Code user. So why not use that extension with VS Code? Then you get git blame information together with syntax highlightning. Sometimes, one is of course in a situation where Let me clarify that I am not trying to tell you what to do and not do here, I'm just curious about more details on your particular use case :) |
I don't do much code exploration in vscode. I tend to go into a repo and |
would be great to see this |
One way this could be implemented is if bat could ignore the first N characters of every line when reading the input. EG: my |
Reading the current issue I am lead to believe that adding Nonetheless I found this issue because it seems to be one requested once again in the newer #2810 issue. Currently I have implemented a new decorator (following the example of the Due to the "formatting" happening outside/before the decorator, in the current draft, there is no ability to highlight different parts of the "blame". This might be implemented in case you think I'm moving in the right direction at the moment. Another thing which I believe would be beneficial but looked like too much change in existing functionality is getting the blame for a line directly in the decorator (as it is now passed to the Feel free to inform me if you think that this is pointless, in other case, I might set some more time aside to see if I can polish it a bit more. |
I was looking for a feature to color source code in #!/usr/bin/env bash
blame_lines=()
while IFS= read -r line; do
blame_lines+=("$line")
done < <(git blame "$@" --color-lines --color-by-age)
first_line="$(head -n 1 $@)"
offset=$(("${#blame_lines[0]}" - "${#first_line}"))
index=0
while IFS= read -r line; do
echo "${blame_lines[$index]:0:$offset}$line"
((index++))
done < <(bat --plain --color=always "$@") |
@speed2exe very nice! I love it! FYI |
@speed2exe FYI i cleaned it up a bit and added |
It would be awesome to see the syntax highlighted output of
bat
with the info fromgit blame
included. Bonus points for supportinggit blame -w
The text was updated successfully, but these errors were encountered: