Show keyboard shortcuts in a consistent order in help

Perl's hash variables are not ordered so each
time we run the CGI script for the help page
we may get a different order.

This caused bindings and names to appear
differently on each reload.

To fix this sort by keys when generating the
shortcut tables.

Fixes #133
This commit is contained in:
David Spickett
2020-07-31 14:33:26 +01:00
parent 09cf3874fc
commit 638f46d091

View File

@@ -72,22 +72,26 @@ local (%funckeydesc, $key, $fname, $desc);
%funcname = (%funcname, %buf_funcname, %lineedit_funcname, %menu_funcname); %funcname = (%funcname, %buf_funcname, %lineedit_funcname, %menu_funcname);
%funcdesc = (%funcdesc, %buf_funcdesc, %lineedit_funcdesc, %menu_funcdesc); %funcdesc = (%funcdesc, %buf_funcdesc, %lineedit_funcdesc, %menu_funcdesc);
while (($fname, $desc) = each %funcdesc) { # sort for consistent order each time this is run
$funckeydesc{$funcname{$fname}} = "$fname\n$desc\n"; foreach my $fname (sort keys %funcdesc) {
$funckeydesc{$funcname{$fname}} = "$fname\n$funcdesc{$fname}\n";
} }
while (($key, $fname) = each %keyfunc) { foreach $key (sort keys %keyfunc) {
$keydata{$key} && next; $keydata{$key} && next;
$funckeydesc{$funcname{$fname}} .= "$key,"; $funckeydesc{$funcname{$keyfunc{$key}}} .= "$key,";
} }
while (($key, $fname) = each %buf_keyfunc) { foreach $key (sort keys %buf_keyfunc) {
$funckeydesc{$funcname{$fname}} .= "$key,"; $keydata{$key} && next;
$funckeydesc{$funcname{$buf_keyfunc{$key}}} .= "$key,";
} }
while (($key, $fname) = each %lineedit_keyfunc) { foreach $key (sort keys %lineedit_keyfunc) {
$funckeydesc{$funcname{$fname}} .= "$key,"; $keydata{$key} && next;
$funckeydesc{$funcname{$lineedit_keyfunc{$key}}} .= "$key,";
} }
while (($key, $fname) = each %menu_keyfunc) { foreach $key (sort keys %menu_keyfunc) {
$funckeydesc{$funcname{$fname}} .= "$key,"; $keydata{$key} && next;
$funckeydesc{$funcname{$menu_keyfunc{$key}}} .= "$key,";
} }
print <<HEADING; print <<HEADING;