aider/examples/no-color.md
Paul Gauthier 4b8fff69cb copy
2023-05-27 18:01:58 -07:00

3.4 KiB

Honor the NO_COLOR environment variable

The user pastes the specification of the NO_COLOR environment variable protocol from no-color.org into the chat with GPT-4.

GPT figures out which files need to be edited, and asks permission to make changes. It then disables all the color and pretty-printing functions if NO_COLOR is set, so the tool conforms to the specification.

Chat transcript

$ aider
Using git repo: .git
Use /help to see in-chat commands.

Command-line software which adds ANSI color to its output by default should check for a NO_COLOR environment variable that, when present and not an empty string (regardless of its value), prevents the addition of ANSI color.

To implement this feature, we need to modify the aider/io.py file. Please make it read-write so I can provide the necessary changes.

aider/io.py
Add these files to the chat? y

Great! Now, I will make the necessary changes to check for the NO_COLOR environment variable and disable ANSI color when it is present and not an empty string.

aider/io.py
<<<<<<< ORIGINAL
import os
=======
import os
import os.path
>>>>>>> UPDATED
aider/io.py
<<<<<<< ORIGINAL
    def __init__(
        self,
        pretty=True,
        yes=False,
        input_history_file=None,
        chat_history_file=None,
        input=None,
        output=None,
        user_input_color="blue",
        tool_output_color=None,
        tool_error_color="red",
    ):
        self.user_input_color = user_input_color
        self.tool_output_color = tool_output_color
        self.tool_error_color = tool_error_color
        self.input = input
        self.output = output
        self.pretty = pretty
        self.yes = yes
        self.input_history_file = input_history_file
        if chat_history_file is not None:
            self.chat_history_file = Path(chat_history_file)
        else:
            self.chat_history_file = None

        if pretty:
            self.console = Console()
        else:
            self.console = Console(force_terminal=True, no_color=True)
=======
    def __init__(
        self,
        pretty=True,
        yes=False,
        input_history_file=None,
        chat_history_file=None,
        input=None,
        output=None,
        user_input_color="blue",
        tool_output_color=None,
        tool_error_color="red",
    ):
        no_color = os.environ.get("NO_COLOR")
        if no_color is not None and no_color != "":
            pretty = False

        self.user_input_color = user_input_color if pretty else None
        self.tool_output_color = tool_output_color if pretty else None
        self.tool_error_color = tool_error_color if pretty else None
        self.input = input
        self.output = output
        self.pretty = pretty
        self.yes = yes
        self.input_history_file = input_history_file
        if chat_history_file is not None:
            self.chat_history_file = Path(chat_history_file)
        else:
            self.chat_history_file = None

        self.console = Console(force_terminal=not pretty, no_color=not pretty)
>>>>>>> UPDATED

These changes will make the software check for the NO_COLOR environment variable and disable ANSI color when it is present and not an empty string.

Applied edit to aider/io.py
Applied edit to aider/io.py
Commit 3218242 aider: Added check for NO_COLOR environment variable to disable ANSI color.