From b967135d89e8d8461d0590b2d5181781caeac741 Mon Sep 17 00:00:00 2001
From: Stefan Haller <stefan@haller-berlin.de>
Date: Wed, 19 Sep 2012 20:17:27 +0200
Subject: [PATCH 01/13] gitk: Synchronize highlighting in file view when
 scrolling diff

Whenever the diff pane scrolls, highlight the corresponding file in the
file list on the right.  For a large commit with many files and long
per-file diffs, this makes it easier to keep track of what you're looking
at.

This allows simplifying the prevfile and nextfile functions, because
all they have to do is scroll the diff pane.

In some situations we want to suppress this mechanism, for example when
clicking on a file in the file list to select it, or when searching in the
diff, in which case we want to highlight based on the current search hit
and not the top line visible. In these cases it's not sufficient to set
a "suppress" flag before scrolling and reset it afterwards, because the
scrolltext notification is sent deferred from a timer or some such; so we
need to remember the scroll position for which we want to suppress the
auto-highlighting until the next call to scrolltext; a bit ugly, but does
the job.

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 54 +++++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 43 insertions(+), 11 deletions(-)

diff --git a/gitk b/gitk
index d93bd990a9..16832a94bd 100755
--- a/gitk
+++ b/gitk
@@ -3309,6 +3309,7 @@ proc sel_flist {w x y} {
     } else {
 	catch {$ctext yview [lindex $difffilestart [expr {$l - 2}]]}
     }
