diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-08-04 18:41:56 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-08-04 18:41:56 +0100 |
| commit | f9fae1a34fb7bc691997f9062e030bfc6d244f54 (patch) | |
| tree | f4595cd85cf4f0b429d1a3b883739cc7bf37ba57 | |
| parent | 548436eaf0eec80ae26757ad7dd6d13328abe79a (diff) | |
clang.kak: handle fatal errors in diagnostics
| -rw-r--r-- | rc/clang.kak | 10 |
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 |
