top: extend command line sort field override provision

In a effort to anticipate a potential future wishlist,
the recent '-o' sort override command line switch will
now support an override of the sort direction as well.

By prepending a '+' or '-' to any valid field name the
user will be able to guarantee a specific desired sort
direction. The '+' forces a high-to-low (normal) order
while a '-' reverses that to yield a low-to-high sort.

Without this addition users would be left to the mercy
of whatever was last specified for Curwin as reflected
in the rcfile or top's default of a high-to-low order.

(everything is perfectly justified plus right margins)
(are completely filled, but of course it must be luck)

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2012-12-20 00:00:00 -06:00 committed by Craig Small
parent 2e7adced74
commit 2304af908c
2 changed files with 5 additions and 0 deletions

View File

@ -306,6 +306,9 @@ produce before ending.
\-\fBo\fR :\fI Override-sort-field\fR as:\fB\ \ \-o fieldname \fR \-\fBo\fR :\fI Override-sort-field\fR as:\fB\ \ \-o fieldname \fR
Specifies the name of the field on which tasks will be sorted, independent Specifies the name of the field on which tasks will be sorted, independent
of what is reflected in the configuration file. of what is reflected in the configuration file.
You can prepend a '+' or '\-' to the field name to also override the sort direction.
A leading '+' will force sorting high to low, whereas a '\-' will ensure a low to high
ordering.
This option exists primarily to support automated/scripted batch mode This option exists primarily to support automated/scripted batch mode
operation. operation.

View File

@ -3291,6 +3291,8 @@ static void parse_args (char **args) {
if (cp[1]) cp++; if (cp[1]) cp++;
else if (*args) cp = *args++; else if (*args) cp = *args++;
else error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch)); else error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch));
if (*cp == '+') { SETw(Curwin, Qsrt_NORMAL); ++cp; }
else if (*cp == '-') { OFFw(Curwin, Qsrt_NORMAL); ++cp; }
for (i = 0; i < P_MAXPFLGS; i++) for (i = 0; i < P_MAXPFLGS; i++)
if (!STRCMP(cp, N_col(i))) break; if (!STRCMP(cp, N_col(i))) break;
if (i == P_MAXPFLGS) if (i == P_MAXPFLGS)