summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-08-04 18:41:56 +0100
committerMaxime Coste <frrrwww@gmail.com>2015-08-04 18:41:56 +0100
commitf9fae1a34fb7bc691997f9062e030bfc6d244f54 (patch)
treef4595cd85cf4f0b429d1a3b883739cc7bf37ba57
parent548436eaf0eec80ae26757ad7dd6d13328abe79a (diff)
clang.kak: handle fatal errors in diagnostics
-rw-r--r--rc/clang.kak10
1 files changed, 6 insertions, 4 deletions
diff --git a/rc/clang.kak b/rc/clang.kak
index bbb7c840..60d8e919 100644
--- a/rc/clang.kak
+++ b/rc/clang.kak
@@ -69,12 +69,12 @@ def -shell-params clang-parse %{
fi
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 }
" | paste -s -d ':')
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)
sed -e "s|<stdin>|${kak_bufname}|g" < ${dir}/stderr > ${dir}/fifo
@@ -127,8 +127,10 @@ def clang-diagnostics-next %{ %sh{
first_line=-1
while read line_content; do
candidate=${line_content%%,*}
- first_line=$(( first_line == -1 ? candidate : first_line ))
- line=$((candidate > kak_cursor_line && (candidate < line || line == -1) ? candidate : line ))
+ if [ -n "$candidate" ]; then
+ first_line=$(( first_line == -1 ? candidate : first_line ))
+ line=$((candidate > kak_cursor_line && (candidate < line || line == -1) ? candidate : line ))
+ fi
done
line=$((line == -1 ? first_line : line))
if [ ${line} -ne -1 ]; then