Merge remote-tracking branch 'Delapouite/lint-counters'
This commit is contained in:
commit
ffdeab8aba
|
@ -5,6 +5,8 @@ The output returned by this command is expected to comply with the following for
|
||||||
|
|
||||||
declare-option -hidden line-specs lint_flags
|
declare-option -hidden line-specs lint_flags
|
||||||
declare-option -hidden range-specs lint_errors
|
declare-option -hidden range-specs lint_errors
|
||||||
|
declare-option -hidden int lint_error_count
|
||||||
|
declare-option -hidden int lint_warning_count
|
||||||
|
|
||||||
define-command lint -docstring 'Parse the current buffer with a linter' %{
|
define-command lint -docstring 'Parse the current buffer with a linter' %{
|
||||||
%sh{
|
%sh{
|
||||||
|
@ -25,19 +27,24 @@ define-command lint -docstring 'Parse the current buffer with a linter' %{
|
||||||
{ # do the parsing in the background and when ready send to the session
|
{ # do the parsing in the background and when ready send to the session
|
||||||
|
|
||||||
eval "$kak_opt_lintcmd '$dir'/buf" | sort -t: -k2,2 -n > "$dir"/stderr
|
eval "$kak_opt_lintcmd '$dir'/buf" | sort -t: -k2,2 -n > "$dir"/stderr
|
||||||
printf '%s\n' "evaluate-commands -client $kak_client echo 'linting done'" | kak -p "$kak_session"
|
|
||||||
|
|
||||||
# Flags for the gutter:
|
# Flags for the gutter:
|
||||||
# stamp:l3|{red}█:l11|{yellow}█
|
# stamp:l3|{red}█:l11|{yellow}█
|
||||||
# Contextual error messages:
|
# Contextual error messages:
|
||||||
# stamp:l1.c1,l1.c1|kind\:message:l2.c2,l2.c2|kind\:message
|
# stamp:l1.c1,l1.c1|kind\:message:l2.c2,l2.c2|kind\:message
|
||||||
awk -F: -v file="$kak_buffile" -v stamp="$kak_timestamp" '
|
awk -F: -v file="$kak_buffile" -v stamp="$kak_timestamp" -v client="$kak_client" '
|
||||||
|
BEGIN {
|
||||||
|
error_count = 0
|
||||||
|
warning_count = 0
|
||||||
|
}
|
||||||
/:[0-9]+:[0-9]+: ([Ff]atal )?[Ee]rror/ {
|
/:[0-9]+:[0-9]+: ([Ff]atal )?[Ee]rror/ {
|
||||||
flags = flags ":" $2 "|{red}█"
|
flags = flags ":" $2 "|{red}█"
|
||||||
|
error_count++
|
||||||
}
|
}
|
||||||
/:[0-9]+:[0-9]+:/ {
|
/:[0-9]+:[0-9]+:/ {
|
||||||
if ($4 !~ /[Ee]rror/) {
|
if ($4 !~ /[Ee]rror/) {
|
||||||
flags = flags ":" $2 "|{yellow}█"
|
flags = flags ":" $2 "|{yellow}█"
|
||||||
|
warning_count++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/:[0-9]+:[0-9]+:/ {
|
/:[0-9]+:[0-9]+:/ {
|
||||||
|
@ -51,6 +58,9 @@ define-command lint -docstring 'Parse the current buffer with a linter' %{
|
||||||
print "set-option \"buffer=" file "\" lint_flags %{" stamp flags "}"
|
print "set-option \"buffer=" file "\" lint_flags %{" stamp flags "}"
|
||||||
gsub("~", "\\~", errors)
|
gsub("~", "\\~", errors)
|
||||||
print "set-option \"buffer=" file "\" lint_errors %~" stamp errors "~"
|
print "set-option \"buffer=" file "\" lint_errors %~" stamp errors "~"
|
||||||
|
print "set-option \"buffer=" file "\" lint_error_count " error_count
|
||||||
|
print "set-option \"buffer=" file "\" lint_warning_count " warning_count
|
||||||
|
print "evaluate-commands -client " client " lint-show-counters"
|
||||||
}
|
}
|
||||||
' "$dir"/stderr | kak -p "$kak_session"
|
' "$dir"/stderr | kak -p "$kak_session"
|
||||||
|
|
||||||
|
@ -70,6 +80,10 @@ define-command -hidden lint-show %{
|
||||||
fi
|
fi
|
||||||
} }
|
} }
|
||||||
|
|
||||||
|
define-command -hidden lint-show-counters %{
|
||||||
|
echo -markup linting results:{red} %opt{lint_error_count} error(s){yellow} %opt{lint_warning_count} warning(s)
|
||||||
|
}
|
||||||
|
|
||||||
define-command lint-enable -docstring "Activate automatic diagnostics of the code" %{
|
define-command lint-enable -docstring "Activate automatic diagnostics of the code" %{
|
||||||
add-highlighter window flag_lines default lint_flags
|
add-highlighter window flag_lines default lint_flags
|
||||||
hook window -group lint-diagnostics NormalIdle .* %{ lint-show }
|
hook window -group lint-diagnostics NormalIdle .* %{ lint-show }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user