diff options
-rwxr-xr-x | cmd2/argparse_completer.py | 7 | ||||
-rw-r--r-- | cmd2/cmd2.py | 6 | ||||
-rwxr-xr-x | examples/tab_autocompletion.py | 5 |
3 files changed, 11 insertions, 7 deletions
diff --git a/cmd2/argparse_completer.py b/cmd2/argparse_completer.py index 1bc7f342..995aeb48 100755 --- a/cmd2/argparse_completer.py +++ b/cmd2/argparse_completer.py @@ -77,6 +77,7 @@ from .rl_utils import rl_force_redisplay # define the completion choices for the argument. You may provide a Collection or a Function. ACTION_ARG_CHOICES = 'arg_choices' ACTION_SUPPRESS_HINT = 'suppress_hint' +ACTION_DESCRIPTIVE_COMPLETION_HEADER = 'desc_header' class CompletionItem(str): @@ -456,7 +457,11 @@ class AutoCompleter(object): fill_width=fill_width) completions_with_desc.append(entry) - header = '\n{: <{token_width}}{}'.format(action.dest.upper(), action.desc_header, token_width=token_width+2) + try: + desc_header = action.desc_header + except AttributeError: + desc_header = 'Description' + header = '\n{: <{token_width}}{}'.format(action.dest.upper(), desc_header, token_width=token_width+2) self._cmd2_app.completion_header = header self._cmd2_app.display_matches = completions_with_desc diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 3d2a8afe..75946764 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -50,7 +50,7 @@ from cmd2.parsing import StatementParser, Statement # Set up readline from .rl_utils import rl_type, RlType -if rl_type == RlType.NONE: +if rl_type == RlType.NONE: # pragma: no cover rl_warning = "Readline features including tab completion have been disabled since no \n" \ "supported version of readline was found. To resolve this, install \n" \ "pyreadline on Windows or gnureadline on Mac.\n\n" @@ -84,7 +84,7 @@ from .argparse_completer import AutoCompleter, ACArgumentParser # Newer versions of pyperclip are released as a single file, but older versions had a more complicated structure try: from pyperclip.exceptions import PyperclipException -except ImportError: +except ImportError: # pragma: no cover # noinspection PyUnresolvedReferences from pyperclip import PyperclipException @@ -121,7 +121,7 @@ ipython_available = True try: # noinspection PyUnresolvedReferences,PyPackageRequirements from IPython import embed -except ImportError: +except ImportError: # pragma: no cover ipython_available = False __version__ = '0.9.2a' diff --git a/examples/tab_autocompletion.py b/examples/tab_autocompletion.py index 817ceb72..342cfff5 100755 --- a/examples/tab_autocompletion.py +++ b/examples/tab_autocompletion.py @@ -116,9 +116,6 @@ class TabCompleteExample(cmd2.Cmd): for movie_id, movie_entry in self.MOVIE_DATABASE.items(): completions_with_desc.append(argparse_completer.CompletionItem(movie_id, movie_entry['title'])) - setattr(self.vid_delete_movie_id, 'desc_header', 'Title') - setattr(self.movies_delete_movie_id, 'desc_header', 'Title') - return completions_with_desc # This demonstrates a number of customizations of the AutoCompleter version of ArgumentParser @@ -267,6 +264,7 @@ class TabCompleteExample(cmd2.Cmd): vid_movies_delete_parser = vid_movies_commands_subparsers.add_parser('delete') vid_delete_movie_id = vid_movies_delete_parser.add_argument('movie_id', help='Movie ID') setattr(vid_delete_movie_id, argparse_completer.ACTION_ARG_CHOICES, instance_query_movie_ids) + setattr(vid_delete_movie_id, argparse_completer.ACTION_DESCRIPTIVE_COMPLETION_HEADER, 'Title') vid_shows_parser = video_types_subparsers.add_parser('shows') vid_shows_parser.set_defaults(func=_do_vid_media_shows) @@ -344,6 +342,7 @@ class TabCompleteExample(cmd2.Cmd): movies_delete_parser = movies_commands_subparsers.add_parser('delete') movies_delete_movie_id = movies_delete_parser.add_argument('movie_id', help='Movie ID') setattr(movies_delete_movie_id, argparse_completer.ACTION_ARG_CHOICES, 'instance_query_movie_ids') + setattr(movies_delete_movie_id, argparse_completer.ACTION_DESCRIPTIVE_COMPLETION_HEADER, 'Title') movies_load_parser = movies_commands_subparsers.add_parser('load') movie_file_action = movies_load_parser.add_argument('movie_file', help='Movie database') |