public static async Task <IAsyncDisposable> TryConfigure(bool noColor, OperatingSystem operatingSystem, TextWriter log, string logPrefix) { if (noColor || operatingSystem != OperatingSystem.Windows) { return(new NullAsyncDisposable()); } var(handle, gotHandle) = await NativeMethodsWrapper.TryGetStandardOutputHandle(log, logPrefix).Tax(); if (!gotHandle) { return(new NullAsyncDisposable()); } var(oldMode, gotMode) = await NativeMethodsWrapper.TryGetConsoleScreenBufferOutputMode(handle, log, logPrefix).Tax(); if (!gotMode) { return(new NullAsyncDisposable()); } var newMode = oldMode | NativeMethods.ConsoleOutputModes.ENABLE_VIRTUAL_TERMINAL_PROCESSING; await NativeMethodsWrapper.TrySetConsoleScreenBufferOutputMode(handle, newMode, log, logPrefix).Tax(); return(new State(handle, oldMode, log, logPrefix)); }
public static async Task TryEnableVirtualTerminalProcessing(TextWriter log) { (var handle, var gotHandle) = await NativeMethodsWrapper.TryGetStandardOutputHandle(log).Tax(); if (!gotHandle) { return; } (var mode, var gotMode) = await NativeMethodsWrapper.TryGetConsoleScreenBufferOutputMode(handle, log).Tax(); if (!gotMode) { return; } mode |= NativeMethods.ConsoleOutputModes.ENABLE_VIRTUAL_TERMINAL_PROCESSING; await NativeMethodsWrapper.TrySetConsoleScreenBufferOutputMode(handle, mode, log).Tax(); }
public Task DisposeAsync() => NativeMethodsWrapper.TrySetConsoleScreenBufferOutputMode(handle, oldMode, log, logPrefix);