Allow for getting help on key bindings

In addition to getting help on specific topics, users can type things
like ":help s" or ":help ^A" to get help on specific key bindings now.
Note that we do not add help texts for these keys here -- we will alias
key bindings to already existing topics in a follow-up patch.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2013-07-17 01:21:20 +02:00
parent 20709b7a7e
commit 0d053e2b2b
2 changed files with 12 additions and 4 deletions

View File

@ -4,10 +4,10 @@ calcurse Online Help
Welcome to the calcurse online help. The online help system allows for easily Welcome to the calcurse online help. The online help system allows for easily
getting help on specific calcurse features. getting help on specific calcurse features.
On the calcurse main screen, type `:help <feature>` (e.g. `:help add`) to get On the calcurse main screen, type `:help <feature>` (e.g. `:help add`) or
help on a specific feature. Type `:help` without any parameter to display this `:help <key>` (e.g. `:help ^A`) to get help on a specific feature or key
introduction or simply use the corresponding keyboard shortcut (`?` by binding. Type `:help` without any parameter to display this introduction or
default). simply use the corresponding keyboard shortcut (`?` by default).
All help texts are displayed using an external pager. You need to exit the All help texts are displayed using an external pager. You need to exit the
pager in order to get back to calcurse (pressing `q` should almost always pager in order to get back to calcurse (pressing `q` should almost always

View File

@ -506,6 +506,14 @@ static inline void key_generic_cmd(void)
topic = "intro"; topic = "intro";
snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic); snprintf(path, BUFSIZ, DOCDIR "/%s.txt", topic);
if (!io_file_exist(path) && keys_str2int(topic) > 0 &&
keys_get_action(keys_str2int(topic)) > 0) {
enum key action = keys_get_action(keys_str2int(topic));
snprintf(path, BUFSIZ, DOCDIR "/%s.txt",
keys_get_label(action));
}
if (io_file_exist(path)) { if (io_file_exist(path)) {
wins_launch_external(path, conf.pager); wins_launch_external(path, conf.pager);
} else { } else {