Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
 public Task DisposeAsync() =>
 NativeMethodsWrapper.TrySetConsoleScreenBufferOutputMode(handle, oldMode, log, logPrefix);