1
1
mirror of https://github.com/mawww/kakoune.git synced 2024-08-16 16:20:38 +03:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Willow
887fa13797
Merge 7a8fe7e6ff into 80fcfebca8 2024-07-01 10:19:52 +02:00
Maxime Coste
80fcfebca8 Fix order of evaluation issue when compiling regex alternations
The previous implementation was relying on the left hand side of the
assignement's side effects to be sequenced before the right hand side
evaluation (so --split_pos was expected to have taken place)

This is actually counter to C++17 which guarantees evaluation of the
right hand side of the assignement first. For some reason this is
not the case with GCC on linux.
2024-06-26 22:38:01 +10:00
Maxime Coste
cbdd200e73 Fix corner case in passin arguments to grep and make 2024-06-26 20:35:34 +10:00
Willow Barraco
7a8fe7e6ff
editorconfig: allow to disable automatic edition 2024-06-17 12:21:31 +02:00
4 changed files with 14 additions and 6 deletions

View File

@ -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"
}
} }
} }
' ;; ' ;;

View File

@ -28,7 +28,7 @@ define-command -params .. -docstring %{
esac esac
fi fi
$kak_opt_grepcmd "$@" 2>&1 | tr -d '\r' $kak_opt_grepcmd "$@" 2>&1 | tr -d '\r'
} %arg{@} } -- %arg{@}
set-option buffer filetype grep set-option buffer filetype grep
set-option buffer jump_current_line 0 set-option buffer jump_current_line 0
} }

View File

@ -16,7 +16,7 @@ define-command -params .. -docstring %{
fifo -scroll -name *make* -script %{ fifo -scroll -name *make* -script %{
trap - INT QUIT trap - INT QUIT
$kak_opt_makecmd "$@" $kak_opt_makecmd "$@"
} %arg{@} # pass arguments for "$@" above, exit to avoid evaluating them } -- %arg{@}
set-option buffer filetype make set-option buffer filetype make
set-option buffer jump_current_line 0 set-option buffer jump_current_line 0
} }

View File

@ -753,7 +753,10 @@ private:
{ {
auto node = compile_node<direction>(child); auto node = compile_node<direction>(child);
if (child != index+1) if (child != index+1)
m_program.instructions[--split_pos].param.split = CompiledRegex::Param::Split{.offset = offset(node, split_pos), .prioritize_parent = true}; {
--split_pos;
m_program.instructions[split_pos].param.split = {.offset = offset(node, split_pos), .prioritize_parent = true};
}
if (get_node(child).children_end != end) if (get_node(child).children_end != end)
{ {
auto jump = push_inst(CompiledRegex::Jump); auto jump = push_inst(CompiledRegex::Jump);