clang.kak: handle fatal errors in diagnostics

This commit is contained in:
Maxime Coste 2015-08-04 18:41:56 +01:00
parent 548436eaf0
commit f9fae1a34f

View File

@ -69,12 +69,12 @@ def -shell-params clang-parse %{
fi fi
flags=$(cat ${dir}/stderr | sed -rne " flags=$(cat ${dir}/stderr | sed -rne "
/^<stdin>:[0-9]+:([0-9]+:)? error/ { s/^<stdin>:([0-9]+):.*/\1,red,█/; p } /^<stdin>:[0-9]+:([0-9]+:)? (fatal )?error/ { s/^<stdin>:([0-9]+):.*/\1,red,█/; p }
/^<stdin>:[0-9]+:([0-9]+:)? warning/ { s/^<stdin>:([0-9]+):.*/\1,yellow,█/; p } /^<stdin>:[0-9]+:([0-9]+:)? warning/ { s/^<stdin>:([0-9]+):.*/\1,yellow,█/; p }
" | paste -s -d ':') " | paste -s -d ':')
errors=$(cat ${dir}/stderr | sed -rne " errors=$(cat ${dir}/stderr | sed -rne "
/^<stdin>:[0-9]+:([0-9]+:)? (error|warning)/ { s/^<stdin>:([0-9]+):([0-9]+:)? (.*)/\1,\3/; s/'/\\\\'/g; p } /^<stdin>:[0-9]+:([0-9]+:)? ((fatal )?error|warning)/ { s/^<stdin>:([0-9]+):([0-9]+:)? (.*)/\1,\3/; s/'/\\\\'/g; p }
" | sort -n) " | sort -n)
sed -e "s|<stdin>|${kak_bufname}|g" < ${dir}/stderr > ${dir}/fifo sed -e "s|<stdin>|${kak_bufname}|g" < ${dir}/stderr > ${dir}/fifo
@ -127,8 +127,10 @@ def clang-diagnostics-next %{ %sh{
first_line=-1 first_line=-1
while read line_content; do while read line_content; do
candidate=${line_content%%,*} candidate=${line_content%%,*}
if [ -n "$candidate" ]; then
first_line=$(( first_line == -1 ? candidate : first_line )) first_line=$(( first_line == -1 ? candidate : first_line ))
line=$((candidate > kak_cursor_line && (candidate < line || line == -1) ? candidate : line )) line=$((candidate > kak_cursor_line && (candidate < line || line == -1) ? candidate : line ))
fi
done done
line=$((line == -1 ? first_line : line)) line=$((line == -1 ? first_line : line))
if [ ${line} -ne -1 ]; then if [ ${line} -ne -1 ]; then