mirror of
https://github.com/mawww/kakoune.git
synced 2024-10-26 13:40:10 +03:00
Compare commits
6 Commits
887fa13797
...
1276333c90
Author | SHA1 | Date | |
---|---|---|---|
|
1276333c90 | ||
|
e0bbd1e7ca | ||
|
8ca7b5815a | ||
|
0a10612786 | ||
|
07000adb9b | ||
|
7a8fe7e6ff |
@ -147,6 +147,11 @@ name. Hooks with no description will always use an empty string.
|
|||||||
*SessionRenamed* `<old name>:<new name>`::
|
*SessionRenamed* `<old name>:<new name>`::
|
||||||
executed when a session is renamed using the `rename-session` command
|
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`::
|
*RuntimeError* `error message`::
|
||||||
an error was encountered while executing a user command
|
an error was encountered while executing a user command
|
||||||
|
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
# Detection
|
# Detection
|
||||||
# ‾‾‾‾‾‾‾‾‾
|
# ‾‾‾‾‾‾‾‾‾
|
||||||
|
|
||||||
|
declare-option -docstring "disable automatic edition of the buffer (wrap, trailing whitespaces)" \
|
||||||
|
bool editorconfig_noedit false
|
||||||
|
|
||||||
hook global BufCreate .*[.](editorconfig) %{
|
hook global BufCreate .*[.](editorconfig) %{
|
||||||
set-option buffer filetype ini
|
set-option buffer filetype ini
|
||||||
set-option buffer static_words indent_style indent_size tab_width \
|
set-option buffer static_words indent_style indent_size tab_width \
|
||||||
@ -19,7 +22,7 @@ define-command editorconfig-load -params ..1 -docstring "editorconfig-load [file
|
|||||||
case $file in
|
case $file in
|
||||||
/*) # $kak_buffile is a full path that starts with a '/'
|
/*) # $kak_buffile is a full path that starts with a '/'
|
||||||
printf %s\\n "remove-hooks buffer editorconfig-hooks"
|
printf %s\\n "remove-hooks buffer editorconfig-hooks"
|
||||||
editorconfig "$file" | awk -v file="$file" -F= -- '
|
editorconfig "$file" | awk -v file="$file" -v noedit="$kak_opt_editorconfig_noedit" -F= -- '
|
||||||
$1 == "indent_style" { indent_style = $2 }
|
$1 == "indent_style" { indent_style = $2 }
|
||||||
$1 == "indent_size" { indent_size = $2 == "tab" ? 4 : $2 }
|
$1 == "indent_size" { indent_size = $2 == "tab" ? 4 : $2 }
|
||||||
$1 == "tab_width" { tab_width = $2 }
|
$1 == "tab_width" { tab_width = $2 }
|
||||||
@ -44,13 +47,15 @@ define-command editorconfig-load -params ..1 -docstring "editorconfig-load [file
|
|||||||
if (charset == "utf-8-bom") {
|
if (charset == "utf-8-bom") {
|
||||||
print "set-option buffer BOM utf8"
|
print "set-option buffer BOM utf8"
|
||||||
}
|
}
|
||||||
if (trim_trailing_whitespace == "true") {
|
if (trim_trailing_whitespace == "true" && noedit == "false") {
|
||||||
print "hook buffer BufWritePre \"" file "\" -group editorconfig-hooks %{ try %{ execute-keys -draft %{%s\\h+$|\\n+\\z<ret>d} } }"
|
print "hook buffer BufWritePre \"" file "\" -group editorconfig-hooks %{ try %{ execute-keys -draft %{%s\\h+$|\\n+\\z<ret>d} } }"
|
||||||
}
|
}
|
||||||
if (max_line_length && max_line_length != "off") {
|
if (max_line_length && max_line_length != "off") {
|
||||||
print "set window autowrap_column " max_line_length
|
print "set window autowrap_column " max_line_length
|
||||||
print "autowrap-enable"
|
|
||||||
print "add-highlighter window/ column %sh{ echo $((" max_line_length "+1)) } default,bright-black"
|
print "add-highlighter window/ column %sh{ echo $((" max_line_length "+1)) } default,bright-black"
|
||||||
|
if (noedit == "false") {
|
||||||
|
print "autowrap-enable"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
' ;;
|
' ;;
|
||||||
|
@ -75,7 +75,7 @@ hook global BufSetOption filetype=(html|xml) %{
|
|||||||
set-option buffer comment_block_end '-->'
|
set-option buffer comment_block_end '-->'
|
||||||
}
|
}
|
||||||
|
|
||||||
hook global BufSetOption filetype=(latex|mercury) %{
|
hook global BufSetOption filetype=(erlang|latex|mercury) %{
|
||||||
set-option buffer comment_line '%'
|
set-option buffer comment_line '%'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2600,13 +2600,15 @@ const CommandDesc change_directory_cmd = {
|
|||||||
cursor_pos, FilenameFlags::OnlyDirectories),
|
cursor_pos, FilenameFlags::OnlyDirectories),
|
||||||
Completions::Flags::Menu };
|
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]} : "~";
|
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));
|
throw runtime_error(format("unable to change to directory: '{}'", target));
|
||||||
for (auto& buffer : BufferManager::instance())
|
for (auto& buffer : BufferManager::instance())
|
||||||
buffer->update_display_name();
|
buffer->update_display_name();
|
||||||
|
ctx.hooks().run_hook(Hook::EnterDirectory, path, ctx);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ enum class Hook
|
|||||||
NextKeyIdle,
|
NextKeyIdle,
|
||||||
NormalKey,
|
NormalKey,
|
||||||
ModeChange,
|
ModeChange,
|
||||||
|
EnterDirectory,
|
||||||
RawKey,
|
RawKey,
|
||||||
RegisterModified,
|
RegisterModified,
|
||||||
WinClose,
|
WinClose,
|
||||||
@ -97,6 +98,7 @@ constexpr auto enum_desc(Meta::Type<Hook>)
|
|||||||
{Hook::NextKeyIdle, "NextKeyIdle"},
|
{Hook::NextKeyIdle, "NextKeyIdle"},
|
||||||
{Hook::NormalKey, "NormalKey"},
|
{Hook::NormalKey, "NormalKey"},
|
||||||
{Hook::ModeChange, "ModeChange"},
|
{Hook::ModeChange, "ModeChange"},
|
||||||
|
{Hook::EnterDirectory, "EnterDirectory"},
|
||||||
{Hook::RawKey, "RawKey"},
|
{Hook::RawKey, "RawKey"},
|
||||||
{Hook::RegisterModified, "RegisterModified"},
|
{Hook::RegisterModified, "RegisterModified"},
|
||||||
{Hook::WinClose, "WinClose"},
|
{Hook::WinClose, "WinClose"},
|
||||||
|
@ -842,6 +842,7 @@ int run_server(StringView session, StringView server_init,
|
|||||||
|
|
||||||
{
|
{
|
||||||
Context empty_context{Context::EmptyContextFlag{}};
|
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);
|
global_scope.hooks().run_hook(Hook::KakBegin, session, empty_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user