Merge remote-tracking branch 'Delapouite/lint-counters'

This commit is contained in:
Maxime Coste 2018-05-30 23:46:28 +10:00
commit ffdeab8aba

View File

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