Merge git://repo.or.cz/git-gui

* git://repo.or.cz/git-gui:
  git-gui (Windows): Change wrapper to execdir 'libexec/git-core'
  git-gui (Windows): Switch to relative discovery of oguilib
  git-gui: Correct installation of library to be $prefix/share
  git-gui: Fix gitk search in $PATH to work on Windows
  git-gui: Preserve scroll position on reshow_diff.
  git-gui: Fix the Remote menu separator.
This commit is contained in:
Junio C Hamano
2008-07-30 00:18:26 -07:00
4 changed files with 36 additions and 11 deletions

View File

@ -34,8 +34,12 @@ ifndef gitexecdir
endif endif
ifndef sharedir ifndef sharedir
ifeq (git-core,$(notdir $(gitexecdir)))
sharedir := $(dir $(patsubst %/,%,$(dir $(gitexecdir))))share
else
sharedir := $(dir $(gitexecdir))share sharedir := $(dir $(gitexecdir))share
endif endif
endif
ifndef INSTALL ifndef INSTALL
INSTALL = install INSTALL = install
@ -156,6 +160,7 @@ endif
ifneq (,$(findstring MINGW,$(uname_S))) ifneq (,$(findstring MINGW,$(uname_S)))
NO_MSGFMT=1 NO_MSGFMT=1
GITGUI_WINDOWS_WRAPPER := YesPlease GITGUI_WINDOWS_WRAPPER := YesPlease
GITGUI_RELATIVE := 1
endif endif
ifdef GITGUI_MACOSXAPP ifdef GITGUI_MACOSXAPP

View File

@ -317,7 +317,7 @@ proc _git_cmd {name} {
return $v return $v
} }
proc _which {what} { proc _which {what args} {
global env _search_exe _search_path global env _search_exe _search_path
if {$_search_path eq {}} { if {$_search_path eq {}} {
@ -340,8 +340,14 @@ proc _which {what} {
} }
} }
if {[is_Windows] && [lsearch -exact $args -script] >= 0} {
set suffix {}
} else {
set suffix $_search_exe
}
foreach p $_search_path { foreach p $_search_path {
set p [file join $p $what$_search_exe] set p [file join $p $what$suffix]
if {[file exists $p]} { if {[file exists $p]} {
return [file normalize $p] return [file normalize $p]
} }
@ -1686,7 +1692,7 @@ proc do_gitk {revs} {
# -- Always start gitk through whatever we were loaded with. This # -- Always start gitk through whatever we were loaded with. This
# lets us bypass using shell process on Windows systems. # lets us bypass using shell process on Windows systems.
# #
set exe [_which gitk] set exe [_which gitk -script]
set cmd [list [info nameofexecutable] $exe] set cmd [list [info nameofexecutable] $exe]
if {$exe eq {}} { if {$exe eq {}} {
error_popup [mc "Couldn't find gitk in PATH"] error_popup [mc "Couldn't find gitk in PATH"]
@ -2925,6 +2931,7 @@ if {[is_enabled transport]} {
populate_fetch_menu populate_fetch_menu
set n [expr {[.mbar.remote index end] - $n}] set n [expr {[.mbar.remote index end] - $n}]
if {$n > 0} { if {$n > 0} {
if {[.mbar.remote type 0] eq "tearoff"} { incr n }
.mbar.remote insert $n separator .mbar.remote insert $n separator
} }
unset n unset n

View File

@ -19,6 +19,7 @@ proc clear_diff {} {
proc reshow_diff {} { proc reshow_diff {} {
global file_states file_lists global file_states file_lists
global current_diff_path current_diff_side global current_diff_path current_diff_side
global ui_diff
set p $current_diff_path set p $current_diff_path
if {$p eq {}} { if {$p eq {}} {
@ -28,7 +29,8 @@ proc reshow_diff {} {
|| [lsearch -sorted -exact $file_lists($current_diff_side) $p] == -1} { || [lsearch -sorted -exact $file_lists($current_diff_side) $p] == -1} {
clear_diff clear_diff
} else { } else {
show_diff $p $current_diff_side set save_pos [lindex [$ui_diff yview] 0]
show_diff $p $current_diff_side {} $save_pos
} }
} }
@ -52,7 +54,7 @@ A rescan will be automatically started to find other files which may have the sa
rescan ui_ready 0 rescan ui_ready 0
} }
proc show_diff {path w {lno {}}} { proc show_diff {path w {lno {}} {scroll_pos {}}} {
global file_states file_lists global file_states file_lists
global is_3way_diff diff_active repo_config global is_3way_diff diff_active repo_config
global ui_diff ui_index ui_workdir global ui_diff ui_index ui_workdir
@ -151,6 +153,10 @@ proc show_diff {path w {lno {}}} {
$ui_diff conf -state disabled $ui_diff conf -state disabled
set diff_active 0 set diff_active 0
unlock_index unlock_index
if {$scroll_pos ne {}} {
update
$ui_diff yview moveto $scroll_pos
}
ui_ready ui_ready
return return
} }
@ -190,10 +196,10 @@ proc show_diff {path w {lno {}}} {
-blocking 0 \ -blocking 0 \
-encoding binary \ -encoding binary \
-translation binary -translation binary
fileevent $fd readable [list read_diff $fd] fileevent $fd readable [list read_diff $fd $scroll_pos]
} }
proc read_diff {fd} { proc read_diff {fd scroll_pos} {
global ui_diff diff_active global ui_diff diff_active
global is_3way_diff current_diff_header global is_3way_diff current_diff_header
@ -282,6 +288,10 @@ proc read_diff {fd} {
close $fd close $fd
set diff_active 0 set diff_active 0
unlock_index unlock_index
if {$scroll_pos ne {}} {
update
$ui_diff yview moveto $scroll_pos
}
ui_ready ui_ready
if {[$ui_diff index end] eq {2.0}} { if {[$ui_diff index end] eq {2.0}} {

View File

@ -8,9 +8,12 @@ if { $argc >=2 && [lindex $argv 0] == "--working-dir" } {
incr argc -2 incr argc -2
} }
set gitguidir [file dirname [info script]] set bindir [file dirname \
regsub -all ";" $gitguidir "\\;" gitguidir [file dirname \
set env(PATH) "$gitguidir;$env(PATH)" [file dirname [info script]]]]
unset gitguidir set bindir [file join $bindir bin]
regsub -all ";" $bindir "\\;" bindir
set env(PATH) "$bindir;$env(PATH)"
unset bindir
source [file join [file dirname [info script]] git-gui.tcl] source [file join [file dirname [info script]] git-gui.tcl]