[Qt-creator] how are git blame and git diff choosing the editor to display in

Tobias Hunger tobias.hunger at digia.com
Tue May 13 11:14:10 CEST 2014

On 12.05.2014 18:31, Cristian Tibirna wrote:
> Hello
> Before I get a bad case of neck muscles soreness, I guess it's better to ask
> here:
> I have 2 displays (yay!) and I use to open a secondary QtCreator
> editor(separate window) in the second display. If I hit Alt+G, Alt+B in one
> editor, the git-blame's output is sent to the other window/frame (the one
> which doesn't have the focus). Now, if in the blame I click one of the
> revision numbers, the corresponding git-diff appears in the original (first)
> window. This, IMHO, breaks the rule of least surprise. E.g. Ctrl+K does the
> good thing (opens a new editor on-top/instead-of the one that currently has
> the focus).
> I guess I can get the logic of not obscuring the current editing with the
> results of commands that open new editors, but could be this rendered
> configurable somehow (e.g. be able to choose not to apply it to git
> navigations originated in a git result buffer?).
> Thanks!

Hallo Christian,

Let's call those areas that creator can put editors in "splits". You can 
have one split per monitor, but you can get the same behavior with 
multiple splits in the Qt Creator main window.

I think in the Git plugin we are just opening and activating editors and 
go with the default behavior. Unfortunately I am not an expert in this 
area and never did any serious looking into the editors and how we open 
them, but I would expect creator to keep the split with focus visible 
and to open new editors in other split -- if there are any. In general I 
think that approach does make sense. You seem to agree that it is the 
right thing to do when opening git blame.

How would you think about your use case if you had three splits (e.g. 
you buy your next monitor and wire it up)? Then the text would be on the 
first, the git blame output on the second and the git show output on the 
third. Wouldn't that again be as expected then?

We have some "InNextSplit" variants for some commands like 
"followSymbol" and some more. Maybe we need to generalize that so that 
we have similar options for all commands that open editors. That way you 
could decide which variation you prefer. You could either trigger 
"gitShow" or "gitShowInNextSplit" based on the current situation or just 
assign your key bindings in such a way that your preferred actions are 
the ones that are trigged by the key sequences you are used to.

Somewhat unrelated to the key bindings: I have a personal wish list 
items for a long time now: Being able to always have headers in one 
split and sources in another (next to each other on one monitor in my 
setup). One approach for that to work could be to have splits that 
"attract" certain mime-types. So all editors opened with documents of 
that mime type would by default end up in the split most attractive to 
that mime-type.

Could something like that work for you? Basically you would have to set 
up one split attractive to VCS-relevant mime-types and all the editors 
triggered by the VCSes end up there.

Let's assume you have splits A and B with B being attractive to VCS 
editors. So if you trigger git blame in split A, then git blame output 
would end up in split B. Triggering git show there would have that 
output in split B, too. That is what I understood you to want. But if 
you trigger git blame in split B, then that would also open in split B, 
covering the editor you were just working with. That in turn does not 
seem to be what you want.

Best Regards,

Tobias Hunger, Senior Software Engineer - Digia, Qt
Digia Germany GmbH, Rudower Chaussee 13, D-12489 Berlin
Geschäftsführer: Mika Pälsi, Juha Varelius, Tuula Haataja
Sitz der Gesellschaft: Berlin. USt-IdNr: DE 286 306 868
Registergericht: Amtsgericht Charlottenburg, HRB 144331 B

More information about the Qt-creator mailing list