git-gui: break out a separate function git_read_nice

There are two callers of git_read that request special treatment using
option --nice. Rewrite them to call a new function git_read_nice that
does the special treatment. Now we can remove all option treatment from
git_read.

git_write has the same capability, but there are no callers that
request --nice. Remove the feature without substitution.

This is a preparation for a later change where we want to make git_read
and friends non-variadic. Then it cannot have optional arguments.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>

Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
Johannes Sixt
2025-05-03 13:11:21 +02:00
committed by Taylor Blau
parent 23ba43256b
commit aa42e87ef4
3 changed files with 12 additions and 35 deletions

View File

@@ -643,22 +643,16 @@ proc _open_stdout_stderr {cmd} {
}
proc git_read {args} {
set cmdp [_git_cmd [lindex $args 0]]
set args [lrange $args 1 end]
return [_open_stdout_stderr [concat $cmdp $args]]
}
proc git_read_nice {args} {
set opt [list]
while {1} {
switch -- [lindex $args 0] {
--nice {
_lappend_nice opt
}
default {
break
}
}
set args [lrange $args 1 end]
}
_lappend_nice opt
set cmdp [_git_cmd [lindex $args 0]]
set args [lrange $args 1 end]
@@ -667,28 +661,11 @@ proc git_read {args} {
}
proc git_write {args} {
set opt [list]
while {1} {
switch -- [lindex $args 0] {
--nice {
_lappend_nice opt
}
default {
break
}
}
set args [lrange $args 1 end]
}
set cmdp [_git_cmd [lindex $args 0]]
set args [lrange $args 1 end]
_trace_exec [concat $opt $cmdp $args]
return [open [concat [list | ] $opt $cmdp $args] w]
_trace_exec [concat $cmdp $args]
return [open [concat [list | ] $cmdp $args] w]
}
proc githook_read {hook_name args} {

View File

@@ -617,7 +617,7 @@ method _exec_blame {cur_w cur_d options cur_s} {
}
lappend options -- $path
set fd [eval git_read --nice blame $options]
set fd [eval git_read_nice blame $options]
fconfigure $fd -blocking 0 -translation lf -encoding utf-8
fileevent $fd readable [cb _read_blame $fd $cur_w $cur_d]
set current_fd $fd

View File

@@ -338,7 +338,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
}
}
if {[catch {set fd [eval git_read --nice $cmd]} err]} {
if {[catch {set fd [eval git_read_nice $cmd]} err]} {
set diff_active 0
unlock_index
ui_status [mc "Unable to display %s" [escape_path $path]]