Merge git://repo.or.cz/git-gui
* git://repo.or.cz/git-gui: git-gui: correct spelling errors in comments git-gui: add menu item to launch a bash shell on Windows. git-gui: corrected setup of git worktree under cygwin. git-gui: right half window is paned git-gui: Add gui.displayuntracked option git-gui: show the maxrecentrepo config option in the preferences dialog git-gui: added gui.maxrecentrepo to extend the number of remembered repos git-gui: Improve font rendering on retina macbooks
This commit is contained in:
commit
3d252a9c59
@ -4,7 +4,7 @@ all::
|
|||||||
#
|
#
|
||||||
# Define NO_MSGFMT if you do not have msgfmt from the GNU gettext
|
# Define NO_MSGFMT if you do not have msgfmt from the GNU gettext
|
||||||
# package and want to use our rough pure Tcl po->msg translator.
|
# package and want to use our rough pure Tcl po->msg translator.
|
||||||
# TCL_PATH must be vaild for this to work.
|
# TCL_PATH must be valid for this to work.
|
||||||
#
|
#
|
||||||
|
|
||||||
GIT-VERSION-FILE: FORCE
|
GIT-VERSION-FILE: FORCE
|
||||||
|
@ -894,6 +894,7 @@ set default_config(gui.textconv) true
|
|||||||
set default_config(gui.pruneduringfetch) false
|
set default_config(gui.pruneduringfetch) false
|
||||||
set default_config(gui.trustmtime) false
|
set default_config(gui.trustmtime) false
|
||||||
set default_config(gui.fastcopyblame) false
|
set default_config(gui.fastcopyblame) false
|
||||||
|
set default_config(gui.maxrecentrepo) 10
|
||||||
set default_config(gui.copyblamethreshold) 40
|
set default_config(gui.copyblamethreshold) 40
|
||||||
set default_config(gui.blamehistoryctx) 7
|
set default_config(gui.blamehistoryctx) 7
|
||||||
set default_config(gui.diffcontext) 5
|
set default_config(gui.diffcontext) 5
|
||||||
@ -912,6 +913,7 @@ set font_descs {
|
|||||||
{fontdiff font_diff {mc "Diff/Console Font"}}
|
{fontdiff font_diff {mc "Diff/Console Font"}}
|
||||||
}
|
}
|
||||||
set default_config(gui.stageuntracked) ask
|
set default_config(gui.stageuntracked) ask
|
||||||
|
set default_config(gui.displayuntracked) true
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
##
|
##
|
||||||
@ -1282,7 +1284,11 @@ apply_config
|
|||||||
|
|
||||||
# v1.7.0 introduced --show-toplevel to return the canonical work-tree
|
# v1.7.0 introduced --show-toplevel to return the canonical work-tree
|
||||||
if {[package vsatisfies $_git_version 1.7.0]} {
|
if {[package vsatisfies $_git_version 1.7.0]} {
|
||||||
set _gitworktree [git rev-parse --show-toplevel]
|
if { [is_Cygwin] } {
|
||||||
|
catch {set _gitworktree [exec cygpath --windows [git rev-parse --show-toplevel]]}
|
||||||
|
} else {
|
||||||
|
set _gitworktree [git rev-parse --show-toplevel]
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
# try to set work tree from environment, core.worktree or use
|
# try to set work tree from environment, core.worktree or use
|
||||||
# cdup to obtain a relative path to the top of the worktree. If
|
# cdup to obtain a relative path to the top of the worktree. If
|
||||||
@ -1550,18 +1556,23 @@ proc rescan_stage2 {fd after} {
|
|||||||
set buf_rdf {}
|
set buf_rdf {}
|
||||||
set buf_rlo {}
|
set buf_rlo {}
|
||||||
|
|
||||||
set rescan_active 3
|
set rescan_active 2
|
||||||
ui_status [mc "Scanning for modified files ..."]
|
ui_status [mc "Scanning for modified files ..."]
|
||||||
set fd_di [git_read diff-index --cached -z [PARENT]]
|
set fd_di [git_read diff-index --cached -z [PARENT]]
|
||||||
set fd_df [git_read diff-files -z]
|
set fd_df [git_read diff-files -z]
|
||||||
set fd_lo [eval git_read ls-files --others -z $ls_others]
|
|
||||||
|
|
||||||
fconfigure $fd_di -blocking 0 -translation binary -encoding binary
|
fconfigure $fd_di -blocking 0 -translation binary -encoding binary
|
||||||
fconfigure $fd_df -blocking 0 -translation binary -encoding binary
|
fconfigure $fd_df -blocking 0 -translation binary -encoding binary
|
||||||
fconfigure $fd_lo -blocking 0 -translation binary -encoding binary
|
|
||||||
fileevent $fd_di readable [list read_diff_index $fd_di $after]
|
fileevent $fd_di readable [list read_diff_index $fd_di $after]
|
||||||
fileevent $fd_df readable [list read_diff_files $fd_df $after]
|
fileevent $fd_df readable [list read_diff_files $fd_df $after]
|
||||||
fileevent $fd_lo readable [list read_ls_others $fd_lo $after]
|
|
||||||
|
if {[is_config_true gui.displayuntracked]} {
|
||||||
|
set fd_lo [eval git_read ls-files --others -z $ls_others]
|
||||||
|
fconfigure $fd_lo -blocking 0 -translation binary -encoding binary
|
||||||
|
fileevent $fd_lo readable [list read_ls_others $fd_lo $after]
|
||||||
|
incr rescan_active
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc load_message {file {encoding {}}} {
|
proc load_message {file {encoding {}}} {
|
||||||
@ -2654,6 +2665,16 @@ if {![is_bare]} {
|
|||||||
.mbar.repository add command \
|
.mbar.repository add command \
|
||||||
-label [mc "Explore Working Copy"] \
|
-label [mc "Explore Working Copy"] \
|
||||||
-command {do_explore}
|
-command {do_explore}
|
||||||
|
}
|
||||||
|
|
||||||
|
if {[is_Windows]} {
|
||||||
|
.mbar.repository add command \
|
||||||
|
-label [mc "Git Bash"] \
|
||||||
|
-command {eval exec [auto_execok start] \
|
||||||
|
[list "Git Bash" bash --login -l &]}
|
||||||
|
}
|
||||||
|
|
||||||
|
if {[is_Windows] || ![is_bare]} {
|
||||||
.mbar.repository add separator
|
.mbar.repository add separator
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3203,13 +3224,19 @@ unset i
|
|||||||
|
|
||||||
# -- Diff and Commit Area
|
# -- Diff and Commit Area
|
||||||
#
|
#
|
||||||
${NS}::frame .vpane.lower -height 300 -width 400
|
${NS}::panedwindow .vpane.lower -orient vertical
|
||||||
${NS}::frame .vpane.lower.commarea
|
${NS}::frame .vpane.lower.commarea
|
||||||
${NS}::frame .vpane.lower.diff -relief sunken -borderwidth 1
|
${NS}::frame .vpane.lower.diff -relief sunken -borderwidth 1 -height 500
|
||||||
pack .vpane.lower.diff -fill both -expand 1
|
.vpane.lower add .vpane.lower.diff
|
||||||
pack .vpane.lower.commarea -side bottom -fill x
|
.vpane.lower add .vpane.lower.commarea
|
||||||
.vpane add .vpane.lower
|
.vpane add .vpane.lower
|
||||||
if {!$use_ttk} {.vpane paneconfigure .vpane.lower -sticky nsew}
|
if {$use_ttk} {
|
||||||
|
.vpane.lower pane .vpane.lower.diff -weight 1
|
||||||
|
.vpane.lower pane .vpane.lower.commarea -weight 0
|
||||||
|
} else {
|
||||||
|
.vpane.lower paneconfigure .vpane.lower.diff -stretch always
|
||||||
|
.vpane.lower paneconfigure .vpane.lower.commarea -stretch never
|
||||||
|
}
|
||||||
|
|
||||||
# -- Commit Area Buttons
|
# -- Commit Area Buttons
|
||||||
#
|
#
|
||||||
|
@ -5,7 +5,7 @@ class blame {
|
|||||||
|
|
||||||
image create photo ::blame::img_back_arrow -data {R0lGODlhGAAYAIUAAPwCBEzKXFTSZIz+nGzmhGzqfGTidIT+nEzGXHTqhGzmfGzifFzadETCVES+VARWDFzWbHzyjAReDGTadFTOZDSyRDyyTCymPARaFGTedFzSbDy2TCyqRCyqPARaDAyCHES6VDy6VCyiPAR6HCSeNByWLARyFARiDARqFGTifARiFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAYABgAAAajQIBwSCwaj8ikcsk0BppJwRPqHEypQwHBis0WDAdEFyBIKBaMAKLBdjQeSkFBYTBAIvgEoS6JmhUTEwIUDQ4VFhcMGEhyCgoZExoUaxsWHB0THkgfAXUGAhoBDSAVFR0XBnCbDRmgog0hpSIiDJpJIyEQhBUcJCIlwA22SSYVogknEg8eD82qSigdDSknY0IqJQXPYxIl1dZCGNvWw+Dm510GQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7}
|
image create photo ::blame::img_back_arrow -data {R0lGODlhGAAYAIUAAPwCBEzKXFTSZIz+nGzmhGzqfGTidIT+nEzGXHTqhGzmfGzifFzadETCVES+VARWDFzWbHzyjAReDGTadFTOZDSyRDyyTCymPARaFGTedFzSbDy2TCyqRCyqPARaDAyCHES6VDy6VCyiPAR6HCSeNByWLARyFARiDARqFGTifARiFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAYABgAAAajQIBwSCwaj8ikcsk0BppJwRPqHEypQwHBis0WDAdEFyBIKBaMAKLBdjQeSkFBYTBAIvgEoS6JmhUTEwIUDQ4VFhcMGEhyCgoZExoUaxsWHB0THkgfAXUGAhoBDSAVFR0XBnCbDRmgog0hpSIiDJpJIyEQhBUcJCIlwA22SSYVogknEg8eD82qSigdDSknY0IqJQXPYxIl1dZCGNvWw+Dm510GQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7}
|
||||||
|
|
||||||
# Persistant data (survives loads)
|
# Persistent data (survives loads)
|
||||||
#
|
#
|
||||||
field history {}; # viewer history: {commit path}
|
field history {}; # viewer history: {commit path}
|
||||||
field header ; # array commit,key -> header field
|
field header ; # array commit,key -> header field
|
||||||
|
@ -24,6 +24,10 @@ field sorted_recent ; # recent repositories (sorted)
|
|||||||
constructor pick {} {
|
constructor pick {} {
|
||||||
global M1T M1B use_ttk NS
|
global M1T M1B use_ttk NS
|
||||||
|
|
||||||
|
if {[set maxrecent [get_config gui.maxrecentrepo]] eq {}} {
|
||||||
|
set maxrecent 10
|
||||||
|
}
|
||||||
|
|
||||||
make_dialog top w
|
make_dialog top w
|
||||||
wm title $top [mc "Git Gui"]
|
wm title $top [mc "Git Gui"]
|
||||||
|
|
||||||
@ -148,7 +152,7 @@ constructor pick {} {
|
|||||||
-background [get_bg_color $w_body.recentlabel] \
|
-background [get_bg_color $w_body.recentlabel] \
|
||||||
-wrap none \
|
-wrap none \
|
||||||
-width 50 \
|
-width 50 \
|
||||||
-height 10
|
-height $maxrecent
|
||||||
$w_recentlist tag conf link \
|
$w_recentlist tag conf link \
|
||||||
-foreground blue \
|
-foreground blue \
|
||||||
-underline 1
|
-underline 1
|
||||||
@ -264,7 +268,11 @@ proc _append_recentrepos {path} {
|
|||||||
git config --global --add gui.recentrepo $path
|
git config --global --add gui.recentrepo $path
|
||||||
load_config 1
|
load_config 1
|
||||||
|
|
||||||
while {[llength $recent] > 10} {
|
if {[set maxrecent [get_config gui.maxrecentrepo]] eq {}} {
|
||||||
|
set maxrecent 10
|
||||||
|
}
|
||||||
|
|
||||||
|
while {[llength $recent] > $maxrecent} {
|
||||||
_unset_recentrepo [lindex $recent 0]
|
_unset_recentrepo [lindex $recent 0]
|
||||||
set recent [lrange $recent 1 end]
|
set recent [lrange $recent 1 end]
|
||||||
}
|
}
|
||||||
|
@ -414,7 +414,7 @@ proc revert_helper {txt paths} {
|
|||||||
# such distinction is needed in some languages. Previously, the
|
# such distinction is needed in some languages. Previously, the
|
||||||
# code used "Revert changes in" for both, but that can't work
|
# code used "Revert changes in" for both, but that can't work
|
||||||
# in languages where 'in' must be combined with word from
|
# in languages where 'in' must be combined with word from
|
||||||
# rest of string (in diffrent way for both cases of course).
|
# rest of string (in different way for both cases of course).
|
||||||
#
|
#
|
||||||
# FIXME: Unfortunately, even that isn't enough in some languages
|
# FIXME: Unfortunately, even that isn't enough in some languages
|
||||||
# as they have quite complex plural-form rules. Unfortunately,
|
# as they have quite complex plural-form rules. Unfortunately,
|
||||||
|
@ -150,6 +150,7 @@ proc do_options {} {
|
|||||||
{b gui.matchtrackingbranch {mc "Match Tracking Branches"}}
|
{b gui.matchtrackingbranch {mc "Match Tracking Branches"}}
|
||||||
{b gui.textconv {mc "Use Textconv For Diffs and Blames"}}
|
{b gui.textconv {mc "Use Textconv For Diffs and Blames"}}
|
||||||
{b gui.fastcopyblame {mc "Blame Copy Only On Changed Files"}}
|
{b gui.fastcopyblame {mc "Blame Copy Only On Changed Files"}}
|
||||||
|
{i-0..100 gui.maxrecentrepo {mc "Maximum Length of Recent Repositories List"}}
|
||||||
{i-20..200 gui.copyblamethreshold {mc "Minimum Letters To Blame Copy On"}}
|
{i-20..200 gui.copyblamethreshold {mc "Minimum Letters To Blame Copy On"}}
|
||||||
{i-0..300 gui.blamehistoryctx {mc "Blame History Context Radius (days)"}}
|
{i-0..300 gui.blamehistoryctx {mc "Blame History Context Radius (days)"}}
|
||||||
{i-1..99 gui.diffcontext {mc "Number of Diff Context Lines"}}
|
{i-1..99 gui.diffcontext {mc "Number of Diff Context Lines"}}
|
||||||
@ -159,6 +160,7 @@ proc do_options {} {
|
|||||||
{c gui.encoding {mc "Default File Contents Encoding"}}
|
{c gui.encoding {mc "Default File Contents Encoding"}}
|
||||||
{b gui.warndetachedcommit {mc "Warn before committing to a detached head"}}
|
{b gui.warndetachedcommit {mc "Warn before committing to a detached head"}}
|
||||||
{s gui.stageuntracked {mc "Staging of untracked files"} {list "yes" "no" "ask"}}
|
{s gui.stageuntracked {mc "Staging of untracked files"} {list "yes" "no" "ask"}}
|
||||||
|
{b gui.displayuntracked {mc "Show untracked files"}}
|
||||||
} {
|
} {
|
||||||
set type [lindex $option 0]
|
set type [lindex $option 0]
|
||||||
set name [lindex $option 1]
|
set name [lindex $option 1]
|
||||||
|
@ -14,7 +14,7 @@ field w_menu ; # context menu for the widget
|
|||||||
field s_menuidx 0 ; # last index of insertion into $w_menu
|
field s_menuidx 0 ; # last index of insertion into $w_menu
|
||||||
|
|
||||||
field s_i {} ; # timer registration for _run callbacks
|
field s_i {} ; # timer registration for _run callbacks
|
||||||
field s_clear 0 ; # did we erase mispelled tags yet?
|
field s_clear 0 ; # did we erase misspelled tags yet?
|
||||||
field s_seen [list] ; # lines last seen from $w_text in _run
|
field s_seen [list] ; # lines last seen from $w_text in _run
|
||||||
field s_checked [list] ; # lines already checked
|
field s_checked [list] ; # lines already checked
|
||||||
field s_pending [list] ; # [$line $data] sent to ispell/aspell
|
field s_pending [list] ; # [$line $data] sent to ispell/aspell
|
||||||
@ -259,7 +259,7 @@ method _run {} {
|
|||||||
if {$n == $cur_line
|
if {$n == $cur_line
|
||||||
&& ![regexp {^\W$} [$w_text get $cur_pos insert]]} {
|
&& ![regexp {^\W$} [$w_text get $cur_pos insert]]} {
|
||||||
|
|
||||||
# If the current word is mispelled remove the tag
|
# If the current word is misspelled remove the tag
|
||||||
# but force a spellcheck later.
|
# but force a spellcheck later.
|
||||||
#
|
#
|
||||||
set tags [$w_text tag names $cur_pos]
|
set tags [$w_text tag names $cur_pos]
|
||||||
|
@ -24,5 +24,7 @@
|
|||||||
<string>GITg</string>
|
<string>GITg</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>@@GITGUI_VERSION@@</string>
|
<string>@@GITGUI_VERSION@@</string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
Loading…
Reference in New Issue
Block a user