Merge branch 'bp/widget-focus-hotkeys'
git-gui learned to switch focus between widgets "unstaged commits", "staged commits", "diff", and "commit message" using the keyboard shortcuts Alt+1, Alt+2, Alt+3, and Alt+4 respectively. * bp/widget-focus-hotkeys: git-gui: add hotkeys to set widget focus
This commit is contained in:
commit
5a2bb62180
32
git-gui.sh
32
git-gui.sh
@ -2495,7 +2495,7 @@ proc force_first_diff {after} {
|
|||||||
|
|
||||||
proc toggle_or_diff {mode w args} {
|
proc toggle_or_diff {mode w args} {
|
||||||
global file_states file_lists current_diff_path ui_index ui_workdir
|
global file_states file_lists current_diff_path ui_index ui_workdir
|
||||||
global last_clicked selected_paths
|
global last_clicked selected_paths file_lists_last_clicked
|
||||||
|
|
||||||
if {$mode eq "click"} {
|
if {$mode eq "click"} {
|
||||||
foreach {x y} $args break
|
foreach {x y} $args break
|
||||||
@ -2527,6 +2527,8 @@ proc toggle_or_diff {mode w args} {
|
|||||||
$ui_index tag remove in_sel 0.0 end
|
$ui_index tag remove in_sel 0.0 end
|
||||||
$ui_workdir tag remove in_sel 0.0 end
|
$ui_workdir tag remove in_sel 0.0 end
|
||||||
|
|
||||||
|
set file_lists_last_clicked($w) $path
|
||||||
|
|
||||||
# Determine the state of the file
|
# Determine the state of the file
|
||||||
if {[info exists file_states($path)]} {
|
if {[info exists file_states($path)]} {
|
||||||
set state [lindex $file_states($path) 0]
|
set state [lindex $file_states($path) 0]
|
||||||
@ -2640,6 +2642,26 @@ proc show_less_context {} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proc focus_widget {widget} {
|
||||||
|
global file_lists last_clicked selected_paths
|
||||||
|
global file_lists_last_clicked
|
||||||
|
|
||||||
|
if {[llength $file_lists($widget)] > 0} {
|
||||||
|
set path $file_lists_last_clicked($widget)
|
||||||
|
set index [lsearch -sorted -exact $file_lists($widget) $path]
|
||||||
|
if {$index < 0} {
|
||||||
|
set index 0
|
||||||
|
set path [lindex $file_lists($widget) $index]
|
||||||
|
}
|
||||||
|
|
||||||
|
focus $widget
|
||||||
|
set last_clicked [list $widget [expr $index + 1]]
|
||||||
|
array unset selected_paths
|
||||||
|
set selected_paths($path) 1
|
||||||
|
show_diff $path $widget
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
##
|
##
|
||||||
## ui construction
|
## ui construction
|
||||||
@ -3852,6 +3874,14 @@ foreach i [list $ui_index $ui_workdir] {
|
|||||||
}
|
}
|
||||||
unset i
|
unset i
|
||||||
|
|
||||||
|
bind . <Alt-Key-1> {focus_widget $::ui_workdir}
|
||||||
|
bind . <Alt-Key-2> {focus_widget $::ui_index}
|
||||||
|
bind . <Alt-Key-3> {focus $::ui_diff}
|
||||||
|
bind . <Alt-Key-4> {focus $::ui_comm}
|
||||||
|
|
||||||
|
set file_lists_last_clicked($ui_index) {}
|
||||||
|
set file_lists_last_clicked($ui_workdir) {}
|
||||||
|
|
||||||
set file_lists($ui_index) [list]
|
set file_lists($ui_index) [list]
|
||||||
set file_lists($ui_workdir) [list]
|
set file_lists($ui_workdir) [list]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user