clear terminal properly on re-run

This commit is contained in:
Matt Parker
2025-08-10 00:50:22 +10:00
parent 02f789179f
commit 7c70448dc3
3 changed files with 9 additions and 5 deletions

View File

@@ -39,7 +39,7 @@ public class RunService
process.Start(); process.Start();
project.RunningOutputChannel = Channel.CreateUnbounded<string>(new UnboundedChannelOptions project.RunningOutputChannel = Channel.CreateUnbounded<byte[]>(new UnboundedChannelOptions
{ {
SingleReader = true, SingleReader = true,
SingleWriter = false, SingleWriter = false,
@@ -49,9 +49,9 @@ public class RunService
{ {
await foreach(var log in process.CombinedOutputChannel.Reader.ReadAllAsync()) await foreach(var log in process.CombinedOutputChannel.Reader.ReadAllAsync())
{ {
var logString = System.Text.Encoding.UTF8.GetString(log, 0, log.Length); //var logString = System.Text.Encoding.UTF8.GetString(log, 0, log.Length);
//Console.Write(logString); //Console.Write(logString);
await project.RunningOutputChannel.Writer.WriteAsync(logString).ConfigureAwait(false); await project.RunningOutputChannel.Writer.WriteAsync(log).ConfigureAwait(false);
} }
project.RunningOutputChannel.Writer.Complete(); project.RunningOutputChannel.Writer.Complete();
logsDrained.TrySetResult(); logsDrained.TrySetResult();

View File

@@ -38,7 +38,7 @@ public class SharpIdeProjectModel : ISharpIdeNode
public bool IsRunnable => MsBuildEvaluationProject.Xml.Sdk is "Microsoft.NET.Sdk.BlazorWebAssembly" || MsBuildEvaluationProject.GetPropertyValue("OutputType") is "Exe" or "WinExe"; public bool IsRunnable => MsBuildEvaluationProject.Xml.Sdk is "Microsoft.NET.Sdk.BlazorWebAssembly" || MsBuildEvaluationProject.GetPropertyValue("OutputType") is "Exe" or "WinExe";
public bool OpenInRunPanel { get; set; } public bool OpenInRunPanel { get; set; }
public Channel<string>? RunningOutputChannel { get; set; } public Channel<byte[]>? RunningOutputChannel { get; set; }
public event Func<Task> ProjectStartedRunning = () => Task.CompletedTask; public event Func<Task> ProjectStartedRunning = () => Task.CompletedTask;
public void InvokeProjectStartedRunning() => ProjectStartedRunning?.Invoke(); public void InvokeProjectStartedRunning() => ProjectStartedRunning?.Invoke();
} }

View File

@@ -31,6 +31,10 @@
private HashSet<string> _addons = ["addon-fit"]; private HashSet<string> _addons = ["addon-fit"];
public async Task Write(byte[] line)
{
await _terminalRef.Write(line);
}
public async Task Write(string line) public async Task Write(string line)
{ {
await _terminalRef.Write(line); await _terminalRef.Write(line);
@@ -40,7 +44,7 @@
{ {
if (_terminalRef is not null) if (_terminalRef is not null)
{ {
await _terminalRef.Clear(); await _terminalRef.Reset();
await InvokeAsync(StateHasChanged); await InvokeAsync(StateHasChanged);
} }
} }