Skip to content

Commit d14f841

Browse files
committed
Respecting user's allow_ansi value when printing hints and errors in AutoCompleter
Simplified printing of CompletionErrors
1 parent 10ffc07 commit d14f841

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

cmd2/argparse_completer.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
from . import cmd2
1717
from . import utils
18-
from .ansi import ansi_safe_wcswidth, style_error
18+
from .ansi import ansi_aware_write, ansi_safe_wcswidth, style_error
1919
from .argparse_custom import ATTR_CHOICES_CALLABLE, INFINITY, generate_range_error
2020
from .argparse_custom import ATTR_SUPPRESS_TAB_HINT, ATTR_DESCRIPTIVE_COMPLETION_HEADER, ATTR_NARGS_RANGE
2121
from .argparse_custom import ChoicesCallable, CompletionError, CompletionItem
@@ -583,7 +583,8 @@ def _complete_for_arg(self, arg_action: argparse.Action,
583583
@staticmethod
584584
def _print_message(msg: str) -> None:
585585
"""Print a message instead of tab completions and redraw the prompt and input line"""
586-
print(msg)
586+
import sys
587+
ansi_aware_write(sys.stdout, msg + '\n')
587588
rl_force_redisplay()
588589

589590
def _print_arg_hint(self, arg_action: argparse.Action) -> None:
@@ -621,9 +622,6 @@ def _print_completion_error(self, arg_action: argparse.Action, completion_error:
621622
:param arg_action: action being tab completed
622623
:param completion_error: error that occurred
623624
"""
624-
formatter = self._parser._get_formatter()
625-
formatter.start_section("Error tab completing {}".format(argparse._get_action_name(arg_action)))
626-
formatter.add_text(str(completion_error))
627-
formatter.end_section()
628-
error = style_error(formatter.format_help())
629-
self._print_message('\n' + error)
625+
error = ("\nError tab completing {}:\n"
626+
" {}\n".format(argparse._get_action_name(arg_action), str(completion_error)))
627+
self._print_message(style_error('{}'.format(error)))

0 commit comments

Comments
 (0)