report error if editor not found while opening/editing with editor (netlist, stimuli file attributes) (xschemrc editor variable)

This commit is contained in:
Stefan Frederik 2021-02-14 13:05:11 +01:00
parent 9828c132ad
commit 9825349f0d
1 changed files with 39 additions and 34 deletions

View File

@ -44,39 +44,40 @@ proc execute_fileevent {id} {
append execute_data($id) [read $execute_pipe($id) 1024]
if {[eof $execute_pipe($id)]} {
fileevent $execute_pipe($id) readable ""
if { $execute_status($id) } {
# setting pipe to blocking before closing allows to see if pipeline failed
# do not ask status for processes that close stdout/stderr, as eof might
# occur before process ends and following close blocks until process terminates.
fconfigure $execute_pipe($id) -blocking 1
set status 0
# setting pipe to blocking before closing allows to see if pipeline failed
# do not ask status for processes that close stdout/stderr, as eof might
# occur before process ends and following close blocks until process terminates.
fconfigure $execute_pipe($id) -blocking 1
set status 0
if { [ info tclversion] > 8.4} {
set catch_return [eval catch [ list {close $execute_pipe($id)} err options] ]
} else {
set catch_return [eval catch [ list {close $execute_pipe($id)} err] ]
}
if {$catch_return} {
if { [ info tclversion] > 8.4} {
set details [dict get $options -errorcode]
if {[lindex $details 0] eq "CHILDSTATUS"} {
set status [lindex $details 2]
viewdata "Failed: $execute_cmd($id)\nstderr:\n$err\ndata:\n$execute_data($id)" ro
} else {
set status 1
if { [ info tclversion] > 8.4} {
set catch_return [eval catch [ list {close $execute_pipe($id)} err options] ]
} else {
set catch_return [eval catch [ list {close $execute_pipe($id)} err] ]
}
if {$catch_return} {
if { [ info tclversion] > 8.4} {
set details [dict get $options -errorcode]
if {[lindex $details 0] eq "CHILDSTATUS"} {
set status [lindex $details 2]
viewdata "Failed: $execute_cmd($id)\nstderr:\n$err\ndata:\n$execute_data($id)" ro
} else {
set status 1
if {$execute_status($id) } {
viewdata "Completed: $execute_cmd($id)\nstderr:\n$err\ndata:\n$execute_data($id)" ro
}
} else {
set status 1
viewdata "Completed: $execute_cmd($id)\nstderr:\n$err\ndata:\n$execute_data($id)" ro
}
} else {
set status 1
if {$execute_status($id) } {
viewdata "Completed: $execute_cmd($id)\nstderr:\n$err\ndata:\n$execute_data($id)" ro
}
}
if { $status == 0 } {
}
if { $status == 0 } {
if {$execute_status($id) } {
viewdata "Completed: $execute_cmd($id)\ndata:\n$execute_data($id)" ro
}
} else {
# nonblocking close always succeed
close $execute_pipe($id)
}
if { [info exists execute_callback($id)] } { eval $execute_callback($id); unset execute_callback($id) }
unset execute_pipe($id)
@ -110,7 +111,11 @@ proc execute {status args} {
incr execute_id
}
set id $execute_id
set pipe [open "|$args" r]
if { [catch {open "|$args" r} err] } {
puts "Proc execute error: $err"
} else {
set pipe $err
}
set execute_status($id) $status
set execute_pipe($id) $pipe
set execute_cmd($id) $args
@ -280,7 +285,7 @@ proc key_binding { s d } {
proc edit_file {filename} {
global editor
eval execute 0 $editor $filename
execute 0 $editor $filename
return {}
}
@ -984,8 +989,8 @@ proc utile_edit {schname} {
global netlist_dir netlist_type tcl_debug editor XSCHEM_SHAREDIR
global utile_gui_path utile_cmd_path
set tmpname [file rootname "$schname"]
eval exec {sh -c "cd \"$netlist_dir\"; $editor stimuli.$tmpname ; \
XSCHEM_SHAREDIR=\"$XSCHEM_SHAREDIR\" \"$utile_cmd_path\" stimuli.$tmpname"} &
execute 0 sh -c "cd \"$netlist_dir\" && $editor stimuli.$tmpname && \
XSCHEM_SHAREDIR=\"$XSCHEM_SHAREDIR\" \"$utile_cmd_path\" stimuli.$tmpname"
}
proc get_shell { curpath } {
@ -1004,27 +1009,27 @@ proc edit_netlist {schname } {
if { [select_netlist_dir 0] ne "" } {
# puts "edit_netlist: \"$editor $ftype ${schname}.v\" \"$netlist_dir\" bg"
if { $netlist_type=="verilog" } {
execute 0 sh -c "cd $netlist_dir; $editor $ftype \"${tmpname}.v\""
execute 0 sh -c "cd $netlist_dir && $editor $ftype \"${tmpname}.v\""
} elseif { $netlist_type=="spice" } {
if {$::OS == "Windows"} {
set cmd "$editor \"$netlist_dir/${tmpname}.spice\""
eval exec $cmd
} else {
execute 0 sh -c "cd $netlist_dir; $editor $ftype \"${tmpname}.spice\""
execute 0 sh -c "cd $netlist_dir && $editor $ftype \"${tmpname}.spice\""
}
} elseif { $netlist_type=="tedax" } {
if {$::OS == "Windows"} {
set cmd "$editor \"$netlist_dir/${tmpname}.tdx\""
eval exec $cmd
} else {
execute 0 sh -c "cd $netlist_dir; $editor $ftype \"${tmpname}.tdx\""
execute 0 sh -c "cd $netlist_dir && $editor $ftype \"${tmpname}.tdx\""
}
} elseif { $netlist_type=="vhdl" } {
if {$::OS == "Windows"} {
set cmd "$editor \"$netlist_dir/${tmpname}.vhdl\""
eval exec $cmd
} else {
execute 0 sh -c "cd $netlist_dir; $editor $ftype \"${tmpname}.vhdl\""
execute 0 sh -c "cd $netlist_dir && $editor $ftype \"${tmpname}.vhdl\""
}
}
}