@@ -1969,6 +1969,10 @@ proc confirm_popup {msg {owner .}} {
19691969    return  $confirm_ok 
19701970}
19711971
1972+ proc  haveselectionclipboard  {} {
1973+     return  [expr  {[tk windowingsystem] eq " x11" 
1974+ }
1975+ 
19721976proc  setoptions  {} {
19731977    global  use_ttk
19741978
@@ -2089,7 +2093,7 @@ proc makewindow {} {
20892093    global  diffcontextstring diffcontext
20902094    global  ignorespace
20912095    global  maincursor textcursor curtextcursor
2092-     global  rowctxmenu fakerowmenu mergemax wrapcomment
2096+     global  rowctxmenu fakerowmenu mergemax wrapcomment wrapdefault 
20932097    global  highlight_files gdttype
20942098    global  searchstring sstring
20952099    global  bgcolor fgcolor bglist fglist diffcolors diffbgcolors selectbgcolor
@@ -2223,7 +2227,7 @@ proc makewindow {} {
22232227    set  sha1entry .tf.bar.sha1
22242228    set  entries $sha1entry 
22252229    set  sha1but .tf.bar.sha1label
2226-     button $sha1but  -text " [ mc " SHA1  ID:" ] " \ 
2230+     button $sha1but  -text " [ mc " Commit  ID:" ] " \ 
22272231        -command gotocommit -width 8
22282232    $sha1but  conf -disabledforeground [$sha1but  cget -foreground]
22292233    pack .tf.bar.sha1label -side left
@@ -2431,7 +2435,7 @@ proc makewindow {} {
24312435    set  ctext .bleft.bottom.ctext
24322436    text $ctext  -background $bgcolor  -foreground $fgcolor  \ 
24332437        -state disabled -undo 0 -font textfont \ 
2434-         -yscrollcommand scrolltext -wrap none  \ 
2438+         -yscrollcommand scrolltext -wrap $wrapdefault  \ 
24352439        -xscrollcommand " .bleft.bottom.sbhorizontal set" 
24362440    if  {$have_tk85 } {
24372441        $ctext  conf -tabstyle wordprocessor
@@ -7344,7 +7348,7 @@ proc selectline {l isnew {desired_loc {}} {switch_to_patch 0}} {
73447348    global  mergemax numcommits pending_select
73457349    global  cmitmode showneartags allcommits
73467350    global  targetrow targetid lastscrollrows
7347-     global  autoselect autosellen jump_to_here
7351+     global  autocopy  autoselect autosellen jump_to_here
73487352    global  vinlinediff
73497353
73507354    unset  -nocomplain pending_select
@@ -7410,9 +7414,13 @@ proc selectline {l isnew {desired_loc {}} {switch_to_patch 0}} {
74107414
74117415    $sha1entry  delete 0 end
74127416    $sha1entry  insert 0 $id 
7413-     if  {$autoselect } {
7417+     if  {$autoselect  && [haveselectionclipboard] } {
74147418        $sha1entry  selection range 0 $autosellen 
74157419    }
7420+     if  {$autocopy } {
7421+         clipboard clear
7422+         clipboard append [string  range $id  0 [expr  $autosellen  - 1]]
7423+     }
74167424    rhighlight_sel $id 
74177425
74187426    $ctext  conf -state normal
@@ -8756,7 +8764,7 @@ proc sha1change {n1 n2 op} {
87568764    if  {$state  == " normal" 
87578765        $sha1but  conf -state normal -relief raised -text " [ mc " Goto:" ] " 
87588766    } else  {
8759-         $sha1but  conf -state disabled -relief flat -text " [ mc " SHA1  ID:" ] " 
8767+         $sha1but  conf -state disabled -relief flat -text " [ mc " Commit  ID:" ] " 
87608768    }
87618769}
87628770
@@ -8775,7 +8783,7 @@ proc gotocommit {} {
87758783            set  matches [longid $id ]
87768784            if  {$matches  ne {}} {
87778785                if  {[llength  $matches ] > 1} {
8778-                     error_popup [mc " Short SHA1 id  %s is ambiguous" $id ]
8786+                     error_popup [mc " Short commit ID  %s is ambiguous" $id ]
87798787                    return 
87808788                }
87818789                set  id [lindex  $matches  0]
@@ -8792,7 +8800,7 @@ proc gotocommit {} {
87928800        return 
87938801    }
87948802    if  {[regexp  {^[0-9a-fA-F]{4,}$}  $sha1string ]} {
8795-         set  msg [mc " SHA1 id  %s is not known" $sha1string ]
8803+         set  msg [mc " Commit ID  %s is not known" $sha1string ]
87968804    } else  {
87978805        set  msg [mc " Revision %s is not in the current view" $sha1string ]
87988806    }
@@ -11576,12 +11584,13 @@ proc create_prefs_page {w} {
1157611584
1157711585proc  prefspage_general  {notebook} {
1157811586    global  NS maxwidth maxgraphpct showneartags showlocalchanges
11579-     global  tabstop limitdiffs autoselect autosellen extdifftool perfile_attrs
11587+     global  tabstop wrapcomment wrapdefault limitdiffs
11588+     global  autocopy autoselect autosellen extdifftool perfile_attrs
1158011589    global  hideremotes want_ttk have_ttk maxrefs web_browser
1158111590
1158211591    set  page [create_prefs_page $notebook .general]
1158311592
11584-     ${NS} ::label $page .ldisp -text [mc " Commit list display options" 
11593+     ${NS} ::label $page .ldisp -text [mc " Commit list display options"  -font mainfontbold 
1158511594    grid $page .ldisp - -sticky w -pady 10
1158611595    ${NS} ::label $page .spacer -text "  " 
1158711596    ${NS} ::label $page .maxwidthl -text [mc " Maximum graph width (lines)" 
@@ -11594,19 +11603,38 @@ proc prefspage_general {notebook} {
1159411603    ${NS} ::checkbutton $page .showlocal -text [mc " Show local changes" \ 
1159511604        -variable showlocalchanges
1159611605    grid x $page .showlocal -sticky w
11597-     ${NS} ::checkbutton $page .autoselect -text [mc " Auto-select SHA1 (length)" \ 
11598-         -variable autoselect
11599-     spinbox $page .autosellen -from 1 -to 40 -width 4 -textvariable autosellen
11600-     grid x $page .autoselect $page .autosellen -sticky w
1160111606    ${NS} ::checkbutton $page .hideremotes -text [mc " Hide remote refs" \ 
1160211607        -variable hideremotes
1160311608    grid x $page .hideremotes -sticky w
1160411609
11605-     ${NS} ::label $page .ddisp -text [mc " Diff display options" 
11610+     ${NS} ::checkbutton $page .autocopy -text [mc " Copy commit ID to clipboard" \ 
11611+         -variable autocopy
11612+     grid x $page .autocopy -sticky w
11613+     if  {[haveselectionclipboard]} {
11614+         ${NS} ::checkbutton $page .autoselect -text [mc " Copy commit ID to X11 selection" \ 
11615+             -variable autoselect
11616+         grid x $page .autoselect -sticky w
11617+     }
11618+     spinbox $page .autosellen -from 1 -to 40 -width 4 -textvariable autosellen
11619+     ${NS} ::label $page .autosellenl -text [mc " Length of commit ID to copy" 
11620+     grid x $page .autosellenl $page .autosellen -sticky w
11621+ 
11622+     ${NS} ::label $page .ddisp -text [mc " Diff display options" 
1160611623    grid $page .ddisp - -sticky w -pady 10
1160711624    ${NS} ::label $page .tabstopl -text [mc " Tab spacing" 
1160811625    spinbox $page .tabstop -from 1 -to 20 -width 4 -textvariable tabstop
1160911626    grid x $page .tabstopl $page .tabstop -sticky w
11627+ 
11628+     ${NS} ::label $page .wrapcommentl -text [mc " Wrap comment text" 
11629+     ${NS} ::combobox $page .wrapcomment -values {none char word} -state readonly \ 
11630+         -textvariable wrapcomment
11631+     grid x $page .wrapcommentl $page .wrapcomment -sticky w
11632+ 
11633+     ${NS} ::label $page .wrapdefaultl -text [mc " Wrap other text" 
11634+     ${NS} ::combobox $page .wrapdefault -values {none char word} -state readonly \ 
11635+         -textvariable wrapdefault
11636+     grid x $page .wrapdefaultl $page .wrapdefault -sticky w
11637+ 
1161011638    ${NS} ::checkbutton $page .ntag -text [mc " Display nearby tags/heads" \ 
1161111639        -variable showneartags
1161211640    grid x $page .ntag -sticky w
@@ -11635,7 +11663,7 @@ proc prefspage_general {notebook} {
1163511663    pack configure $page .webbrowserf.l -padx 10
1163611664    grid x $page .webbrowserf $page .webbrowser -sticky ew
1163711665
11638-     ${NS} ::label $page .lgen -text [mc " General options" 
11666+     ${NS} ::label $page .lgen -text [mc " General options"  -font mainfontbold 
1163911667    grid $page .lgen - -sticky w -pady 10
1164011668    ${NS} ::checkbutton $page .want_ttk -variable want_ttk \ 
1164111669        -text [mc " Use themed widgets" 
@@ -11654,7 +11682,7 @@ proc prefspage_colors {notebook} {
1165411682
1165511683    set  page [create_prefs_page $notebook .colors]
1165611684
11657-     ${NS} ::label $page .cdisp -text [mc " Colors: press to choose" 
11685+     ${NS} ::label $page .cdisp -text [mc " Colors: press to choose"  -font mainfontbold 
1165811686    grid $page .cdisp - -sticky w -pady 10
1165911687    label $page .ui -padx 40 -relief sunk -background $uicolor 
1166011688    ${NS} ::button $page .uibut -text [mc " Interface" \ 
@@ -11712,7 +11740,7 @@ proc prefspage_colors {notebook} {
1171211740proc  prefspage_fonts  {notebook} {
1171311741    global  NS
1171411742    set  page [create_prefs_page $notebook .fonts]
11715-     ${NS} ::label $page .cfont -text [mc " Fonts: press to choose" 
11743+     ${NS} ::label $page .cfont -text [mc " Fonts: press to choose"  -font mainfontbold 
1171611744    grid $page .cfont - -sticky w -pady 10
1171711745    mkfontdisp mainfont $page  [mc " Main font" 
1171811746    mkfontdisp textfont $page  [mc " Diff display font" 
@@ -11725,7 +11753,7 @@ proc doprefs {} {
1172511753    global  oldprefs prefstop showneartags showlocalchanges
1172611754    global  uicolor bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
1172711755    global  tabstop limitdiffs autoselect autosellen extdifftool perfile_attrs
11728-     global  hideremotes want_ttk have_ttk
11756+     global  hideremotes want_ttk have_ttk wrapcomment wrapdefault 
1172911757
1173011758    set  top .gitkprefs
1173111759    set  prefstop $top 
@@ -11734,7 +11762,7 @@ proc doprefs {} {
1173411762        return 
1173511763    }
1173611764    foreach  v {maxwidth maxgraphpct showneartags showlocalchanges \ 
11737-                    limitdiffs tabstop perfile_attrs hideremotes want_ttk} {
11765+                    limitdiffs tabstop perfile_attrs hideremotes want_ttk wrapcomment wrapdefault } {
1173811766        set  oldprefs($v ) [set  $v ]
1173911767    }
1174011768    ttk_toplevel $top 
@@ -11860,7 +11888,7 @@ proc prefscan {} {
1186011888    global  oldprefs prefstop
1186111889
1186211890    foreach  v {maxwidth maxgraphpct showneartags showlocalchanges \ 
11863-                    limitdiffs tabstop perfile_attrs hideremotes want_ttk} {
11891+                    limitdiffs tabstop perfile_attrs hideremotes want_ttk wrapcomment wrapdefault } {
1186411892        global  $v 
1186511893        set  $v  $oldprefs($v) 
1186611894    }
@@ -11874,7 +11902,8 @@ proc prefsok {} {
1187411902    global  oldprefs prefstop showneartags showlocalchanges
1187511903    global  fontpref mainfont textfont uifont
1187611904    global  limitdiffs treediffs perfile_attrs
11877-     global  hideremotes
11905+     global  hideremotes wrapcomment wrapdefault
11906+     global  ctext
1187811907
1187911908    catch  {destroy $prefstop }
1188011909    unset  prefstop
@@ -11923,6 +11952,12 @@ proc prefsok {} {
1192311952    if  {$hideremotes  != $oldprefs(hideremotes) } {
1192411953        rereadrefs
1192511954    }
11955+     if  {$wrapcomment  != $oldprefs(wrapcomment) } {
11956+         $ctext  tag conf comment -wrap $wrapcomment 
11957+     }
11958+     if  {$wrapdefault  != $oldprefs(wrapdefault) } {
11959+         $ctext  configure -wrap $wrapdefault 
11960+     }
1192611961}
1192711962
1192811963proc  formatdate  {d} {
@@ -12392,6 +12427,7 @@ set downarrowlen 5
1239212427set  mingaplen 100
1239312428set  cmitmode " patch" 
1239412429set  wrapcomment " none" 
12430+ set  wrapdefault " none" 
1239512431set  showneartags 1
1239612432set  hideremotes 0
1239712433set  maxrefs 20
@@ -12400,6 +12436,7 @@ set maxlinelen 200
1240012436set  showlocalchanges 1
1240112437set  limitdiffs 1
1240212438set  datetimeformat " %Y-%m-%d %H:%M:%S" 
12439+ set  autocopy 0
1240312440set  autoselect 1
1240412441set  autosellen 40
1240512442set  perfile_attrs 0
@@ -12497,7 +12534,8 @@ config_check_tmp_exists 50
1249712534
1249812535set  config_variables {
1249912536    mainfont textfont uifont tabstop findmergefiles maxgraphpct maxwidth
12500-     cmitmode wrapcomment autoselect autosellen showneartags maxrefs visiblerefs
12537+     cmitmode wrapcomment wrapdefault autocopy autoselect autosellen
12538+     showneartags maxrefs visiblerefs
1250112539    hideremotes showlocalchanges datetimeformat limitdiffs uicolor want_ttk
1250212540    bgcolor fgcolor uifgcolor uifgdisabledcolor colors diffcolors mergecolors
1250312541    markbgcolor diffcontext selectbgcolor foundbgcolor currentsearchhitbgcolor
@@ -12687,7 +12725,7 @@ catch {
1268712725    wm iconphoto . -default gitlogo gitlogo32
1268812726}
1268912727#  wait for the window to become visible
12690- tkwait visibility .
12728+ if  {![winfo viewable .]} { tkwait visibility .} 
1269112729set_window_title
1269212730update 
1269312731readrefs
0 commit comments