From c80e5cd97f74ca2971159f636db344e2a9912d25 Mon Sep 17 00:00:00 2001 From: Andy Kluger Date: Thu, 13 Nov 2025 12:50:30 -0500 Subject: [PATCH] Only set buffer type to stdout when no file args are passed Fixes #2600 --- cmd/micro/micro.go | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index f3f3be27..f4564ede 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -163,11 +163,6 @@ func LoadInput(args []string) []*buffer.Buffer { var err error buffers := make([]*buffer.Buffer, 0, len(args)) - btype := buffer.BTDefault - if !isatty.IsTerminal(os.Stdout.Fd()) { - btype = buffer.BTStdout - } - files := make([]string, 0, len(args)) flagStartPos := buffer.Loc{-1, -1} @@ -222,7 +217,7 @@ func LoadInput(args []string) []*buffer.Buffer { // Option 1 // We go through each file and load it for i := 0; i < len(files); i++ { - buf, err := buffer.NewBufferFromFileWithCommand(files[i], btype, command) + buf, err := buffer.NewBufferFromFileWithCommand(files[i], buffer.BTDefault, command) if err != nil { screen.TermMessage(err) continue @@ -230,19 +225,26 @@ func LoadInput(args []string) []*buffer.Buffer { // If the file didn't exist, input will be empty, and we'll open an empty buffer buffers = append(buffers, buf) } - } else if !isatty.IsTerminal(os.Stdin.Fd()) { - // Option 2 - // The input is not a terminal, so something is being piped in - // and we should read from stdin - input, err = io.ReadAll(os.Stdin) - if err != nil { - screen.TermMessage("Error reading from stdin: ", err) - input = []byte{} - } - buffers = append(buffers, buffer.NewBufferFromStringWithCommand(string(input), filename, btype, command)) } else { - // Option 3, just open an empty buffer - buffers = append(buffers, buffer.NewBufferFromStringWithCommand(string(input), filename, btype, command)) + btype := buffer.BTDefault + if !isatty.IsTerminal(os.Stdout.Fd()) { + btype = buffer.BTStdout + } + + if !isatty.IsTerminal(os.Stdin.Fd()) { + // Option 2 + // The input is not a terminal, so something is being piped in + // and we should read from stdin + input, err = io.ReadAll(os.Stdin) + if err != nil { + screen.TermMessage("Error reading from stdin: ", err) + input = []byte{} + } + buffers = append(buffers, buffer.NewBufferFromStringWithCommand(string(input), filename, btype, command)) + } else { + // Option 3, just open an empty buffer + buffers = append(buffers, buffer.NewBufferFromStringWithCommand(string(input), filename, btype, command)) + } } return buffers