git-gui: Offer quick access to the HTML formatted documentation.
[gitweb.git] / git-gui.sh
index 68fd7ebf180d31c76f89400a8c5ece42e02f265c..c168826ecc4559de0f569b5794b5f83ce49a0a87 100755 (executable)
@@ -60,6 +60,17 @@ proc is_many_config {name} {
        }
 }
 
+proc is_config_true {name} {
+       global repo_config
+       if {[catch {set v $repo_config($name)}]} {
+               return 0
+       } elseif {$v eq {true} || $v eq {1} || $v eq {yes}} {
+               return 1
+       } else {
+               return 0
+       }
+}
+
 proc load_config {include_global} {
        global repo_config global_config default_config
 
@@ -3755,52 +3766,59 @@ proc do_options {} {
        pack $w.repo -side left -fill both -expand 1 -pady 5 -padx 5
        pack $w.global -side right -fill both -expand 1 -pady 5 -padx 5
 
+       set optid 0
        foreach option {
-               {b pullsummary {Show Pull Summary}}
-               {b trustmtime  {Trust File Modification Timestamps}}
-               {i diffcontext {Number of Diff Context Lines}}
-               {t newbranchtemplate {New Branch Name Template}}
+               {b merge.summary {Summarize Merge Commits}}
+               {i-1..5 merge.verbosity {Merge Verbosity}}
+
+               {b gui.trustmtime  {Trust File Modification Timestamps}}
+               {i-1..99 gui.diffcontext {Number of Diff Context Lines}}
+               {t gui.newbranchtemplate {New Branch Name Template}}
                } {
                set type [lindex $option 0]
                set name [lindex $option 1]
                set text [lindex $option 2]
+               incr optid
                foreach f {repo global} {
-                       switch $type {
+                       switch -glob -- $type {
                        b {
-                               checkbutton $w.$f.$name -text $text \
-                                       -variable ${f}_config_new(gui.$name) \
+                               checkbutton $w.$f.$optid -text $text \
+                                       -variable ${f}_config_new($name) \
                                        -onvalue true \
                                        -offvalue false \
                                        -font font_ui
-                               pack $w.$f.$name -side top -anchor w
+                               pack $w.$f.$optid -side top -anchor w
                        }
-                       i {
-                               frame $w.$f.$name
-                               label $w.$f.$name.l -text "$text:" -font font_ui
-                               pack $w.$f.$name.l -side left -anchor w -fill x
-                               spinbox $w.$f.$name.v \
-                                       -textvariable ${f}_config_new(gui.$name) \
-                                       -from 1 -to 99 -increment 1 \
-                                       -width 3 \
+                       i-* {
+                               regexp -- {-(\d+)\.\.(\d+)$} $type _junk min max
+                               frame $w.$f.$optid
+                               label $w.$f.$optid.l -text "$text:" -font font_ui
+                               pack $w.$f.$optid.l -side left -anchor w -fill x
+                               spinbox $w.$f.$optid.v \
+                                       -textvariable ${f}_config_new($name) \
+                                       -from $min \
+                                       -to $max \
+                                       -increment 1 \
+                                       -width [expr {1 + [string length $max]}] \
                                        -font font_ui
-                               bind $w.$f.$name.v <FocusIn> {%W selection range 0 end}
-                               pack $w.$f.$name.v -side right -anchor e -padx 5
-                               pack $w.$f.$name -side top -anchor w -fill x
+                               bind $w.$f.$optid.v <FocusIn> {%W selection range 0 end}
+                               pack $w.$f.$optid.v -side right -anchor e -padx 5
+                               pack $w.$f.$optid -side top -anchor w -fill x
                        }
                        t {
-                               frame $w.$f.$name
-                               label $w.$f.$name.l -text "$text:" -font font_ui
-                               entry $w.$f.$name.v \
+                               frame $w.$f.$optid
+                               label $w.$f.$optid.l -text "$text:" -font font_ui
+                               entry $w.$f.$optid.v \
                                        -borderwidth 1 \
                                        -relief sunken \
                                        -width 20 \
-                                       -textvariable ${f}_config_new(gui.$name) \
+                                       -textvariable ${f}_config_new($name) \
                                        -font font_ui
-                               pack $w.$f.$name.l -side left -anchor w
-                               pack $w.$f.$name.v -side left -anchor w \
+                               pack $w.$f.$optid.l -side left -anchor w
+                               pack $w.$f.$optid.v -side left -anchor w \
                                        -fill x -expand 1 \
                                        -padx 5
-                               pack $w.$f.$name -side top -anchor w -fill x
+                               pack $w.$f.$optid -side top -anchor w -fill x
                        }
                        }
                }
@@ -4131,8 +4149,9 @@ proc apply_config {} {
        }
 }
 
+set default_config(merge.summary) false
+set default_config(merge.verbosity) 2
 set default_config(gui.trustmtime) false
-set default_config(gui.pullsummary) true
 set default_config(gui.diffcontext) 5
 set default_config(gui.newbranchtemplate) {}
 set default_config(gui.fontui) [font configure font_ui]
@@ -4382,17 +4401,57 @@ if {[is_MacOSX]} {
        lappend disable_on_lock \
                [list .mbar.tools entryconf [.mbar.tools index last] -state]
        }
+}
 
-       # -- Help Menu
-       #
-       .mbar add cascade -label Help -menu .mbar.help
-       menu .mbar.help
+# -- Help Menu
+#
+.mbar add cascade -label Help -menu .mbar.help
+menu .mbar.help
 
+if {![is_MacOSX]} {
        .mbar.help add command -label "About [appname]" \
                -command do_about \
                -font font_ui
 }
 
+set browser {}
+catch {set browser $repo_config(instaweb.browser)}
+set doc_path [file dirname [exec git --exec-path]]
+set doc_path [file join $doc_path Documentation index.html]
+
+if {[is_Windows]} {
+       set doc_path [exec cygpath --windows $doc_path]
+}
+
+if {$browser eq {}} {
+       if {[is_MacOSX]} {
+               set browser open
+       } elseif {[is_Windows]} {
+               set program_files [file dirname [exec cygpath --windir]]
+               set program_files [file join $program_files {Program Files}]
+               set firefox [file join $program_files {Mozilla Firefox} firefox.exe]
+               set ie [file join $program_files {Internet Explorer} IEXPLORE.EXE]
+               if {[file exists $firefox]} {
+                       set browser $firefox
+               } elseif {[file exists $ie]} {
+                       set browser $ie
+               }
+               unset program_files firefox ie
+       }
+}
+
+if {[file isfile $doc_path]} {
+       set doc_url "file:$doc_path"
+} else {
+       set doc_url {http://www.kernel.org/pub/software/scm/git/docs/}
+}
+
+if {$browser ne {}} {
+       .mbar.help add command -label {Online Documentation} \
+               -command [list exec $browser $doc_url &] \
+               -font font_ui
+}
+unset browser doc_path doc_url
 
 # -- Branch Control
 #