From: Bert Wesarg Date: Sun, 11 Apr 2010 07:38:51 GMT Subject: Re: [PATCH] git-gui: Fast staging/unstaging of hunks/lines Message-ID: In-Reply-To: <7ed246d74b2ea872a4af3b99d519590ab17ffefc.1270457921.git.bert.wesarg@googlemail.com> On Mon, Apr 5, 2010 at 11:01, Bert Wesarg wrote: > 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. Ping. > > Signed-off-by: Bert Wesarg > --- >  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 > >