summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/blame.tcl5
-rw-r--r--lib/diff.tcl9
2 files changed, 10 insertions, 4 deletions
diff --git a/lib/blame.tcl b/lib/blame.tcl
index 0d635cd3a7..9464a599dc 100644
--- a/lib/blame.tcl
+++ b/lib/blame.tcl
@@ -399,7 +399,10 @@ method _load {jump} {
} else {
set fd [git_read cat-file blob "$commit:$path"]
}
- fconfigure $fd -blocking 0 -translation lf -encoding binary
+ fconfigure $fd \
+ -blocking 0 \
+ -translation lf \
+ -encoding [tcl_encoding [gitattr $path encoding UTF-8]]
fileevent $fd readable [cb _read_file $fd $jump]
set current_fd $fd
}
diff --git a/lib/diff.tcl b/lib/diff.tcl
index a30c80a935..b0ecfbcb59 100644
--- a/lib/diff.tcl
+++ b/lib/diff.tcl
@@ -164,8 +164,11 @@ proc show_other_diff {path w m scroll_pos} {
set sz [string length $content]
}
file {
+ set enc [gitattr $path encoding UTF-8]
set fd [open $path r]
- fconfigure $fd -eofchar {}
+ fconfigure $fd \
+ -eofchar {} \
+ -encoding [tcl_encoding $enc]
set content [read $fd $max_sz]
close $fd
set sz [file size $path]
@@ -279,8 +282,8 @@ proc start_show_diff {scroll_pos {add_opts {}}} {
set ::current_diff_inheader 1
fconfigure $fd \
-blocking 0 \
- -encoding binary \
- -translation binary
+ -encoding [tcl_encoding [gitattr $path encoding UTF-8]] \
+ -translation lf
fileevent $fd readable [list read_diff $fd $scroll_pos]
}