1
1
mirror of https://github.com/mawww/kakoune.git synced 2024-08-17 00:30:26 +03:00

Compare commits

...

6 Commits

Author SHA1 Message Date
Bob
cbca6f11ae
Merge edafb6b968 into 80fcfebca8 2024-06-26 14:50:34 +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
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
4 changed files with 17 additions and 6 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

@ -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

@ -16,7 +16,7 @@ define-command -params .. -docstring %{
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
}

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