+    suppress_highlighting_file_for_current_scrollpos
 }
 
 proc pop_flist_menu {w X Y x y} {
@@ -7947,32 +7948,42 @@ proc changediffdisp {} {
     $ctext tag conf dresult -elide [lindex $diffelide 1]
 }
 
-proc highlightfile {loc cline} {
-    global ctext cflist cflist_top
+proc highlightfile {cline} {
+    global cflist cflist_top
 
-    $ctext yview $loc
     $cflist tag remove highlight $cflist_top.0 "$cflist_top.0 lineend"
     $cflist tag add highlight $cline.0 "$cline.0 lineend"
     $cflist see $cline.0
     set cflist_top $cline
 }
 
+proc highlightfile_for_scrollpos {topidx} {
+    global difffilestart
+
+    if {![info exists difffilestart]} return
+
+    set top [lindex [split $topidx .] 0]
+    if {$difffilestart eq {} || $top < [lindex $difffilestart 0]} {
+	highlightfile 0
+    } else {
+	highlightfile [expr {[bsearch $difffilestart $top] + 2}]
+    }
+}
+
 proc prevfile {} {
     global difffilestart ctext cmitmode
 
     if {$cmitmode eq "tree"} return
     set prev 0.0
-    set prevline 1
     set here [$ctext index @0,0]
     foreach loc $difffilestart {
 	if {[$ctext compare $loc >= $here]} {
-	    highlightfile $prev $prevline
+	    $ctext yview $prev
 	    return
 	}
 	set prev $loc
-	incr prevline
     }
-    highlightfile $prev $prevline
+    $ctext yview $prev
 }
 
 proc nextfile {} {
@@ -7980,11 +7991,9 @@ proc nextfile {} {
 
     if {$cmitmode eq "tree"} return
     set here [$ctext index @0,0]
-    set line 1
     foreach loc $difffilestart {
-	incr line
 	if {[$ctext compare $loc > $here]} {
-	    highlightfile $loc $line
+	    $ctext yview $loc
 	    return
 	}
     }
@@ -8046,6 +8055,8 @@ proc incrsearch {name ix op} {
 	set here [$ctext search $searchdirn -- $searchstring anchor]
 	if {$here ne {}} {
 	    $ctext see $here
+	    suppress_highlighting_file_for_current_scrollpos
+	    highlightfile_for_scrollpos $here
 	}
 	searchmarkvisible 1
     }
@@ -8071,6 +8082,8 @@ proc dosearch {} {
 	    return
 	}
 	$ctext see $match
+	suppress_highlighting_file_for_current_scrollpos
+	highlightfile_for_scrollpos $match
 	set mend "$match + $mlen c"
 	$ctext tag add sel $match $mend
 	$ctext mark unset anchor
@@ -8097,6 +8110,8 @@ proc dosearchback {} {
 	    return
 	}
 	$ctext see $match
+	suppress_highlighting_file_for_current_scrollpos
+	highlightfile_for_scrollpos $match
 	set mend "$match + $ml c"
 	$ctext tag add sel $match $mend
 	$ctext mark unset anchor
@@ -8137,8 +8152,25 @@ proc searchmarkvisible {doall} {
     }
 }
 
+proc suppress_highlighting_file_for_current_scrollpos {} {
+    global ctext suppress_highlighting_file_for_this_scrollpos
+
+    set suppress_highlighting_file_for_this_scrollpos [$ctext index @0,0]
+}
+
 proc scrolltext {f0 f1} {
-    global searchstring
+    global searchstring cmitmode ctext
+    global suppress_highlighting_file_for_this_scrollpos
+
+    if {$cmitmode ne "tree"} {
+	set topidx [$ctext index @0,0]
+	if {![info exists suppress_highlighting_file_for_this_scrollpos]
+	    || $topidx ne $suppress_highlighting_file_for_this_scrollpos} {
+	    highlightfile_for_scrollpos $topidx
+	}
+    }
+
+    catch {unset suppress_highlighting_file_for_this_scrollpos}
 
     .bleft.bottom.sb set $f0 $f1
     if {$searchstring ne {}} {

From c46149942adad1e8869cb795cc044581f2de314a Mon Sep 17 00:00:00 2001
From: Stefan Haller <stefan@haller-berlin.de>
Date: Sat, 22 Sep 2012 09:40:24 +0200
Subject: [PATCH 02/13] gitk: Highlight current search hit in orange

When searching for text in the diff, and there are multiple occurrences
of the search string, the current one is highlighted in orange, and the
other ones in yellow. This makes it much easier to understand what happens
when you then click the Search button or hit Ctrl-S repeatedly.

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/gitk b/gitk
index 16832a94bd..e2c0f1cc65 100755
--- a/gitk
+++ b/gitk
@@ -2361,6 +2361,7 @@ proc makewindow {} {
     $ctext tag conf mresult -font textfontbold
     $ctext tag conf msep -font textfontbold
     $ctext tag conf found -back yellow
+    $ctext tag conf currentsearchhit -back orange
 
     .pwbottom add .bleft
     if {!$use_ttk} {
@@ -2523,6 +2524,7 @@ proc makewindow {} {
     bind $cflist $ctxbut {pop_flist_menu %W %X %Y %x %y}
     bind $ctext $ctxbut {pop_diff_menu %W %X %Y %x %y}
     bind $ctext <Button-1> {focus %W}
+    bind $ctext <<Selection>> rehighlight_search_results
 
     set maincursor [. cget -cursor]
     set textcursor [$ctext cget -cursor]
@@ -8039,7 +8041,6 @@ proc settabs {{firstab {}}} {
 proc incrsearch {name ix op} {
     global ctext searchstring searchdirn
 
-    $ctext tag remove found 1.0 end
     if {[catch {$ctext index anchor}]} {
 	# no anchor set, use start of selection, or of visible area
 	set sel [$ctext tag ranges sel]
@@ -8058,8 +8059,8 @@ proc incrsearch {name ix op} {
 	    suppress_highlighting_file_for_current_scrollpos
 	    highlightfile_for_scrollpos $here
 	}
-	searchmarkvisible 1
     }
+    rehighlight_search_results
 }
 
 proc dosearch {} {
@@ -8087,6 +8088,7 @@ proc dosearch {} {
 	set mend "$match + $mlen c"
 	$ctext tag add sel $match $mend
 	$ctext mark unset anchor
+	rehighlight_search_results
     }
 }
 
@@ -8115,18 +8117,36 @@ proc dosearchback {} {
 	set mend "$match + $ml c"
 	$ctext tag add sel $match $mend
 	$ctext mark unset anchor
+	rehighlight_search_results
+    }
+}
+
+proc rehighlight_search_results {} {
+    global ctext searchstring
+
+    $ctext tag remove found 1.0 end
+    $ctext tag remove currentsearchhit 1.0 end
+
+    if {$searchstring ne {}} {
+	searchmarkvisible 1
     }
 }
 
 proc searchmark {first last} {
     global ctext searchstring
 
+    set sel [$ctext tag ranges sel]
+
     set mend $first.0
     while {1} {
 	set match [$ctext search -count mlen -- $searchstring $mend $last.end]
 	if {$match eq {}} break
 	set mend "$match + $mlen c"
-	$ctext tag add found $match $mend
+	if {$sel ne {} && [$ctext compare $match == [lindex $sel 0]]} {
+	    $ctext tag add currentsearchhit $match $mend
+	} else {
+	    $ctext tag add found $match $mend
+	}
     }
 }
 

From 30441a6f2d5459efa8b64332dfc3a95662a1648a Mon Sep 17 00:00:00 2001
From: Stefan Haller <stefan@haller-berlin.de>
Date: Sat, 22 Sep 2012 09:40:25 +0200
Subject: [PATCH 03/13] gitk: Highlight first search result immediately on
 incremental search

When typing in the "Search" field, select the current search result (so
that it gets highlighted in orange). This makes it easier to understand
what will happen if you then type Ctrl-S.

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gitk b/gitk
index e2c0f1cc65..39c40deb1f 100755
--- a/gitk
+++ b/gitk
@@ -8053,9 +8053,12 @@ proc incrsearch {name ix op} {
 	}
     }
     if {$searchstring ne {}} {
-	set here [$ctext search $searchdirn -- $searchstring anchor]
+	set here [$ctext search -count mlen $searchdirn -- $searchstring anchor]
 	if {$here ne {}} {
 	    $ctext see $here
+	    set mend "$here + $mlen c"
+	    $ctext tag remove sel 1.0 end
+	    $ctext tag add sel $here $mend
 	    suppress_highlighting_file_for_current_scrollpos
 	    highlightfile_for_scrollpos $here
 	}

From f062e50fe69e01376b6ebf7ade8402b782620ac3 Mon Sep 17 00:00:00 2001
From: Stefan Haller <stefan@haller-berlin.de>
Date: Sat, 22 Sep 2012 09:46:48 +0200
Subject: [PATCH 04/13] gitk: Work around empty back and forward images when
 buttons are disabled

On Mac, the back and forward buttons show an empty rectange instead of
a grayed-out arrow when they are disabled. The reason is a Tk bug on Mac
that causes disabled images not to draw correctly (not to draw at all,
that is); see
<https://groups.google.com/forum/?fromgroups=#!topic/comp.lang.tcl/V-nW1JBq0eU>.

To work around this, we explicitly provide gray images for the disabled
state; I think this looks better than the default stipple effect that you
get on Windows as well, but that may be a matter of taste.

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/gitk b/gitk
index 39c40deb1f..379582a5f7 100755
--- a/gitk
+++ b/gitk
@@ -2161,7 +2161,7 @@ proc makewindow {} {
     trace add variable sha1string write sha1change
     pack $sha1entry -side left -pady 2
 
-    image create bitmap bm-left -data {
+    set bm_left_data {
 	#define left_width 16
 	#define left_height 16
 	static unsigned char left_bits[] = {
@@ -2169,7 +2169,7 @@ proc makewindow {} {
 	0x0e, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x0e, 0x00, 0x1c, 0x00,
 	0x38, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xc0, 0x01};
     }
-    image create bitmap bm-right -data {
+    set bm_right_data {
 	#define right_width 16
 	#define right_height 16
 	static unsigned char right_bits[] = {
@@ -2177,11 +2177,16 @@ proc makewindow {} {
 	0x00, 0x38, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0x00, 0x38, 0x00, 0x1c,
 	0x00, 0x0e, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01};
     }
-    ${NS}::button .tf.bar.leftbut -image bm-left -command goback \
-	-state disabled -width 26
+    image create bitmap bm-left -data $bm_left_data
+    image create bitmap bm-left-gray -data $bm_left_data -foreground "#999"
+    image create bitmap bm-right -data $bm_right_data
+    image create bitmap bm-right-gray -data $bm_right_data -foreground "#999"
+
+    ${NS}::button .tf.bar.leftbut -image [list bm-left disabled bm-left-gray] \
+	-command goback -state disabled -width 26
     pack .tf.bar.leftbut -side left -fill y
-    ${NS}::button .tf.bar.rightbut -image bm-right -command goforw \
-	-state disabled -width 26
+    ${NS}::button .tf.bar.rightbut -image [list bm-right disabled bm-right-gray] \
+	-command goforw -state disabled -width 26
     pack .tf.bar.rightbut -side left -fill y
 
     ${NS}::label .tf.bar.rowlabel -text [mc "Row"]

From 69ecfcd6ebcc42c73be25b876c79ee09d5f2901d Mon Sep 17 00:00:00 2001
From: Andrew Wong <andrew.kw.w@gmail.com>
Date: Tue, 2 Oct 2012 11:04:44 -0400
Subject: [PATCH 05/13] gitk: Refactor code for binding modified function keys

The function includes a workaround for systems where F* keys are mapped
to XF86_Switch_VT_* when modifiers are used.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gitk b/gitk
index 379582a5f7..f8f89a5052 100755
--- a/gitk
+++ b/gitk
@@ -2503,8 +2503,7 @@ proc makewindow {} {
     bind . <F5> updatecommits
     bind . <Shift-F5> reloadcommits
     bind . <F2> showrefs
-    bind . <Shift-F4> {newview 0}
-    catch { bind . <Shift-Key-XF86_Switch_VT_4> {newview 0} }
+    bindmodfunctionkey Shift 4 {newview 0}
     bind . <F4> edit_or_newview
     bind . <$M1B-q> doquit
     bind . <$M1B-f> {dofind 1 1}
@@ -2653,6 +2652,11 @@ proc bindkey {ev script} {
     }
 }
 
+proc bindmodfunctionkey {mod n script} {
+    bind . <$mod-F$n> $script
+    catch { bind . <$mod-XF86_Switch_VT_$n> $script }
+}
+
 # set the focus back to the toplevel for any click outside
 # the entry widgets
 proc click {w} {

From ebb91db8dfcb9733799a7929654b4a0c5eebfbdb Mon Sep 17 00:00:00 2001
From: Andrew Wong <andrew.kw.w@gmail.com>
Date: Tue, 2 Oct 2012 11:04:45 -0400
Subject: [PATCH 06/13] gitk: Use bindshiftfunctionkey to bind Shift-F5

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gitk b/gitk
index f8f89a5052..d53fdb253c 100755
--- a/gitk
+++ b/gitk
@@ -2501,7 +2501,7 @@ proc makewindow {} {
     bindkey ? {dofind -1 1}
     bindkey f nextfile
     bind . <F5> updatecommits
-    bind . <Shift-F5> reloadcommits
+    bindmodfunctionkey Shift 5 reloadcommits
     bind . <F2> showrefs
     bindmodfunctionkey Shift 4 {newview 0}
     bind . <F4> edit_or_newview

From 62e9ac5edfd7d9f24482ce767eec4b1ac96db4a4 Mon Sep 17 00:00:00 2001
From: Marcus Karlsson <mk@acc.umu.se>
Date: Sun, 7 Oct 2012 23:21:14 +0200
Subject: [PATCH 07/13] gitk: Fix crash when not using themed widgets

When configured not to use themed widgets gitk may crash on launch with
a message that says that the image "bm-left disabled bm-left-gray"
doesn't exist. This happens when the left and right arrow buttons are
created.

The crash can be avoided by configuring the buttons differently
depending on whether or not themed widgets are used. If themed widgets
are not used then only set the images to bm-left and bm-right
respectively, and keep the old behavior when themed widgets are used.

The previous behaviour was added in f062e50f to work around a bug in Tk
on OS X where the disabled state did not display properly. The buttons
may still not display correctly, however the workaround added in
f062e50f will still apply if gitk is used with themed widgets.

Make gitk not crash on launch when not using themed widgets.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/gitk b/gitk
index d53fdb253c..54cffde721 100755
--- a/gitk
+++ b/gitk
@@ -2182,11 +2182,19 @@ proc makewindow {} {
     image create bitmap bm-right -data $bm_right_data
     image create bitmap bm-right-gray -data $bm_right_data -foreground "#999"
 
-    ${NS}::button .tf.bar.leftbut -image [list bm-left disabled bm-left-gray] \
-	-command goback -state disabled -width 26
+    ${NS}::button .tf.bar.leftbut -command goback -state disabled -width 26
+    if {$use_ttk} {
+	.tf.bar.leftbut configure -image [list bm-left disabled bm-left-gray]
+    } else {
+	.tf.bar.leftbut configure -image bm-left
+    }
     pack .tf.bar.leftbut -side left -fill y
-    ${NS}::button .tf.bar.rightbut -image [list bm-right disabled bm-right-gray] \
-	-command goforw -state disabled -width 26
+    ${NS}::button .tf.bar.rightbut -command goforw -state disabled -width 26
+    if {$use_ttk} {
+	.tf.bar.rightbut configure -image [list bm-right disabled bm-right-gray]
+    } else {
+	.tf.bar.rightbut configure -image bm-right
+    }
     pack .tf.bar.rightbut -side left -fill y
 
     ${NS}::label .tf.bar.rowlabel -text [mc "Row"]

From ce837c9de5d67919437e1c05789b23c3aca95d4c Mon Sep 17 00:00:00 2001
From: Stefan Haller <stefan@haller-berlin.de>
Date: Thu, 4 Oct 2012 22:50:16 +0200
Subject: [PATCH 08/13] gitk: Fix error message when clicking on a connecting
 line

When clicking on the line that connects two commit nodes, gitk
would bring up an error dialog saying "can't read "cflist_top":
no such variable".

This fixes a regression that was introduced with b967135 ("gitk:
Synchronize highlighting in file view when scrolling diff").

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gitk b/gitk
index 54cffde721..a569c0d4b8 100755
--- a/gitk
+++ b/gitk
@@ -7970,6 +7970,8 @@ proc changediffdisp {} {
 proc highlightfile {cline} {
     global cflist cflist_top
 
+    if {![info exists cflist_top]} return
+
     $cflist tag remove highlight $cflist_top.0 "$cflist_top.0 lineend"
     $cflist tag add highlight $cline.0 "$cline.0 lineend"
     $cflist see $cline.0

From 978904bf16600dd21888964f3d5cabf02ba39f22 Mon Sep 17 00:00:00 2001
From: Stefan Haller <stefan@haller-berlin.de>
Date: Thu, 4 Oct 2012 22:50:17 +0200
Subject: [PATCH 09/13] gitk: When searching, only highlight files when in
 Patch mode

This fixes another regression that was introduced in b967135 ("gitk:
Synchronize highlighting in file view when scrolling diff"): when
searching for a string in tree mode, jumping to the next search hit
would highlight the "Comments" entry in the file list.

Signed-off-by: Stefan Haller <stefan@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/gitk b/gitk
index a569c0d4b8..bc73eea518 100755
--- a/gitk
+++ b/gitk
@@ -7979,8 +7979,9 @@ proc highlightfile {cline} {
 }
 
 proc highlightfile_for_scrollpos {topidx} {
-    global difffilestart
+    global cmitmode difffilestart
 
+    if {$cmitmode eq "tree"} return
     if {![info exists difffilestart]} return
 
     set top [lindex [split $topidx .] 0]
@@ -8204,12 +8205,10 @@ proc scrolltext {f0 f1} {
     global searchstring cmitmode ctext
     global suppress_highlighting_file_for_this_scrollpos
 
-    if {$cmitmode ne "tree"} {
-	set topidx [$ctext index @0,0]
-	if {![info exists suppress_highlighting_file_for_this_scrollpos]
-	    || $topidx ne $suppress_highlighting_file_for_this_scrollpos} {
-	    highlightfile_for_scrollpos $topidx
-	}
+    set topidx [$ctext index @0,0]
+    if {![info exists suppress_highlighting_file_for_this_scrollpos]
+	|| $topidx ne $suppress_highlighting_file_for_this_scrollpos} {
+	highlightfile_for_scrollpos $topidx
     }
 
     catch {unset suppress_highlighting_file_for_this_scrollpos}

From c0d92c222149c259ee4844bbad99a6bc167e757b Mon Sep 17 00:00:00 2001
From: Peter Krefting <peter@softwolves.pp.se>
Date: Wed, 3 Oct 2012 08:16:03 +0100
Subject: [PATCH 10/13] gitk: Update Swedish translation (296t)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 po/sv.po | 673 +++++++++++++++++++++++++++++--------------------------
 1 file changed, 352 insertions(+), 321 deletions(-)

diff --git a/po/sv.po b/po/sv.po
index 2f07a2e2d9..8cc98dc079 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,40 +1,50 @@
 # Swedish translation for gitk
-# Copyright (C) 2005-2010 Paul Mackerras
+# Copyright (C) 2005-2012 Paul Mackerras
 # This file is distributed under the same license as the gitk package.
 #
-# Peter Krefting <peter@softwolves.pp.se>, 2008-2010.
 # Mikael Magnusson <mikachu@gmail.com>, 2008.
+# Peter Krefting <peter@softwolves.pp.se>, 2008, 2009, 2010, 2012.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: sv\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-12 21:14+0100\n"
-"PO-Revision-Date: 2010-09-12 21:16+0100\n"
+"POT-Creation-Date: 2012-10-03 08:09+0100\n"
+"PO-Revision-Date: 2012-10-03 08:13+0100\n"
 "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
+"Content-Transfer-Encoding: 8bit\n"
 
-#: gitk:115
+#: gitk:140
 msgid "Couldn't get list of unmerged files:"
 msgstr "Kunde inte hämta lista över ej sammanslagna filer:"
 
-#: gitk:274
+#: gitk:210 gitk:2317
+msgid "Color words"
+msgstr "Färga ord"
+
+#: gitk:215 gitk:2317 gitk:7888 gitk:7921
+msgid "Markup words"
+msgstr "Märk upp ord"
+
+#: gitk:312
 msgid "Error parsing revisions:"
 msgstr "Fel vid tolkning av revisioner:"
 
-#: gitk:330
+#: gitk:368
 msgid "Error executing --argscmd command:"
 msgstr "Fel vid körning av --argscmd-kommando:"
 
-#: gitk:343
+#: gitk:381
 msgid "No files selected: --merge specified but no files are unmerged."
 msgstr ""
 "Inga filer valdes: --merge angavs men det finns inga filer som inte har "
 "slagits samman."
 
-#: gitk:346
+#: gitk:384
 msgid ""
 "No files selected: --merge specified but no unmerged files are within file "
 "limit."
@@ -42,605 +52,617 @@ msgstr ""
 "Inga filer valdes: --merge angavs men det finns inga filer inom "
 "filbegränsningen."
 
-#: gitk:368 gitk:516
+#: gitk:406 gitk:554
 msgid "Error executing git log:"
 msgstr "Fel vid körning av git log:"
 
-#: gitk:386 gitk:532
+#: gitk:424 gitk:570
 msgid "Reading"
 msgstr "Läser"
 
-#: gitk:446 gitk:4271
+#: gitk:484 gitk:4353
 msgid "Reading commits..."
 msgstr "Läser incheckningar..."
 
-#: gitk:449 gitk:1580 gitk:4274
+#: gitk:487 gitk:1625 gitk:4356
 msgid "No commits selected"
 msgstr "Inga incheckningar markerade"
 
-#: gitk:1456
+#: gitk:1499
 msgid "Can't parse git log output:"
 msgstr "Kan inte tolka utdata från git log:"
 
-#: gitk:1676
+#: gitk:1719
 msgid "No commit information available"
 msgstr "Ingen incheckningsinformation är tillgänglig"
 
-#: gitk:1818
+#: gitk:1876
 msgid "mc"
 msgstr "mc"
 
-#: gitk:1853 gitk:4064 gitk:9067 gitk:10607 gitk:10817
+#: gitk:1911 gitk:4146 gitk:9282 gitk:10824 gitk:11100
 msgid "OK"
 msgstr "OK"
 
-#: gitk:1855 gitk:4066 gitk:8657 gitk:8736 gitk:8851 gitk:8900 gitk:9069
-#: gitk:10608 gitk:10818
+#: gitk:1913 gitk:4148 gitk:8871 gitk:8950 gitk:9065 gitk:9114 gitk:9284
+#: gitk:10825 gitk:11101
 msgid "Cancel"
 msgstr "Avbryt"
 
-#: gitk:1980
+#: gitk:2040
 msgid "Update"
 msgstr "Uppdatera"
 
-#: gitk:1981
+#: gitk:2041
 msgid "Reload"
 msgstr "Ladda om"
 
-#: gitk:1982
+#: gitk:2042
 msgid "Reread references"
 msgstr "Läs om referenser"
 
-#: gitk:1983
+#: gitk:2043
 msgid "List references"
 msgstr "Visa referenser"
 
-#: gitk:1985
+#: gitk:2045
 msgid "Start git gui"
 msgstr "Starta git gui"
 
-#: gitk:1987
+#: gitk:2047
 msgid "Quit"
 msgstr "Avsluta"
 
-#: gitk:1979
+#: gitk:2039
 msgid "File"
 msgstr "Arkiv"
 
-#: gitk:1991
+#: gitk:2051
 msgid "Preferences"
 msgstr "Inställningar"
 
-#: gitk:1990
+#: gitk:2050
 msgid "Edit"
 msgstr "Redigera"
 
-#: gitk:1995
+#: gitk:2055
 msgid "New view..."
 msgstr "Ny vy..."
 
-#: gitk:1996
+#: gitk:2056
 msgid "Edit view..."
 msgstr "Ändra vy..."
 
-#: gitk:1997
+#: gitk:2057
 msgid "Delete view"
 msgstr "Ta bort vy"
 
-#: gitk:1999
+#: gitk:2059
 msgid "All files"
 msgstr "Alla filer"
 
-#: gitk:1994 gitk:3817
+#: gitk:2054 gitk:3899
 msgid "View"
 msgstr "Visa"
 
-#: gitk:2004 gitk:2014 gitk:2787
+#: gitk:2064 gitk:2074 gitk:2869
 msgid "About gitk"
 msgstr "Om gitk"
 
-#: gitk:2005 gitk:2019
+#: gitk:2065 gitk:2079
 msgid "Key bindings"
 msgstr "Tangentbordsbindningar"
 
-#: gitk:2003 gitk:2018
+#: gitk:2063 gitk:2078
 msgid "Help"
 msgstr "Hjälp"
 
-#: gitk:2096 gitk:8132
+#: gitk:2156 gitk:8330
 msgid "SHA1 ID:"
 msgstr "SHA1-id:"
 
-#: gitk:2127
+#: gitk:2192
 msgid "Row"
 msgstr "Rad"
 
-#: gitk:2165
+#: gitk:2230
 msgid "Find"
 msgstr "Sök"
 
-#: gitk:2166
+#: gitk:2231
 msgid "next"
 msgstr "nästa"
 
-#: gitk:2167
+#: gitk:2232
 msgid "prev"
 msgstr "föreg"
 
-#: gitk:2168
+#: gitk:2233
 msgid "commit"
 msgstr "incheckning"
 
-#: gitk:2171 gitk:2173 gitk:4432 gitk:4455 gitk:4479 gitk:6420 gitk:6492
-#: gitk:6576
+#: gitk:2236 gitk:2238 gitk:4514 gitk:4537 gitk:4561 gitk:6528 gitk:6600
+#: gitk:6685
 msgid "containing:"
 msgstr "som innehåller:"
 
-#: gitk:2174 gitk:3298 gitk:3303 gitk:4507
+#: gitk:2239 gitk:3381 gitk:3386 gitk:4590
 msgid "touching paths:"
 msgstr "som rör sökväg:"
 
-#: gitk:2175 gitk:4512
+#: gitk:2240 gitk:4604
 msgid "adding/removing string:"
 msgstr "som lägger/till tar bort sträng:"
 
-#: gitk:2184 gitk:2186
+#: gitk:2249 gitk:2251 gitk:4593
 msgid "Exact"
 msgstr "Exakt"
 
-#: gitk:2186 gitk:4587 gitk:6388
+#: gitk:2251 gitk:4679 gitk:6496
 msgid "IgnCase"
 msgstr "IgnVersaler"
 
-#: gitk:2186 gitk:4481 gitk:4585 gitk:6384
+#: gitk:2251 gitk:4563 gitk:4677 gitk:6492
 msgid "Regexp"
 msgstr "Reg.uttr."
 
-#: gitk:2188 gitk:2189 gitk:4606 gitk:4636 gitk:4643 gitk:6512 gitk:6580
+#: gitk:2253 gitk:2254 gitk:4699 gitk:4729 gitk:4736 gitk:6621 gitk:6689
 msgid "All fields"
 msgstr "Alla fält"
 
-#: gitk:2189 gitk:4604 gitk:4636 gitk:6451
+#: gitk:2254 gitk:4696 gitk:4729 gitk:6559
 msgid "Headline"
 msgstr "Rubrik"
 
-#: gitk:2190 gitk:4604 gitk:6451 gitk:6580 gitk:7013
+#: gitk:2255 gitk:4696 gitk:6559 gitk:6689 gitk:7126
 msgid "Comments"
 msgstr "Kommentarer"
 
-#: gitk:2190 gitk:4604 gitk:4608 gitk:4643 gitk:6451 gitk:6948 gitk:8307
-#: gitk:8322
+#: gitk:2255 gitk:4696 gitk:4701 gitk:4736 gitk:6559 gitk:7061 gitk:8505
+#: gitk:8520
 msgid "Author"
 msgstr "Författare"
 
-#: gitk:2190 gitk:4604 gitk:6451 gitk:6950
+#: gitk:2255 gitk:4696 gitk:6559 gitk:7063
 msgid "Committer"
 msgstr "Incheckare"
 
-#: gitk:2221
+#: gitk:2286
 msgid "Search"
 msgstr "Sök"
 
-#: gitk:2229
+#: gitk:2294
 msgid "Diff"
 msgstr "Diff"
 
-#: gitk:2231
+#: gitk:2296
 msgid "Old version"
 msgstr "Gammal version"
 
-#: gitk:2233
+#: gitk:2298
 msgid "New version"
 msgstr "Ny version"
 
-#: gitk:2235
+#: gitk:2300
 msgid "Lines of context"
 msgstr "Rader sammanhang"
 
-#: gitk:2245
+#: gitk:2310
 msgid "Ignore space change"
 msgstr "Ignorera ändringar i blanksteg"
 
-#: gitk:2304
+#: gitk:2314 gitk:2316 gitk:7646 gitk:7874
+msgid "Line diff"
+msgstr "Rad-diff"
+
+#: gitk:2379
 msgid "Patch"
 msgstr "Patch"
 
-#: gitk:2306
+#: gitk:2381
 msgid "Tree"
 msgstr "Träd"
 
-#: gitk:2463 gitk:2480
+#: gitk:2540 gitk:2559
 msgid "Diff this -> selected"
 msgstr "Diff denna -> markerad"
 
-#: gitk:2464 gitk:2481
+#: gitk:2541 gitk:2560
 msgid "Diff selected -> this"
 msgstr "Diff markerad -> denna"
 
-#: gitk:2465 gitk:2482
+#: gitk:2542 gitk:2561
 msgid "Make patch"
 msgstr "Skapa patch"
 
-#: gitk:2466 gitk:8715
+#: gitk:2543 gitk:8929
 msgid "Create tag"
 msgstr "Skapa tagg"
 
-#: gitk:2467 gitk:8831
+#: gitk:2544 gitk:9045
 msgid "Write commit to file"
 msgstr "Skriv incheckning till fil"
 
-#: gitk:2468 gitk:8888
+#: gitk:2545 gitk:9102
 msgid "Create new branch"
 msgstr "Skapa ny gren"
 
-#: gitk:2469
+#: gitk:2546
 msgid "Cherry-pick this commit"
 msgstr "Plocka denna incheckning"
 
-#: gitk:2470
+#: gitk:2547
 msgid "Reset HEAD branch to here"
 msgstr "Återställ HEAD-grenen hit"
 
-#: gitk:2471
+#: gitk:2548
 msgid "Mark this commit"
 msgstr "Markera denna incheckning"
 
-#: gitk:2472
+#: gitk:2549
 msgid "Return to mark"
 msgstr "Återgå till markering"
 
-#: gitk:2473
+#: gitk:2550
 msgid "Find descendant of this and mark"
 msgstr "Hitta efterföljare till denna och markera"
 
-#: gitk:2474
+#: gitk:2551
 msgid "Compare with marked commit"
 msgstr "Jämför med markerad incheckning"
 
-#: gitk:2488
+#: gitk:2552 gitk:2562
+msgid "Diff this -> marked commit"
+msgstr "Diff denna -> markerad incheckning"
+
+#: gitk:2553 gitk:2563
+msgid "Diff marked commit -> this"
+msgstr "Diff markerad incheckning -> denna"
+
+#: gitk:2569
 msgid "Check out this branch"
 msgstr "Checka ut denna gren"
 
-#: gitk:2489
+#: gitk:2570
 msgid "Remove this branch"
 msgstr "Ta bort denna gren"
 
-#: gitk:2496
+#: gitk:2577
 msgid "Highlight this too"
 msgstr "Markera även detta"
 
-#: gitk:2497
+#: gitk:2578
 msgid "Highlight this only"
 msgstr "Markera bara detta"
 
-#: gitk:2498
+#: gitk:2579
 msgid "External diff"
 msgstr "Extern diff"
 
-#: gitk:2499
+#: gitk:2580
 msgid "Blame parent commit"
 msgstr "Klandra föräldraincheckning"
 
-#: gitk:2506
+#: gitk:2587
 msgid "Show origin of this line"
 msgstr "Visa ursprunget för den här raden"
 
-#: gitk:2507
+#: gitk:2588
 msgid "Run git gui blame on this line"
 msgstr "Kör git gui blame på den här raden"
 
-#: gitk:2789
+#: gitk:2871
 msgid ""
 "\n"
 "Gitk - a commit viewer for git\n"
 "\n"
-"Copyright ©9 2005-2010 Paul Mackerras\n"
+"Copyright ©9 2005-2011 Paul Mackerras\n"
 "\n"
 "Use and redistribute under the terms of the GNU General Public License"
 msgstr ""
 "\n"
 "Gitk - en incheckningsvisare för git\n"
 "\n"
-"Copyright ©9 2005-2010 Paul Mackerras\n"
+"Copyright ©9 2005-2011 Paul Mackerras\n"
 "\n"
 "Använd och vidareförmedla enligt villkoren i GNU General Public License"
 
-#: gitk:2797 gitk:2862 gitk:9253
+#: gitk:2879 gitk:2944 gitk:9468
 msgid "Close"
 msgstr "Stäng"
 
-#: gitk:2818
+#: gitk:2900
 msgid "Gitk key bindings"
 msgstr "Tangentbordsbindningar för Gitk"
 
-#: gitk:2821
+#: gitk:2903
 msgid "Gitk key bindings:"
 msgstr "Tangentbordsbindningar för Gitk:"
 
-#: gitk:2823
+#: gitk:2905
 #, tcl-format
 msgid "<%s-Q>\t\tQuit"
 msgstr "<%s-Q>\t\tAvsluta"
 
-#: gitk:2824
+#: gitk:2906
 #, tcl-format
 msgid "<%s-W>\t\tClose window"
 msgstr "<%s-W>\t\tStäng fönster"
 
-#: gitk:2825
+#: gitk:2907
 msgid "<Home>\t\tMove to first commit"
 msgstr "<Home>\t\tGå till första incheckning"
 
-#: gitk:2826
+#: gitk:2908
 msgid "<End>\t\tMove to last commit"
 msgstr "<End>\t\tGå till sista incheckning"
 
-#: gitk:2827
-msgid "<Up>, p, i\tMove up one commit"
-msgstr "<Upp>, p, i\tGå en incheckning upp"
+#: gitk:2909
+msgid "<Up>, p, k\tMove up one commit"
+msgstr "<Upp>, p, k\tGå en incheckning upp"
 
-#: gitk:2828
-msgid "<Down>, n, k\tMove down one commit"
-msgstr "<Ned>, n, k\tGå en incheckning ned"
+#: gitk:2910
+msgid "<Down>, n, j\tMove down one commit"
+msgstr "<Ned>, n, j\tGå en incheckning ned"
 
-#: gitk:2829
-msgid "<Left>, z, j\tGo back in history list"
-msgstr "<Vänster>, z, j\tGå bakåt i historiken"
+#: gitk:2911
+msgid "<Left>, z, h\tGo back in history list"
+msgstr "<Vänster>, z, h\tGå bakåt i historiken"
 
-#: gitk:2830
+#: gitk:2912
 msgid "<Right>, x, l\tGo forward in history list"
 msgstr "<Höger>, x, l\tGå framåt i historiken"
 
-#: gitk:2831
+#: gitk:2913
 msgid "<PageUp>\tMove up one page in commit list"
 msgstr "<PageUp>\tGå upp en sida i incheckningslistan"
 
-#: gitk:2832
+#: gitk:2914
 msgid "<PageDown>\tMove down one page in commit list"
 msgstr "<PageDown>\tGå ned en sida i incheckningslistan"
 
-#: gitk:2833
+#: gitk:2915
 #, tcl-format
 msgid "<%s-Home>\tScroll to top of commit list"
 msgstr "<%s-Home>\tRulla till början av incheckningslistan"
 
-#: gitk:2834
+#: gitk:2916
 #, tcl-format
 msgid "<%s-End>\tScroll to bottom of commit list"
 msgstr "<%s-End>\tRulla till slutet av incheckningslistan"
 
-#: gitk:2835
+#: gitk:2917
 #, tcl-format
 msgid "<%s-Up>\tScroll commit list up one line"
 msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg"
 
-#: gitk:2836
+#: gitk:2918
 #, tcl-format
 msgid "<%s-Down>\tScroll commit list down one line"
 msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg"
 
-#: gitk:2837
+#: gitk:2919
 #, tcl-format
 msgid "<%s-PageUp>\tScroll commit list up one page"
 msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida"
 
-#: gitk:2838
+#: gitk:2920
 #, tcl-format
 msgid "<%s-PageDown>\tScroll commit list down one page"
 msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida"
 
-#: gitk:2839
+#: gitk:2921
 msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
 msgstr "<Skift-Upp>\tSök bakåt (uppåt, senare incheckningar)"
 
-#: gitk:2840
+#: gitk:2922
 msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
 msgstr "<Skift-Ned>\tSök framåt (nedåt, tidigare incheckningar)"
 
-#: gitk:2841
+#: gitk:2923
 msgid "<Delete>, b\tScroll diff view up one page"
 msgstr "<Delete>, b\tRulla diffvisningen upp en sida"
 
-#: gitk:2842
+#: gitk:2924
 msgid "<Backspace>\tScroll diff view up one page"
 msgstr "<Baksteg>\tRulla diffvisningen upp en sida"
 
-#: gitk:2843
+#: gitk:2925
 msgid "<Space>\t\tScroll diff view down one page"
 msgstr "<Blanksteg>\tRulla diffvisningen ned en sida"
 
-#: gitk:2844
+#: gitk:2926
 msgid "u\t\tScroll diff view up 18 lines"
 msgstr "u\t\tRulla diffvisningen upp 18 rader"
 
-#: gitk:2845
+#: gitk:2927
 msgid "d\t\tScroll diff view down 18 lines"
 msgstr "d\t\tRulla diffvisningen ned 18 rader"
 
-#: gitk:2846
+#: gitk:2928
 #, tcl-format
 msgid "<%s-F>\t\tFind"
 msgstr "<%s-F>\t\tSök"
 
-#: gitk:2847
+#: gitk:2929
 #, tcl-format
 msgid "<%s-G>\t\tMove to next find hit"
 msgstr "<%s-G>\t\tGå till nästa sökträff"
 
-#: gitk:2848
+#: gitk:2930
 msgid "<Return>\tMove to next find hit"
 msgstr "<Return>\t\tGå till nästa sökträff"
 
-#: gitk:2849
+#: gitk:2931
 msgid "/\t\tFocus the search box"
 msgstr "/\t\tFokusera sökrutan"
 
-#: gitk:2850
+#: gitk:2932
 msgid "?\t\tMove to previous find hit"
 msgstr "?\t\tGå till föregående sökträff"
 
-#: gitk:2851
+#: gitk:2933
 msgid "f\t\tScroll diff view to next file"
 msgstr "f\t\tRulla diffvisningen till nästa fil"
 
-#: gitk:2852
+#: gitk:2934
 #, tcl-format
 msgid "<%s-S>\t\tSearch for next hit in diff view"
 msgstr "<%s-S>\t\tGå till nästa sökträff i diffvisningen"
 
-#: gitk:2853
+#: gitk:2935
 #, tcl-format
 msgid "<%s-R>\t\tSearch for previous hit in diff view"
 msgstr "<%s-R>\t\tGå till föregående sökträff i diffvisningen"
 
-#: gitk:2854
+#: gitk:2936
 #, tcl-format
 msgid "<%s-KP+>\tIncrease font size"
 msgstr "<%s-Num+>\tÖka teckenstorlek"
 
-#: gitk:2855
+#: gitk:2937
 #, tcl-format
 msgid "<%s-plus>\tIncrease font size"
 msgstr "<%s-plus>\tÖka teckenstorlek"
 
-#: gitk:2856
+#: gitk:2938
 #, tcl-format
 msgid "<%s-KP->\tDecrease font size"
 msgstr "<%s-Num->\tMinska teckenstorlek"
 
-#: gitk:2857
+#: gitk:2939
 #, tcl-format
 msgid "<%s-minus>\tDecrease font size"
 msgstr "<%s-minus>\tMinska teckenstorlek"
 
-#: gitk:2858
+#: gitk:2940
 msgid "<F5>\t\tUpdate"
 msgstr "<F5>\t\tUppdatera"
 
-#: gitk:3313 gitk:3322
+#: gitk:3395 gitk:3404
 #, tcl-format
 msgid "Error creating temporary directory %s:"
 msgstr "Fel vid skapande av temporär katalog %s:"
 
-#: gitk:3335
+#: gitk:3417
 #, tcl-format
 msgid "Error getting \"%s\" from %s:"
 msgstr "Fel vid hämtning av  \"%s\" från %s:"
 
-#: gitk:3398
+#: gitk:3480
 msgid "command failed:"
 msgstr "kommando misslyckades:"
 
-#: gitk:3547
+#: gitk:3629
 msgid "No such commit"
 msgstr "Incheckning saknas"
 
-#: gitk:3561
+#: gitk:3643
 msgid "git gui blame: command failed:"
 msgstr "git gui blame: kommando misslyckades:"
 
-#: gitk:3592
+#: gitk:3674
 #, tcl-format
 msgid "Couldn't read merge head: %s"
 msgstr "Kunde inte läsa sammanslagningshuvud: %s"
 
-#: gitk:3600
+#: gitk:3682
 #, tcl-format
 msgid "Error reading index: %s"
 msgstr "Fel vid läsning av index: %s"
 
-#: gitk:3625
+#: gitk:3707
 #, tcl-format
 msgid "Couldn't start git blame: %s"
 msgstr "Kunde inte starta git blame: %s"
 
-#: gitk:3628 gitk:6419
+#: gitk:3710 gitk:6527
 msgid "Searching"
 msgstr "Söker"
 
-#: gitk:3660
+#: gitk:3742
 #, tcl-format
 msgid "Error running git blame: %s"
 msgstr "Fel vid körning av git blame: %s"
 
-#: gitk:3688
+#: gitk:3770
 #, tcl-format
 msgid "That line comes from commit %s,  which is not in this view"
 msgstr "Raden kommer från incheckningen %s, som inte finns i denna vy"
 
-#: gitk:3702
+#: gitk:3784
 msgid "External diff viewer failed:"
 msgstr "Externt diff-verktyg misslyckades:"
 
-#: gitk:3820
+#: gitk:3902
 msgid "Gitk view definition"
 msgstr "Definition av Gitk-vy"
 
-#: gitk:3824
+#: gitk:3906
 msgid "Remember this view"
 msgstr "Spara denna vy"
 
-#: gitk:3825
+#: gitk:3907
 msgid "References (space separated list):"
 msgstr "Referenser (blankstegsavdelad lista):"
 
-#: gitk:3826
+#: gitk:3908
 msgid "Branches & tags:"
 msgstr "Grenar & taggar:"
 
-#: gitk:3827
+#: gitk:3909
 msgid "All refs"
 msgstr "Alla referenser"
 
-#: gitk:3828
+#: gitk:3910
 msgid "All (local) branches"
 msgstr "Alla (lokala) grenar"
 
-#: gitk:3829
+#: gitk:3911
 msgid "All tags"
 msgstr "Alla taggar"
 
-#: gitk:3830
+#: gitk:3912
 msgid "All remote-tracking branches"
 msgstr "Alla fjärrspårande grenar"
 
-#: gitk:3831
+#: gitk:3913
 msgid "Commit Info (regular expressions):"
 msgstr "Incheckningsinfo (reguljära uttryck):"
 
-#: gitk:3832
+#: gitk:3914
 msgid "Author:"
 msgstr "Författare:"
 
-#: gitk:3833
+#: gitk:3915
 msgid "Committer:"
 msgstr "Incheckare:"
 
-#: gitk:3834
+#: gitk:3916
 msgid "Commit Message:"
 msgstr "Incheckningsmeddelande:"
 
-#: gitk:3835
+#: gitk:3917
 msgid "Matches all Commit Info criteria"
 msgstr "Motsvarar alla kriterier för incheckningsinfo"
 
-#: gitk:3836
+#: gitk:3918
 msgid "Changes to Files:"
 msgstr "Ändringar av filer:"
 
-#: gitk:3837
+#: gitk:3919
 msgid "Fixed String"
 msgstr "Fast sträng"
 
-#: gitk:3838
+#: gitk:3920
 msgid "Regular Expression"
 msgstr "Reguljärt uttryck"
 
-#: gitk:3839
+#: gitk:3921
 msgid "Search string:"
 msgstr "Söksträng:"
 
-#: gitk:3840
+#: gitk:3922
 msgid ""
 "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
 "15:27:38\"):"
@@ -648,201 +670,197 @@ msgstr ""
 "Incheckingsdatum (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
 "15:27:38\"):"
 
-#: gitk:3841
+#: gitk:3923
 msgid "Since:"
 msgstr "Från:"
 
-#: gitk:3842
+#: gitk:3924
 msgid "Until:"
 msgstr "Till:"
 
-#: gitk:3843
+#: gitk:3925
 msgid "Limit and/or skip a number of revisions (positive integer):"
 msgstr "Begränsa och/eller hoppa över ett antal revisioner (positivt heltal):"
 
-#: gitk:3844
+#: gitk:3926
 msgid "Number to show:"
 msgstr "Antal att visa:"
 
-#: gitk:3845
+#: gitk:3927
 msgid "Number to skip:"
 msgstr "Antal att hoppa över:"
 
-#: gitk:3846
+#: gitk:3928
 msgid "Miscellaneous options:"
 msgstr "Diverse alternativ:"
 
-#: gitk:3847
+#: gitk:3929
 msgid "Strictly sort by date"
 msgstr "Strikt datumsortering"
 
-#: gitk:3848
+#: gitk:3930
 msgid "Mark branch sides"
 msgstr "Markera sidogrenar"
 
-#: gitk:3849
+#: gitk:3931
 msgid "Limit to first parent"
 msgstr "Begränsa till första förälder"
 
-#: gitk:3850
+#: gitk:3932
 msgid "Simple history"
 msgstr "Enkel historik"
 
-#: gitk:3851
+#: gitk:3933
 msgid "Additional arguments to git log:"
 msgstr "Ytterligare argument till git log:"
 
-#: gitk:3852
+#: gitk:3934
 msgid "Enter files and directories to include, one per line:"
 msgstr "Ange filer och kataloger att ta med, en per rad:"
 
-#: gitk:3853
+#: gitk:3935
 msgid "Command to generate more commits to include:"
 msgstr "Kommando för att generera fler incheckningar att ta med:"
 
-#: gitk:3977
+#: gitk:4059
 msgid "Gitk: edit view"
 msgstr "Gitk: redigera vy"
 
-#: gitk:3985
+#: gitk:4067
 msgid "-- criteria for selecting revisions"
 msgstr " - kriterier för val av revisioner"
 
-#: gitk:3990
+#: gitk:4072
 msgid "View Name"
 msgstr "Namn på vy"
 
-#: gitk:4065
+#: gitk:4147
 msgid "Apply (F5)"
 msgstr "Använd (F5)"
 
-#: gitk:4103
+#: gitk:4185
 msgid "Error in commit selection arguments:"
 msgstr "Fel i argument för val av incheckningar:"
 
-#: gitk:4156 gitk:4208 gitk:4656 gitk:4670 gitk:5931 gitk:11551 gitk:11552
+#: gitk:4238 gitk:4290 gitk:4749 gitk:4763 gitk:6027 gitk:11849 gitk:11850
 msgid "None"
 msgstr "Inget"
 
-#: gitk:4604 gitk:6451 gitk:8309 gitk:8324
-msgid "Date"
-msgstr "Datum"
-
-#: gitk:4604 gitk:6451
-msgid "CDate"
-msgstr "Skapat datum"
-
-#: gitk:4753 gitk:4758
+#: gitk:4846 gitk:4851
 msgid "Descendant"
 msgstr "Avkomling"
 
-#: gitk:4754
+#: gitk:4847
 msgid "Not descendant"
 msgstr "Inte avkomling"
 
-#: gitk:4761 gitk:4766
+#: gitk:4854 gitk:4859
 msgid "Ancestor"
 msgstr "Förfader"
 
-#: gitk:4762
+#: gitk:4855
 msgid "Not ancestor"
 msgstr "Inte förfader"
 
-#: gitk:5052
+#: gitk:5145
 msgid "Local changes checked in to index but not committed"
 msgstr "Lokala ändringar sparade i indexet men inte incheckade"
 
-#: gitk:5088
+#: gitk:5181
 msgid "Local uncommitted changes, not checked in to index"
 msgstr "Lokala ändringar, ej sparade i indexet"
 
-#: gitk:6769
+#: gitk:6882
 msgid "many"
 msgstr "många"
 
-#: gitk:6952
+#: gitk:7065
 msgid "Tags:"
 msgstr "Taggar:"
 
-#: gitk:6969 gitk:6975 gitk:8302
+#: gitk:7082 gitk:7088 gitk:8500
 msgid "Parent"
 msgstr "Förälder"
 
-#: gitk:6980
+#: gitk:7093
 msgid "Child"
 msgstr "Barn"
 
-#: gitk:6989
+#: gitk:7102
 msgid "Branch"
 msgstr "Gren"
 
-#: gitk:6992
+#: gitk:7105
 msgid "Follows"
 msgstr "Följer"
 
-#: gitk:6995
+#: gitk:7108
 msgid "Precedes"
 msgstr "Föregår"
 
-#: gitk:7532
+#: gitk:7653
 #, tcl-format
 msgid "Error getting diffs: %s"
 msgstr "Fel vid hämtning av diff: %s"
 
-#: gitk:8130
+#: gitk:8328
 msgid "Goto:"
 msgstr "Gå till:"
 
-#: gitk:8151
+#: gitk:8349
 #, tcl-format
 msgid "Short SHA1 id %s is ambiguous"
 msgstr "Förkortat SHA1-id %s är tvetydigt"
 
-#: gitk:8158
+#: gitk:8356
 #, tcl-format
 msgid "Revision %s is not known"
 msgstr "Revisionen %s är inte känd"
 
-#: gitk:8168
+#: gitk:8366
 #, tcl-format
 msgid "SHA1 id %s is not known"
 msgstr "SHA-id:t %s är inte känt"
 
-#: gitk:8170
+#: gitk:8368
 #, tcl-format
 msgid "Revision %s is not in the current view"
 msgstr "Revisionen %s finns inte i den nuvarande vyn"
 
-#: gitk:8312
+#: gitk:8507 gitk:8522
+msgid "Date"
+msgstr "Datum"
+
+#: gitk:8510
 msgid "Children"
 msgstr "Barn"
 
-#: gitk:8370
+#: gitk:8573
 #, tcl-format
 msgid "Reset %s branch to here"
 msgstr "Återställ grenen %s hit"
 
-#: gitk:8372
+#: gitk:8575
 msgid "Detached head: can't reset"
 msgstr "Frånkopplad head: kan inte återställa"
 
-#: gitk:8481 gitk:8487
+#: gitk:8680 gitk:8686
 msgid "Skipping merge commit "
 msgstr "Hoppar över sammanslagningsincheckning "
 
-#: gitk:8496 gitk:8501
+#: gitk:8695 gitk:8700
 msgid "Error getting patch ID for "
 msgstr "Fel vid hämtning av patch-id för "
 
-#: gitk:8497 gitk:8502
+#: gitk:8696 gitk:8701
 msgid " - stopping\n"
 msgstr " - stannar\n"
 
-#: gitk:8507 gitk:8510 gitk:8518 gitk:8532 gitk:8541
+#: gitk:8706 gitk:8709 gitk:8717 gitk:8731 gitk:8740
 msgid "Commit "
 msgstr "Incheckning "
 
-#: gitk:8511
+#: gitk:8710
 msgid ""
 " is the same patch as\n"
 "       "
@@ -850,7 +868,7 @@ msgstr ""
 " är samma patch som\n"
 "       "
 
-#: gitk:8519
+#: gitk:8718
 msgid ""
 " differs from\n"
 "       "
@@ -858,7 +876,7 @@ msgstr ""
 " skiljer sig från\n"
 "       "
 
-#: gitk:8521
+#: gitk:8720
 msgid ""
 "Diff of commits:\n"
 "\n"
@@ -866,131 +884,131 @@ msgstr ""
 "Skillnad mellan incheckningar:\n"
 "\n"
 
-#: gitk:8533 gitk:8542
+#: gitk:8732 gitk:8741
 #, tcl-format
 msgid " has %s children - stopping\n"
 msgstr " har %s barn - stannar\n"
 
-#: gitk:8561
+#: gitk:8760
 #, tcl-format
 msgid "Error writing commit to file: %s"
 msgstr "Fel vid skrivning av incheckning till fil: %s"
 
-#: gitk:8567
+#: gitk:8766
 #, tcl-format
 msgid "Error diffing commits: %s"
 msgstr "Fel vid jämförelse av incheckningar: %s"
 
-#: gitk:8598
+#: gitk:8812
 msgid "Top"
 msgstr "Topp"
 
-#: gitk:8599
+#: gitk:8813
 msgid "From"
 msgstr "Från"
 
-#: gitk:8604
+#: gitk:8818
 msgid "To"
 msgstr "Till"
 
-#: gitk:8628
+#: gitk:8842
 msgid "Generate patch"
 msgstr "Generera patch"
 
-#: gitk:8630
+#: gitk:8844
 msgid "From:"
 msgstr "Från:"
 
-#: gitk:8639
+#: gitk:8853
 msgid "To:"
 msgstr "Till:"
 
-#: gitk:8648
+#: gitk:8862
 msgid "Reverse"
 msgstr "Vänd"
 
-#: gitk:8650 gitk:8845
+#: gitk:8864 gitk:9059
 msgid "Output file:"
 msgstr "Utdatafil:"
 
-#: gitk:8656
+#: gitk:8870
 msgid "Generate"
 msgstr "Generera"
 
-#: gitk:8694
+#: gitk:8908
 msgid "Error creating patch:"
 msgstr "Fel vid generering av patch:"
 
-#: gitk:8717 gitk:8833 gitk:8890
+#: gitk:8931 gitk:9047 gitk:9104
 msgid "ID:"
 msgstr "Id:"
 
-#: gitk:8726
+#: gitk:8940
 msgid "Tag name:"
 msgstr "Taggnamn:"
 
-#: gitk:8729
+#: gitk:8943
 msgid "Tag message is optional"
 msgstr "Taggmeddelandet är valfritt"
 
-#: gitk:8731
+#: gitk:8945
 msgid "Tag message:"
 msgstr "Taggmeddelande:"
 
-#: gitk:8735 gitk:8899
+#: gitk:8949 gitk:9113
 msgid "Create"
 msgstr "Skapa"
 
-#: gitk:8753
+#: gitk:8967
 msgid "No tag name specified"
 msgstr "Inget taggnamn angavs"
 
-#: gitk:8757
+#: gitk:8971
 #, tcl-format
 msgid "Tag \"%s\" already exists"
 msgstr "Taggen \"%s\" finns redan"
 
-#: gitk:8767
+#: gitk:8981
 msgid "Error creating tag:"
 msgstr "Fel vid skapande av tagg:"
 
-#: gitk:8842
+#: gitk:9056
 msgid "Command:"
 msgstr "Kommando:"
 
-#: gitk:8850
+#: gitk:9064
 msgid "Write"
 msgstr "Skriv"
 
-#: gitk:8868
+#: gitk:9082
 msgid "Error writing commit:"
 msgstr "Fel vid skrivning av incheckning:"
 
-#: gitk:8895
+#: gitk:9109
 msgid "Name:"
 msgstr "Namn:"
 
-#: gitk:8918
+#: gitk:9132
 msgid "Please specify a name for the new branch"
 msgstr "Ange ett namn för den nya grenen"
 
-#: gitk:8923
+#: gitk:9137
 #, tcl-format
 msgid "Branch '%s' already exists. Overwrite?"
 msgstr "Grenen \"%s\" finns redan. Skriva över?"
 
-#: gitk:8989
+#: gitk:9204
 #, tcl-format
 msgid "Commit %s is already included in branch %s -- really re-apply it?"
 msgstr ""
 "Incheckningen %s finns redan på grenen %s -- skall den verkligen appliceras "
 "på nytt?"
 
-#: gitk:8994
+#: gitk:9209
 msgid "Cherry-picking"
 msgstr "Plockar"
 
-#: gitk:9003
+#: gitk:9218
 #, tcl-format
 msgid ""
 "Cherry-pick failed because of local changes to file '%s'.\n"
@@ -1000,7 +1018,7 @@ msgstr ""
 "Checka in, återställ eller spara undan (stash) dina ändringar och försök "
 "igen."
 
-#: gitk:9009
+#: gitk:9224
 msgid ""
 "Cherry-pick failed because of merge conflict.\n"
 "Do you wish to run git citool to resolve it?"
@@ -1008,32 +1026,32 @@ msgstr ""
 "Cherry-pick misslyckades på grund av en sammanslagningskonflikt.\n"
 "Vill du köra git citool för att lösa den?"
 
-#: gitk:9025
+#: gitk:9240
 msgid "No changes committed"
 msgstr "Inga ändringar incheckade"
 
-#: gitk:9051
+#: gitk:9266
 msgid "Confirm reset"
 msgstr "Bekräfta återställning"
 
-#: gitk:9053
+#: gitk:9268
 #, tcl-format
 msgid "Reset branch %s to %s?"
 msgstr "Återställa grenen %s till %s?"
 
-#: gitk:9055
+#: gitk:9270
 msgid "Reset type:"
 msgstr "Typ av återställning:"
 
-#: gitk:9058
+#: gitk:9273
 msgid "Soft: Leave working tree and index untouched"
 msgstr "Mjuk: Rör inte utcheckning och index"
 
-#: gitk:9061
+#: gitk:9276
 msgid "Mixed: Leave working tree untouched, reset index"
 msgstr "Blandad: Rör inte utcheckning, återställ index"
 
-#: gitk:9064
+#: gitk:9279
 msgid ""
 "Hard: Reset working tree and index\n"
 "(discard ALL local changes)"
@@ -1041,19 +1059,19 @@ msgstr ""
 "Hård: Återställ utcheckning och index\n"
 "(förkastar ALLA lokala ändringar)"
 
-#: gitk:9081
+#: gitk:9296
 msgid "Resetting"
 msgstr "Återställer"
 
-#: gitk:9141
+#: gitk:9356
 msgid "Checking out"
 msgstr "Checkar ut"
 
-#: gitk:9194
+#: gitk:9409
 msgid "Cannot delete the currently checked-out branch"
 msgstr "Kan inte ta bort den just nu utcheckade grenen"
 
-#: gitk:9200
+#: gitk:9415
 #, tcl-format
 msgid ""
 "The commits on branch %s aren't on any other branch.\n"
@@ -1062,16 +1080,16 @@ msgstr ""
 "Incheckningarna på grenen %s existerar inte på någon annan gren.\n"
 "Vill du verkligen ta bort grenen %s?"
 
-#: gitk:9231
+#: gitk:9446
 #, tcl-format
 msgid "Tags and heads: %s"
 msgstr "Taggar och huvuden: %s"
 
-#: gitk:9246
+#: gitk:9461
 msgid "Filter"
 msgstr "Filter"
 
-#: gitk:9541
+#: gitk:9757
 msgid ""
 "Error reading commit topology information; branch and preceding/following "
 "tag information will be incomplete."
@@ -1079,206 +1097,219 @@ msgstr ""
 "Fel vid läsning av information om incheckningstopologi; information om "
 "grenar och föregående/senare taggar kommer inte vara komplett."
 
-#: gitk:10527
+#: gitk:10744
 msgid "Tag"
 msgstr "Tagg"
 
-#: gitk:10527
+#: gitk:10744
 msgid "Id"
 msgstr "Id"
 
-#: gitk:10576
+#: gitk:10793
 msgid "Gitk font chooser"
 msgstr "Teckensnittsväljare för Gitk"
 
-#: gitk:10593
+#: gitk:10810
 msgid "B"
 msgstr "F"
 
-#: gitk:10596
+#: gitk:10813
 msgid "I"
 msgstr "K"
 
-#: gitk:10714
-msgid "Gitk preferences"
-msgstr "Inställningar för Gitk"
-
-#: gitk:10716
+#: gitk:10931
 msgid "Commit list display options"
 msgstr "Alternativ för incheckningslistvy"
 
-#: gitk:10719
+#: gitk:10934
 msgid "Maximum graph width (lines)"
 msgstr "Maximal grafbredd (rader)"
 
-#: gitk:10722
+#: gitk:10937
 #, tcl-format
 msgid "Maximum graph width (% of pane)"
 msgstr "Maximal grafbredd (% av ruta)"
 
-#: gitk:10725
+#: gitk:10940
 msgid "Show local changes"
 msgstr "Visa lokala ändringar"
 
-#: gitk:10728
-msgid "Auto-select SHA1"
-msgstr "Välj SHA1 automatiskt"
+#: gitk:10943
+msgid "Auto-select SHA1 (length)"
+msgstr "Välj SHA1 (längd) automatiskt"
 
-#: gitk:10731
+#: gitk:10947
 msgid "Hide remote refs"
 msgstr "Dölj fjärr-referenser"
 
-#: gitk:10735
+#: gitk:10951
 msgid "Diff display options"
 msgstr "Alternativ för diffvy"
 
-#: gitk:10737
+#: gitk:10953
 msgid "Tab spacing"
 msgstr "Blanksteg för tabulatortecken"
 
-#: gitk:10740
+#: gitk:10956
 msgid "Display nearby tags"
 msgstr "Visa närliggande taggar"
 
-#: gitk:10743
+#: gitk:10959
 msgid "Limit diffs to listed paths"
 msgstr "Begränsa diff till listade sökvägar"
 
-#: gitk:10746
+#: gitk:10962
 msgid "Support per-file encodings"
 msgstr "Stöd för filspecifika teckenkodningar"
 
-#: gitk:10752 gitk:10832
+#: gitk:10968 gitk:11115
 msgid "External diff tool"
 msgstr "Externt diff-verktyg"
 
-#: gitk:10753
+#: gitk:10969
 msgid "Choose..."
 msgstr "Välj..."
 
-#: gitk:10758
+#: gitk:10974
 msgid "General options"
 msgstr "Allmänna inställningar"
 
-#: gitk:10761
+#: gitk:10977
 msgid "Use themed widgets"
 msgstr "Använd tema på fönsterelement"
 
-#: gitk:10763
+#: gitk:10979
 msgid "(change requires restart)"
 msgstr "(ändringen kräver omstart)"
 
-#: gitk:10765
+#: gitk:10981
 msgid "(currently unavailable)"
 msgstr "(för närvarande inte tillgängligt)"
 
-#: gitk:10769
+#: gitk:10992
 msgid "Colors: press to choose"
 msgstr "Färger: tryck för att välja"
 
-#: gitk:10772
+#: gitk:10995
 msgid "Interface"
 msgstr "Gränssnitt"
 
-#: gitk:10773
+#: gitk:10996
 msgid "interface"
 msgstr "gränssnitt"
 
-#: gitk:10776
+#: gitk:10999
 msgid "Background"
 msgstr "Bakgrund"
 
-#: gitk:10777 gitk:10807
+#: gitk:11000 gitk:11030
 msgid "background"
 msgstr "bakgrund"
 
-#: gitk:10780
+#: gitk:11003
 msgid "Foreground"
 msgstr "Förgrund"
 
-#: gitk:10781
+#: gitk:11004
 msgid "foreground"
 msgstr "förgrund"
 
-#: gitk:10784
+#: gitk:11007
 msgid "Diff: old lines"
 msgstr "Diff: gamla rader"
 
-#: gitk:10785
+#: gitk:11008
 msgid "diff old lines"
 msgstr "diff gamla rader"
 
-#: gitk:10789
+#: gitk:11012
 msgid "Diff: new lines"
 msgstr "Diff: nya rader"
 
-#: gitk:10790
+#: gitk:11013
 msgid "diff new lines"
 msgstr "diff nya rader"
 
-#: gitk:10794
+#: gitk:11017
 msgid "Diff: hunk header"
 msgstr "Diff: delhuvud"
 
-#: gitk:10796
+#: gitk:11019
 msgid "diff hunk header"
 msgstr "diff delhuvud"
 
-#: gitk:10800
+#: gitk:11023
 msgid "Marked line bg"
 msgstr "Markerad rad bakgrund"
 
-#: gitk:10802
+#: gitk:11025
 msgid "marked line background"
 msgstr "markerad rad bakgrund"
 
-#: gitk:10806
+#: gitk:11029
 msgid "Select bg"
 msgstr "Markerad bakgrund"
 
-#: gitk:10810
+#: gitk:11038
 msgid "Fonts: press to choose"
 msgstr "Teckensnitt: tryck för att välja"
 
-#: gitk:10812
+#: gitk:11040
 msgid "Main font"
 msgstr "Huvudteckensnitt"
 
-#: gitk:10813
+#: gitk:11041
 msgid "Diff display font"
 msgstr "Teckensnitt för diffvisning"
 
-#: gitk:10814
+#: gitk:11042
 msgid "User interface font"
 msgstr "Teckensnitt för användargränssnitt"
 
-#: gitk:10842
+#: gitk:11064
+msgid "Gitk preferences"
+msgstr "Inställningar för Gitk"
+
+#: gitk:11073
+msgid "General"
+msgstr "Allmänt"
+
+#: gitk:11074
+msgid "Colors"
+msgstr "Färger"
+
+#: gitk:11075
+msgid "Fonts"
+msgstr "Teckensnitt"
+
+#: gitk:11125
 #, tcl-format
 msgid "Gitk: choose color for %s"
 msgstr "Gitk: välj färg för %s"
 
-#: gitk:11445
+#: gitk:11745
 msgid "Cannot find a git repository here."
 msgstr "Hittar inget git-arkiv här."
 
-#: gitk:11449
-#, tcl-format
-msgid "Cannot find the git directory \"%s\"."
-msgstr "Hittar inte git-katalogen \"%s\"."
-
-#: gitk:11496
+#: gitk:11792
 #, tcl-format
 msgid "Ambiguous argument '%s': both revision and filename"
 msgstr "Tvetydigt argument \"%s\": både revision och filnamn"
 
-#: gitk:11508
+#: gitk:11804
 msgid "Bad arguments to gitk:"
 msgstr "Felaktiga argument till gitk:"
 
-#: gitk:11604
+#: gitk:11907
 msgid "Command line"
 msgstr "Kommandorad"
 
+#~ msgid "CDate"
+#~ msgstr "Skapat datum"
+
+#~ msgid "Cannot find the git directory \"%s\"."
+#~ msgstr "Hittar inte git-katalogen \"%s\"."
+
 #~ msgid "SHA1 ID: "
 #~ msgstr "SHA1-id: "
 

From d809fb17b00f912112090294ff0257c8a87af56e Mon Sep 17 00:00:00 2001
From: Paul Mackerras <paulus@samba.org>
Date: Tue, 1 Jan 2013 16:51:03 +1100
Subject: [PATCH 11/13] gitk: Fix display of branch names on some commits

Sometimes the code that divides commits up into arcs creates two
successive arcs, but the commit between them (the commit at the end
of the first arc and the beginning of the second arc) has only one
parent and one child.  If that commit is also the head of one or more
branches, those branches get omitted from the "Branches" field in the
commit display.

The omission occurs because the commit gets erroneously identified as
a commit which is part-way along an arc in [descheads].  This fixes it
by changing the test to look at the arcouts array, which only contains
elements for the commits at the start or end of an arc.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gitk b/gitk
index bc73eea518..eead5a48d8 100755
--- a/gitk
+++ b/gitk
@@ -10582,13 +10582,13 @@ proc anctags {id} {
 # including id itself if it has a head.
 proc descheads {id} {
     global arcnos arcstart arcids archeads idheads cached_dheads
-    global allparents
+    global allparents arcout
 
     if {![info exists allparents($id)]} {
 	return {}
     }
     set aret {}
-    if {[llength $arcnos($id)] == 1 && [llength $allparents($id)] == 1} {
+    if {![info exists arcout($id)]} {
 	# part-way along an arc; check it first
 	set a [lindex $arcnos($id) 0]
 	if {$archeads($a) ne {}} {

From d34835c939bbe059e347133b357441e21a7f7840 Mon Sep 17 00:00:00 2001
From: Paul Mackerras <paulus@samba.org>
Date: Tue, 1 Jan 2013 23:08:12 +1100
Subject: [PATCH 12/13] gitk: Improve display of list of nearby tags and heads

This provides a control in the preferences pane for the limit on
how many tags or heads are displayed with the commit details under
the Branch(es), Precedes and Follows headings.  This limit is now
saved in ~/.gitk so that changes are persistent.

This also applies word-wrapping to the list of tags or heads under
the Branch, Precedes and Follows headings, so that long lists are
more readable.

Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/gitk b/gitk
index eead5a48d8..1dd5137d7e 100755
--- a/gitk
+++ b/gitk
@@ -2375,6 +2375,7 @@ proc makewindow {} {
     $ctext tag conf msep -font textfontbold
     $ctext tag conf found -back yellow
     $ctext tag conf currentsearchhit -back orange
+    $ctext tag conf wwrap -wrap word
 
     .pwbottom add .bleft
     if {!$use_ttk} {
@@ -2721,7 +2722,7 @@ proc savestuff {w} {
     global cmitmode wrapcomment datetimeformat limitdiffs
     global colors uicolor bgcolor fgcolor diffcolors diffcontext selectbgcolor
     global autoselect autosellen extdifftool perfile_attrs markbgcolor use_ttk
-    global hideremotes want_ttk
+    global hideremotes want_ttk maxrefs
 
     if {$stuffsaved} return
     if {![winfo viewable .]} return
@@ -2743,6 +2744,7 @@ proc savestuff {w} {
 	puts $f [list set autoselect $autoselect]
 	puts $f [list set autosellen $autosellen]
 	puts $f [list set showneartags $showneartags]
+	puts $f [list set maxrefs $maxrefs]
 	puts $f [list set hideremotes $hideremotes]
 	puts $f [list set showlocalchanges $showlocalchanges]
 	puts $f [list set datetimeformat $datetimeformat]
@@ -6906,6 +6908,7 @@ proc appendrefs {pos ids var} {
 	    set sep ", "
 	}
     }
+    $ctext tag add wwrap "$pos linestart" "$pos lineend"
     $ctext conf -state disabled
     return [llength $tags]
 }
@@ -10937,7 +10940,7 @@ proc create_prefs_page {w} {
 proc prefspage_general {notebook} {
     global NS maxwidth maxgraphpct showneartags showlocalchanges
     global tabstop limitdiffs autoselect autosellen extdifftool perfile_attrs
-    global hideremotes want_ttk have_ttk
+    global hideremotes want_ttk have_ttk maxrefs
 
     set page [create_prefs_page $notebook.general]
 
@@ -10966,9 +10969,12 @@ proc prefspage_general {notebook} {
     ${NS}::label $page.tabstopl -text [mc "Tab spacing"]
     spinbox $page.tabstop -from 1 -to 20 -width 4 -textvariable tabstop
     grid x $page.tabstopl $page.tabstop -sticky w
-    ${NS}::checkbutton $page.ntag -text [mc "Display nearby tags"] \
+    ${NS}::checkbutton $page.ntag -text [mc "Display nearby tags/heads"] \
 	-variable showneartags
     grid x $page.ntag -sticky w
+    ${NS}::label $page.maxrefsl -text [mc "Maximum # tags/heads to show"]
+    spinbox $page.maxrefs -from 1 -to 1000 -width 4 -textvariable maxrefs
+    grid x $page.maxrefsl $page.maxrefs -sticky w
     ${NS}::checkbutton $page.ldiff -text [mc "Limit diffs to listed paths"] \
 	-variable limitdiffs
     grid x $page.ldiff -sticky w

From 386befb773e2b4a7cc31135f22555e27597392c1 Mon Sep 17 00:00:00 2001
From: Paul Mackerras <paulus@samba.org>
Date: Wed, 2 Jan 2013 15:25:29 +1100
Subject: [PATCH 13/13] gitk: Display important heads even when there are many

When there are more than $maxrefs descendant heads to display in the
Branches field of the commit display, we currently just display "many",
which is not very informative.  To make the display more informative,
we now look for "master" and whichever head is currently checked out,
and display them even if there are too many heads to display them all.
The display then looks like "Branches: master and many more (33)" for
instance.

Signed-off-by: Paul Mackerras <paulus@samba.org>
---
 gitk | 59 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 44 insertions(+), 15 deletions(-)

diff --git a/gitk b/gitk
index 1dd5137d7e..b3706fc9b9 100755
--- a/gitk
+++ b/gitk
@@ -6879,7 +6879,7 @@ proc viewnextline {dir} {
 # add a list of tag or branch names at position pos
 # returns the number of names inserted
 proc appendrefs {pos ids var} {
-    global ctext linknum curview $var maxrefs
+    global ctext linknum curview $var maxrefs mainheadid
 
     if {[catch {$ctext index $pos}]} {
 	return 0
@@ -6892,25 +6892,54 @@ proc appendrefs {pos ids var} {
 	    lappend tags [list $tag $id]
 	}
     }
+
+    set sep {}
+    set tags [lsort -index 0 -decreasing $tags]
+    set nutags 0
+
     if {[llength $tags] > $maxrefs} {
-	$ctext insert $pos "[mc "many"] ([llength $tags])"
-    } else {
-	set tags [lsort -index 0 -decreasing $tags]
-	set sep {}
-	foreach ti $tags {
-	    set id [lindex $ti 1]
-	    set lk link$linknum
-	    incr linknum
-	    $ctext tag delete $lk
-	    $ctext insert $pos $sep
-	    $ctext insert $pos [lindex $ti 0] $lk
-	    setlink $id $lk
-	    set sep ", "
+	# If we are displaying heads, and there are too many,
+	# see if there are some important heads to display.
+	# Currently this means "master" and the current head.
+	set itags {}
+	if {$var eq "idheads"} {
+	    set utags {}
+	    foreach ti $tags {
+		set hname [lindex $ti 0]
+		set id [lindex $ti 1]
+		if {($hname eq "master" || $id eq $mainheadid) &&
+		    [llength $itags] < $maxrefs} {
+		    lappend itags $ti
+		} else {
+		    lappend utags $ti
+		}
+	    }
+	    set tags $utags
 	}
+	if {$itags ne {}} {
+	    set str [mc "and many more"]
+	    set sep " "
+	} else {
+	    set str [mc "many"]
+	}
+	$ctext insert $pos "$str ([llength $tags])"
+	set nutags [llength $tags]
+	set tags $itags
+    }
+
+    foreach ti $tags {
+	set id [lindex $ti 1]
+	set lk link$linknum
+	incr linknum
+	$ctext tag delete $lk
+	$ctext insert $pos $sep
+	$ctext insert $pos [lindex $ti 0] $lk
+	setlink $id $lk
+	set sep ", "
     }
     $ctext tag add wwrap "$pos linestart" "$pos lineend"
     $ctext conf -state disabled
-    return [llength $tags]
+    return [expr {[llength $tags] + $nutags}]
 }
 
 # called when we have finished computing the nearby tags