summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-03-25 19:19:44 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-03-25 19:19:44 +0100
commit58caeaa8a8ecdbd4f65d6dfd751c3e226336fe67 (patch)
tree9b67fd671c65efe013a395d42f77dd2443422263 /src
parentce67d298712b957fbea534b0631eaae2e44be5be (diff)
add a cd command
Diffstat (limited to 'src')
-rw-r--r--src/commands.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/commands.cc b/src/commands.cc
index 11f97720..1a95ec15 100644
--- a/src/commands.cc
+++ b/src/commands.cc
@@ -734,6 +734,15 @@ void set_register(const CommandParameters& params, Context& context)
RegisterManager::instance()[params[0][0]] = memoryview<String>(params[1]);
}
+void change_working_directory(const CommandParameters& params, Context&)
+{
+ if (params.size() != 1)
+ throw wrong_argument_count();
+
+ if (chdir(parse_filename(params[0]).c_str()) != 0)
+ throw runtime_error("cannot change to directory " + params[0]);
+}
+
class RegisterRestorer
{
public:
@@ -925,6 +934,8 @@ void register_commands()
cm.register_commands({"name"}, set_client_name);
cm.register_command("reg", set_register);
+
+ cm.register_command("cd", change_working_directory, filename_completer);
}
}