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

Compare commits

...

8 Commits

Author SHA1 Message Date
Bob
05b941f0f0
Merge 6cdd1c083f into 80fcfebca8 2024-06-27 17:12:41 +10: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
Bob
6cdd1c083f
Merge branch 'master' into make-error 2024-06-24 08:46:43 +08:00
Bob Qi
e54932cb39 use register to pass error_pattern to make buffer 2024-06-19 16:30:30 +08:00
Bob
e5e7930397
Merge branch 'master' into make-error 2024-06-19 16:13:17 +08:00
Bob Qi
94261eb4cf add highlighter for make_error_patterns when open 2024-05-14 13:20:47 +08:00
Bob Qi
dc9cc5be0c support different make_error_patterns for different file types 2024-05-14 13:11:42 +08:00
3 changed files with 10 additions and 5 deletions

View File

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

View File

@ -12,22 +12,24 @@ define-command -params .. -docstring %{
make [<arguments>]: make utility wrapper
All the optional arguments are forwarded to the make utility
} make %{
evaluate-commands -try-client %opt{toolsclient} %{
evaluate-commands -try-client %opt{toolsclient} -save-regs a %{
set-register a %opt{make_error_pattern} # save current error_pattern
fifo -scroll -name *make* -script %{
trap - INT QUIT
$kak_opt_makecmd "$@"
} %arg{@} # pass arguments for "$@" above, exit to avoid evaluating them
} -- %arg{@}
set-option buffer filetype make
set-option buffer jump_current_line 0
set-option buffer make_error_pattern %reg{a} # set the pattern to the value while firing the make command
}
}
add-highlighter shared/make group
add-highlighter shared/make/ regex "^([^:\n]+):(\d+):(?:(\d+):)?\h+(?:((?:fatal )?error)|(warning)|(note)|(required from(?: here)?))?.*?$" 1:cyan 2:green 3:green 4:red 5:yellow 6:blue 7:yellow
add-highlighter shared/make/ regex "^\h*(~*(?:(\^)~*)?)$" 1:green 2:cyan+b
add-highlighter shared/make/ line '%opt{jump_current_line}' default+b
hook -group make-highlight global WinSetOption filetype=make %{
add-highlighter -override shared/make/ regex %opt{make_error_pattern} 1:cyan 2:green 3:green 4:red 5:yellow 6:blue 7:yellow
add-highlighter window/make ref make
hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/make }
}

View File

@ -753,7 +753,10 @@ private:
{
auto node = compile_node<direction>(child);
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)
{
auto jump = push_inst(CompiledRegex::Jump);