refactor-864370: Use property for Assignment.getMessage

s/assignment.getMessage()/assignment.message/g

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Use property for Requisition.getStatus

s/requisition.getStatus()/requisition.status/g

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Deprecate assignment.onAssignmentChange

There are more events in GCLI than are needed. This converges the
onAssignmentChanged events (on the Assignments and on Requisition) into
requisition.onTextChange.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Merge setAssignment functions

Now we've got rid of the extra events, we can merge
requisition._assignmentChanged and the setAssignmentInternal function
(inside setAssignment) into a single simpler _setAssignmentInternal
function.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Use assignment shortcuts

Assignment has a number of shortcuts (specifically .value, .arg and
.message) which link to those values on the assignments conversion.
Some places were still going through assignment.conversion.foo when they
could just go assignment.foo

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Upgrade Event.holdFire

GCLI's EventEmitter has a holdFire function which is useful when you're
doing a bunch of actions all of which would normally fire events, but
you want to coalesce them into a single event firing.

The prior implementation used a 'holdFire' boolean to achieve this, but
that means that calls to event.holdFire() and event.resumeFire() can't
be nested, so we replace 'holdFire' with an integer 'fireHoldCount'.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Remove _structuralChangeInProgress

Previously, both _structuralChangeInProgress and onTextChange.holdFire
were used to reduce the number of events fired during an update. With
this change, only onTextChange.holdFire is used.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
hiddenhelp-781856: Filter out hidden subcommands

'help x' correctly filtered out hidden commands (from those that begin
with an 'x' assuming that 'x' is not a command name) However if x is
a parent command name then we previously forgot to filter out hidden
commands.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
removesetting-884015: Fix variable name

The (very minor) substance is a variable name fix in settings.js. The
rest is adding tests.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
helpgroups-789884: Display parameters in groups

Parameters can be grouped, but the help command didn't display the
groups when it listed the parameters. Now it does.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
isodate-892901: Fix date parsing in non UTC timezones

See inline comments for details.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
filterparent-773188: Filter out parent commands

This involves some refactoring of selection.js because we're copying
_findPredictions() from selection.js to command.js (since there are
enough differences now that unifying them is making them more complex)
So we can simplify _findPredictions() in selection.js.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Improve test summary output

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Prevent output

Previously this test created output, which tests are not supposed to do
this version doesn't.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Optimize command predictions

Previously we were asking for predictions twice per key-press, even when
we had all we needed from an exact match. Now we delay asking for
predictions to save the extra lookup.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Allow command type to allow parent commands

Commands like 'context' work with parent commands which are not
executable. However obviously to execute a command, it needs an exec
function. So we need a flag to allow non executable commands.

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: exec() should check status better

Previously requisition.exec() assumed that status==VALID and it threw
if there was no command. Now it properly checks for status==VALID and
returns an Output object otherwise.
This means that we can remove the logic which duplicates this from
callers of exec()

Signed-off-by: Joe Walker <jwalker@mozilla.com>
output-901602: Add convert to Output

This allows us to simplify a number of functions that call
converters.convert() using the data in output.convert().

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: Minor tidy-ups

Biggest change is to remove some deprecated (and broken) options from
requisition.exec()

Signed-off-by: Joe Walker <jwalker@mozilla.com>
refactor-864370: REBASE small changed