summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2013-07-17 01:21:20 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2013-07-17 14:03:53 +0200
commit0d053e2b2b3f1381f5492ff21ee7ed27613eac0b (patch)
treec9467211edd4ed93833c459474ca5943b8866cca
parent20709b7a7e1bdaae59d704596898e727e1155d77 (diff)
downloadcalcurse-0d053e2b2b3f1381f5492ff21ee7ed27613eac0b.zip
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>
-rw-r--r--doc/intro.txt8
-rw-r--r--src/calcurse.c8
2 files changed, 12 insertions, 4 deletions
diff --git a/doc/intro.txt b/doc/intro.txt
index a841739..9b91c86 100644
--- a/doc/intro.txt
+++ b/doc/intro.txt
@@ -4,10 +4,10 @@ calcurse Online Help
Welcome to the calcurse online help. The online help system allows for easily
getting help on specific calcurse features.
-On the calcurse main screen, type `:help <feature>` (e.g. `:help add`) to get
-help on a specific feature. Type `:help` without any parameter to display this
-introduction or simply use the corresponding keyboard shortcut (`?` by
-default).
+On the calcurse main screen, type `:help <feature>` (e.g. `:help add`) or
+`:help <key>` (e.g. `:help ^A`) to get help on a specific feature or key
+binding. Type `:help` without any parameter to display this introduction or
+simply use the corresponding keyboard shortcut (`?` by default).
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
diff --git a/src/calcurse.c b/src/calcurse.c
index c3a7ce8..9127c98 100644
--- a/src/calcurse.c
+++ b/src/calcurse.c
@@ -506,6 +506,14 @@ static inline void key_generic_cmd(void)
topic = "intro";
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)) {
wins_launch_external(path, conf.pager);
} else {