First stab

This commit is contained in:
Matteo Landi 2025-05-08 17:01:04 +02:00
parent 3caab85931
commit 2528872897
4 changed files with 26 additions and 11 deletions

View file

@ -327,6 +327,11 @@ def get_parser(default_config_files, git_root):
default="#00cc00",
help="Set the color for user input (default: #00cc00)",
)
group.add_argument(
"--user-submitted-input-color",
default=None,
help="Set the color for user submitted input (default: #00cc00)",
)
group.add_argument(
"--tool-output-color",
default=None,

View file

@ -243,6 +243,7 @@ class InputOutput:
input=None,
output=None,
user_input_color="blue",
user_submitted_input_color=None,
tool_output_color=None,
tool_error_color="red",
tool_warning_color="#FFA500",
@ -281,6 +282,9 @@ class InputOutput:
pretty = False
self.user_input_color = ensure_hash_prefix(user_input_color) if pretty else None
self.user_submitted_input_color = (
ensure_hash_prefix(user_submitted_input_color) if pretty else None
)
self.tool_output_color = ensure_hash_prefix(tool_output_color) if pretty else None
self.tool_error_color = ensure_hash_prefix(tool_error_color) if pretty else None
self.tool_warning_color = ensure_hash_prefix(tool_warning_color) if pretty else None
@ -343,6 +347,7 @@ class InputOutput:
"output": self.output,
"lexer": PygmentsLexer(MarkdownLexer),
"editing_mode": self.editingmode,
"erase_when_done": True,
}
if self.editingmode == EditingMode.VI:
session_kwargs["cursor"] = ModalCursorShapeConfig()
@ -369,6 +374,7 @@ class InputOutput:
"""Validate configured color strings and reset invalid ones."""
color_attributes = [
"user_input_color",
"user_submitted_input_color",
"tool_output_color",
"tool_error_color",
"tool_warning_color",
@ -501,11 +507,11 @@ class InputOutput:
raise
def rule(self):
if self.pretty:
style = dict(style=self.user_input_color) if self.user_input_color else dict()
self.console.rule(**style)
else:
print()
if not self.pretty:
return "\n"
columns = self.console.width
return "\n".join(["" * columns, ""])
def interrupt_input(self):
if self.prompt_session and self.prompt_session.app:
@ -523,18 +529,16 @@ class InputOutput:
abs_read_only_fnames=None,
edit_format=None,
):
self.rule()
# Ring the bell if needed
self.ring_bell()
rel_fnames = list(rel_fnames)
show = ""
show = self.rule()
if rel_fnames:
rel_read_only_fnames = [
get_rel_fname(fname, root) for fname in (abs_read_only_fnames or [])
]
show = self.format_files_for_input(rel_fnames, rel_read_only_fnames)
show += self.format_files_for_input(rel_fnames, rel_read_only_fnames)
prompt_prefix = ""
if edit_format:
@ -658,6 +662,7 @@ class InputOutput:
complete_while_typing=True,
prompt_continuation=get_continuation,
)
self.display_user_input(show + line)
else:
line = input(show)
@ -754,8 +759,8 @@ class InputOutput:
log_file.write(content + "\n")
def display_user_input(self, inp):
if self.pretty and self.user_input_color:
style = dict(style=self.user_input_color)
if self.pretty and self.user_submitted_input_color:
style = dict(style=self.user_submitted_input_color)
else:
style = dict()
@ -868,6 +873,7 @@ class InputOutput:
style=style,
complete_while_typing=False,
)
self.display_user_input(question + res)
else:
res = input(question)
except EOFError:

View file

@ -557,6 +557,7 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
input=input,
output=output,
user_input_color=args.user_input_color,
user_submitted_input_color=args.user_submitted_input_color,
tool_output_color=args.tool_output_color,
tool_warning_color=args.tool_warning_color,
tool_error_color=args.tool_error_color,

View file

@ -202,6 +202,9 @@ cog.outl("```")
## Set the color for user input (default: #00cc00)
#AIDER_USER_INPUT_COLOR=#00cc00
## Set the color for user submitted input (default: None)
#AIDER_USER_SUBMITTED_INPUT_COLOR=
## Set the color for tool output (default: None)
#AIDER_TOOL_OUTPUT_COLOR=