summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-01-23 19:36:07 +0000
committerMaxime Coste <frrrwww@gmail.com>2014-01-23 19:36:07 +0000
commitcccb07c7cd4faeb391547200bf3143d58f9c15ab (patch)
treefd4caa267a70059c77193f48712f31e18d613821 /src
parentc0bc7b6644076d1cb6c387ef29a9ad3c8d8acd67 (diff)
Catch parameter errors on startup and display option informations
Diffstat (limited to 'src')
-rw-r--r--src/main.cc12
-rw-r--r--src/parameters_parser.hh17
2 files changed, 23 insertions, 6 deletions
diff --git a/src/main.cc b/src/main.cc
index 4a8421dc..721ee933 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -362,6 +362,18 @@ int main(int argc, char* argv[])
kakoune(params);
}
+ catch (Kakoune::parameter_error& error)
+ {
+ printf("Error: %s\n"
+ "Valid options:\n"
+ " -e <commands>: execute commands on initialisation\n"
+ " -c <session>: connect to the given session\n"
+ " -s <session>: set session name\n"
+ " -d: run as a headless session (requires -s)\n"
+ " -n: do not source kakrc files on startup\n",
+ error.what());
+ return -1;
+ }
catch (Kakoune::exception& error)
{
on_assert_failed(("uncaught exception:\n"_str + error.what()).c_str());
diff --git a/src/parameters_parser.hh b/src/parameters_parser.hh
index 2f7e5477..2230e3f2 100644
--- a/src/parameters_parser.hh
+++ b/src/parameters_parser.hh
@@ -12,21 +12,26 @@ namespace Kakoune
using ParameterList = memoryview<String>;
-struct unknown_option : public runtime_error
+struct parameter_error : public runtime_error
+{
+ using runtime_error::runtime_error;
+};
+
+struct unknown_option : public parameter_error
{
unknown_option(const String& name)
- : runtime_error("unknown option '" + name + "'") {}
+ : parameter_error("unknown option '" + name + "'") {}
};
-struct missing_option_value: public runtime_error
+struct missing_option_value: public parameter_error
{
missing_option_value(const String& name)
- : runtime_error("missing value for option '" + name + "'") {}
+ : parameter_error("missing value for option '" + name + "'") {}
};
-struct wrong_argument_count : runtime_error
+struct wrong_argument_count : public parameter_error
{
- wrong_argument_count() : runtime_error("wrong argument count") {}
+ wrong_argument_count() : parameter_error("wrong argument count") {}
};
using OptionMap = std::unordered_map<String, bool>;