* Bug Fixes
* Fixed bug where ``get_all_commands`` could return non-callable attributes
* Fixed bug where **alias** command was dropping quotes around arguments
* Fixed bug where running help on argparse commands didn't work if they didn't support -h
* Fixed transcript testing bug where last command in transcript has no expected output
* Fixed bugs with how AutoCompleter and ArgparseFunctor handle argparse
arguments with nargs=argparse.REMAINDER. Tab completion now correctly
matches how argparse will parse the values. Command strings generated by
ArgparseFunctor should now be compliant with how argparse expects
REMAINDER arguments to be ordered.
* Fixed bugs with how AutoCompleter handles flag prefixes. It is no
longer hard-coded to use '-' and will check against the prefix_chars in
the argparse object. Also, single-character tokens that happen to be a
prefix char are not treated as flags by argparse and AutoCompleter now
matches that behavior.
* Fixed bug where AutoCompleter was not distinguishing between a negative number and a flag
* Fixed bug where AutoCompleter did not handle -- the same way argparse does (all args after -- are non-options)
* Enhancements
* Added ``exit_code`` attribute of ``cmd2.Cmd`` class
* Enables applications to return a non-zero exit code when exiting from ``cmdloop``
* ``ACHelpFormatter`` now inherits from ``argparse.RawTextHelpFormatter`` to make it easier
for formatting help/description text
* Aliases are now sorted alphabetically
* The **set** command now tab completes settable parameter names
* Added ``async_alert``, ``async_update_prompt``, and ``set_window_title`` functions
* These allow you to provide feedback to the user in an asychronous fashion, meaning alerts can
display when the user is still entering text at the prompt. See [async_printing.py](https://github.com/python-cmd2/cmd2/blob/master/examples/async_printing.py)
for an example.
* Cross-platform colored output support
* ``colorama`` gets initialized properly in ``Cmd.__init()``
* The ``Cmd.colors`` setting is no longer platform dependent and now has three values:
* Terminal (default) - output methods do not strip any ANSI escape sequences when output is a terminal, but
if the output is a pipe or a file the escape sequences are stripped
* Always - output methods **never** strip ANSI escape sequences, regardless of the output destination
* Never - output methods strip all ANSI escape sequences
* Added ``macro`` command to create macros, which are similar to aliases, but can take arguments when called
* All cmd2 command functions have been converted to use argparse.
* Renamed argparse_example.py to decorator_example.py to help clarify its intent
* Deprecations
* Deprecated the built-in ``cmd2`` support for colors including ``Cmd.colorize()`` and ``Cmd._colorcodes``
* Deletions (potentially breaking changes)
* The ``preparse``, ``postparsing_precmd``, and ``postparsing_postcmd`` methods *deprecated* in the previous release
have been deleted
* The new application lifecycle hook system allows for registration of callbacks to be called at various points
in the lifecycle and is more powerful and flexible than the previous system
* ``alias`` is now a command with subcommands to create, list, and delete aliases. Therefore its syntax
has changed. All current alias commands in startup scripts or transcripts will break with this release.
* `unalias` was deleted since ``alias delete`` replaced it