Re: [PATCH] git-gui: Fast staging/unstaging of hunks/lines
On Mon, Apr 5, 2010 at 11:01, Bert Wesarg <bert.wesarg@googlemail.com> 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.
Show 37 quoted lines
>
> Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
> ---
> 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
>
>