1
1
mirror of https://github.com/mawww/kakoune.git synced 2024-07-14 16:10:24 +03:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Bob
c5fb9b5178
Merge edafb6b968 into e0bbd1e7ca 2024-07-01 19:30:30 +01:00
Maxime Coste
e0bbd1e7ca Merge remote-tracking branch 'PJungkamp/directory-changed' 2024-07-01 21:31:17 +10:00
Daniel Gorin
8ca7b5815a erlang: Fix the comment_line configuration
Erlang comments start with `%`. This is correctly highlighted
but the comment-line/comment-block commands don't work correctly.
2024-06-27 13:10:21 +01:00
Philipp Jungkamp
0a10612786 Add EnterDirectory hook
This hook runs on `change-directory` and is also emitted just before
KakBegin after kakrc has been sourced.
2024-06-24 16:16:33 +02:00
Philipp Jungkamp
07000adb9b Philipp Jungkamp Copyright Waiver
I dedicate any and all copyright interest in this software to the
public domain.  I make this dedication for the benefit of the public at
large and to the detriment of my heirs and successors.  I intend this
dedication to be an overt act of relinquishment in perpetuity of all
present and future rights to this software under copyright law.
2024-06-24 16:16:33 +02:00
Bob Qi
edafb6b968 keep old pattern 2024-06-24 08:38:29 +08:00
Bob Qi
7519871aec introduce jump_pattern 2024-06-21 09:58:54 +08:00
Bob Qi
e1e6a76b84 support three path style in jump 2024-06-19 16:05:30 +08:00
6 changed files with 24 additions and 6 deletions

View File

@ -147,6 +147,11 @@ name. Hooks with no description will always use an empty string.
*SessionRenamed* `<old name>:<new name>`::
executed when a session is renamed using the `rename-session` command
*EnterDirectory* `path`::
executed on startup and when the current working directory is changed
using the `change-directory` command. The hook param is an absolute path
to the new working directory.
*RuntimeError* `error message`::
an error was encountered while executing a user command

View File

@ -75,7 +75,7 @@ hook global BufSetOption filetype=(html|xml) %{
set-option buffer comment_block_end '-->'
}
hook global BufSetOption filetype=(latex|mercury) %{
hook global BufSetOption filetype=(erlang|latex|mercury) %{
set-option buffer comment_line '%'
}

View File

@ -2,6 +2,8 @@ declare-option -docstring "name of the client in which all source code jumps wil
str jumpclient
declare-option -docstring "name of the client in which utilities display information" \
str toolsclient
declare-option -docstring "the pattern for the jump information in the line, such as file:line:col" \
str jump_pattern "^([^:\n]+)(?::(\d+))(?::(\d+))?"
provide-module jump %{
@ -11,7 +13,7 @@ define-command -hidden jump %{
evaluate-commands -save-regs a %{ # use evaluate-commands to ensure jumps are collapsed
try %{
evaluate-commands -draft %{
execute-keys ',xs^([^:\n]+):(\d+):(\d+)?<ret>'
execute-keys ",xs%opt{jump_pattern}<ret>"
set-register a %reg{1} %reg{2} %reg{3}
}
set-option buffer jump_current_line %val{cursor_line}
@ -41,7 +43,10 @@ define-command -hidden jump-select-next %{
# First jump to end of buffer so that if jump_current_line == 0
# 0g<a-l> will be a no-op and we'll jump to the first result.
# Yeah, thats ugly...
execute-keys ge %opt{jump_current_line}g<a-l> /^[^:\n]+:\d+:<ret>
evaluate-commands -save-regs / %{
set-register / %opt{jump_pattern}
execute-keys ge %opt{jump_current_line}g<a-l>/<ret>
}
}
define-command jump-previous -params 1.. -docstring %{
@ -62,7 +67,10 @@ define-command jump-previous -params 1.. -docstring %{
complete-command jump-previous buffer
define-command -hidden jump-select-previous %{
# See comment in jump-select-next
execute-keys ge %opt{jump_current_line}g<a-h> <a-/>^[^:\n]+:\d+:<ret>
evaluate-commands -save-regs / %{
set-register / %opt{jump_pattern}
execute-keys ge %opt{jump_current_line}g<a-h> <a-/><ret>
}
}
}

View File

@ -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);
}
};

View File

@ -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"},

View File

@ -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);
}