diff options
| author | Maxime Coste <mawww@kakoune.org> | 2024-07-01 21:31:17 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2024-07-01 21:31:17 +1000 |
| commit | e0bbd1e7ca7b96531671682bc63c5ee94d1fbc85 (patch) | |
| tree | b7e8663772465742df982ad4338d043ff3ffc158 /src | |
| parent | 8ca7b5815ae165105aef102427fa33dee6b540f6 (diff) | |
| parent | 0a1061278616bf5f8282af6366228ebf74cb5346 (diff) | |
Merge remote-tracking branch 'PJungkamp/directory-changed'
Diffstat (limited to 'src')
| -rw-r--r-- | src/commands.cc | 6 | ||||
| -rw-r--r-- | src/hook_manager.hh | 2 | ||||
| -rw-r--r-- | src/main.cc | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/commands.cc b/src/commands.cc index 0febf160..ef51555e 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -2600,13 +2600,15 @@ const CommandDesc change_directory_cmd = { cursor_pos, FilenameFlags::OnlyDirectories), Completions::Flags::Menu }; }), - [](const ParametersParser& parser, Context&, const ShellContext&) + [](const ParametersParser& parser, Context& ctx, const ShellContext&) { StringView target = parser.positional_count() == 1 ? StringView{parser[0]} : "~"; - if (chdir(parse_filename(target).c_str()) != 0) + auto path = real_path(parse_filename(target)); + if (chdir(path.c_str()) != 0) throw runtime_error(format("unable to change to directory: '{}'", target)); for (auto& buffer : BufferManager::instance()) buffer->update_display_name(); + ctx.hooks().run_hook(Hook::EnterDirectory, path, ctx); } }; diff --git a/src/hook_manager.hh b/src/hook_manager.hh index 228a4f23..bee06064 100644 --- a/src/hook_manager.hh +++ b/src/hook_manager.hh @@ -50,6 +50,7 @@ enum class Hook NextKeyIdle, NormalKey, ModeChange, + EnterDirectory, RawKey, RegisterModified, WinClose, @@ -97,6 +98,7 @@ constexpr auto enum_desc(Meta::Type<Hook>) {Hook::NextKeyIdle, "NextKeyIdle"}, {Hook::NormalKey, "NormalKey"}, {Hook::ModeChange, "ModeChange"}, + {Hook::EnterDirectory, "EnterDirectory"}, {Hook::RawKey, "RawKey"}, {Hook::RegisterModified, "RegisterModified"}, {Hook::WinClose, "WinClose"}, diff --git a/src/main.cc b/src/main.cc index 0c63403b..f2e31cab 100644 --- a/src/main.cc +++ b/src/main.cc @@ -842,6 +842,7 @@ int run_server(StringView session, StringView server_init, { Context empty_context{Context::EmptyContextFlag{}}; + global_scope.hooks().run_hook(Hook::EnterDirectory, real_path("."), empty_context); global_scope.hooks().run_hook(Hook::KakBegin, session, empty_context); } |
