rc/make.kak introduce a new option to be back compatible

This commit is contained in:
Bob Qi 2023-10-27 09:54:41 +08:00
parent 2d849cc147
commit 8e5ca3f214

View File

@ -1,7 +1,9 @@
declare-option -docstring "shell command run to build the project" \ declare-option -docstring "shell command run to build the project" \
str makecmd make str makecmd make
declare-option -docstring "pattern that find lines containing information about errors in the output of the `makecmd` command" \
str make_error_pattern " (?:fatal )?error:"
declare-option -docstring "pattern that describes lines containing information about errors in the output of the `makecmd` command" \ declare-option -docstring "pattern that describes lines containing information about errors in the output of the `makecmd` command" \
str make_error_pattern "^(?:\w:)?[^:\n]+:\d+:(?:\d+:)? (?:fatal )?error:" str make_error_line_pattern ""
declare-option -docstring "name of the client in which utilities display information" \ declare-option -docstring "name of the client in which utilities display information" \
str toolsclient str toolsclient
@ -51,7 +53,8 @@ define-command -hidden make-open-error -params 4 %{
} }
define-command -hidden make-jump %{ define-command -hidden make-jump %{
evaluate-commands %{ evaluate-commands -save-regs / %{
set-register / %sh{ if [ -z "$kak_opt_make_error_line_pattern" ] ; then printf %s "^(?:\w:)?[^:\n]+:\d+:(?:\d+:)?$kak_opt_make_error_pattern" ; else printf %s "$kak_opt_make_error_line_pattern"; fi }
try %{ try %{
execute-keys gl<a-?> "Entering directory" <ret><a-:> execute-keys gl<a-?> "Entering directory" <ret><a-:>
# Try to parse the error into capture groups, failing on absolute paths # Try to parse the error into capture groups, failing on absolute paths
@ -59,7 +62,7 @@ define-command -hidden make-jump %{
set-option buffer make_current_error_line %val{cursor_line} set-option buffer make_current_error_line %val{cursor_line}
make-open-error "%reg{1}/%reg{2}" "%reg{3}" "%reg{4}" "%reg{5}" make-open-error "%reg{1}/%reg{2}" "%reg{3}" "%reg{4}" "%reg{5}"
} catch %{ } catch %{
execute-keys <a-h><a-l> s "((?:\w:)?[^:]+):(\d+):(?:(\d+):)?([^\n]+)\z" <ret>l execute-keys <a-h><a-l> s "%reg{/}([^\n]+)?\z" <ret>l
set-option buffer make_current_error_line %val{cursor_line} set-option buffer make_current_error_line %val{cursor_line}
make-open-error "%reg{1}" "%reg{2}" "%reg{3}" "%reg{4}" make-open-error "%reg{1}" "%reg{2}" "%reg{3}" "%reg{4}"
} }
@ -69,7 +72,7 @@ define-command -hidden make-jump %{
define-command make-next-error -docstring 'Jump to the next make error' %{ define-command make-next-error -docstring 'Jump to the next make error' %{
evaluate-commands -try-client %opt{jumpclient} -save-regs / %{ evaluate-commands -try-client %opt{jumpclient} -save-regs / %{
buffer '*make*' buffer '*make*'
set-register / %opt{make_error_pattern} set-register / %sh{ if [ -z "$kak_opt_make_error_line_pattern" ] ; then printf %s "^(?:\w:)?[^:\n]+:\d+:(?:\d+:)?$kak_opt_make_error_pattern" ; else printf %s "$kak_opt_make_error_line_pattern"; fi }
execute-keys "%opt{make_current_error_line}ggl" "/<ret>" execute-keys "%opt{make_current_error_line}ggl" "/<ret>"
make-jump make-jump
} }
@ -84,7 +87,7 @@ define-command make-next-error -docstring 'Jump to the next make error' %{
define-command make-previous-error -docstring 'Jump to the previous make error' %{ define-command make-previous-error -docstring 'Jump to the previous make error' %{
evaluate-commands -try-client %opt{jumpclient} -save-regs / %{ evaluate-commands -try-client %opt{jumpclient} -save-regs / %{
buffer '*make*' buffer '*make*'
set-register / %opt{make_error_pattern} set-register / %sh{ if [ -z "$kak_opt_make_error_line_pattern" ] ; then printf %s "^(?:\w:)?[^:\n]+:\d+:(?:\d+:)?$kak_opt_make_error_pattern" ; else printf %s "$kak_opt_make_error_line_pattern"; fi }
execute-keys "%opt{make_current_error_line}g" "<a-/><ret>" execute-keys "%opt{make_current_error_line}g" "<a-/><ret>"
make-jump make-jump
} }