|
| 1 | +" Description: named-checkzone for bindzone |
| 2 | + |
| 3 | +call ale#Set('bindzone_checkzone_executable', 'named-checkzone') |
| 4 | +call ale#Set('bindzone_checkzone_options', '-c IN') |
| 5 | + |
| 6 | +function! ale_linters#bindzone#checkzone#GetCommand(buffer) abort |
| 7 | + return '%e' . ale#Pad(ale#Var(a:buffer, 'bindzone_checkzone_options')) |
| 8 | + \ . ' example.com %t' |
| 9 | +endfunction |
| 10 | + |
| 11 | +function! ale_linters#bindzone#checkzone#Handle(buffer, lines) abort |
| 12 | + let l:warning_pattern = '\vzone example.com/IN: (.+)$' |
| 13 | + let l:error_pattern = '\v:(\d+): (.+)$' |
| 14 | + let l:output = [] |
| 15 | + |
| 16 | + for l:match in ale#util#GetMatches(a:lines, l:error_pattern) |
| 17 | + let l:lnum = l:match[1] |
| 18 | + let l:text = l:match[2] |
| 19 | + |
| 20 | + call add(l:output, {'text': l:text, 'lnum': l:lnum + 0, 'type': 'E'}) |
| 21 | + endfor |
| 22 | + |
| 23 | + for l:match in ale#util#GetMatches(a:lines, l:warning_pattern) |
| 24 | + let l:text = l:match[1] |
| 25 | + |
| 26 | + " Ignore information messages |
| 27 | + let l:scrub_match = matchlist(l:text, '\v(loaded serial|not loaded due to) ') |
| 28 | + |
| 29 | + if empty(l:scrub_match) |
| 30 | + call add(l:output, {'text': l:text, 'lnum': 0, 'type': 'W'}) |
| 31 | + endif |
| 32 | + endfor |
| 33 | + |
| 34 | + return l:output |
| 35 | +endfunction |
| 36 | + |
| 37 | +call ale#linter#Define('bindzone', { |
| 38 | +\ 'name': 'checkzone', |
| 39 | +\ 'executable': {b -> ale#Var(b, 'bindzone_checkzone_executable')}, |
| 40 | +\ 'command': function('ale_linters#bindzone#checkzone#GetCommand'), |
| 41 | +\ 'callback': 'ale_linters#bindzone#checkzone#Handle', |
| 42 | +\ 'read_buffer': 0, |
| 43 | +\}) |
0 commit comments