This adds a shortcut to stage/unstage hunks or a range of lines. Which is done on a mouse button 1 release event and holding the control key in the diff view. If there is currently a selection only the selected lines will be staged/unstaged. Otherwise the hunk will be staged/unstaged. Signed-off-by: Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx> --- git-gui/git-gui.sh | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh index 7d54511..e65a0e6 100755 --- a/git-gui/git-gui.sh +++ b/git-gui/git-gui.sh @@ -3452,6 +3452,22 @@ proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} { } bind_button3 $ui_diff [list popup_diff_menu $ctxm $ctxmmg $ctxmsm %x %y %X %Y] +# applies/reverses hunks or lines on button-1 release +proc immediate_apply_hunk_or_lines {x y} { + global current_diff_path file_states + set ::cursorX $x + set ::cursorY $y + + set has_range [expr {[$::ui_diff tag nextrange sel 0.0] != {}}] + if {$has_range} { + apply_range_or_line $::cursorX $:cursorY + do_rescan + } else { + apply_hunk $::cursorX $::cursorY + } +} +bind $ui_diff <$M1B-ButtonRelease-1> {immediate_apply_hunk_or_lines %x %y} + # -- Status Bar # set main_status [::status_bar::new .status] -- 1.7.0.3.418.gf56ac.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html