37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| 
								 | 
							
								" Author: Niraj Thapaliya - https://github.com/nthapaliya
							 | 
						||
| 
								 | 
							
								" Description: Lints fish files using fish -n
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function! ale_linters#fish#fish#Handle(buffer, lines) abort
							 | 
						||
| 
								 | 
							
								    " Matches patterns such as:
							 | 
						||
| 
								 | 
							
								    "
							 | 
						||
| 
								 | 
							
								    " home/.config/fish/functions/foo.fish (line 1): Missing end to balance this function definition
							 | 
						||
| 
								 | 
							
								    " function foo
							 | 
						||
| 
								 | 
							
								    " ^
							 | 
						||
| 
								 | 
							
								    " <W> fish: Error while reading file .config/fish/functions/foo.fish
							 | 
						||
| 
								 | 
							
								    let l:pattern = '^.* (line \(\d\+\)): \(.*\)$'
							 | 
						||
| 
								 | 
							
								    let l:output = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    let l:i = 0
							 | 
						||
| 
								 | 
							
								    while l:i < len(a:lines)
							 | 
						||
| 
								 | 
							
								      let l:match = matchlist(a:lines[l:i], l:pattern)
							 | 
						||
| 
								 | 
							
								      if len(l:match) && len(l:match[2])
							 | 
						||
| 
								 | 
							
								        call add(l:output, {
							 | 
						||
| 
								 | 
							
								              \  'col': len(a:lines[l:i + 2]),
							 | 
						||
| 
								 | 
							
								              \  'lnum': str2nr(l:match[1]),
							 | 
						||
| 
								 | 
							
								              \  'text': l:match[2],
							 | 
						||
| 
								 | 
							
								              \})
							 | 
						||
| 
								 | 
							
								      endif
							 | 
						||
| 
								 | 
							
								      let l:i += 1
							 | 
						||
| 
								 | 
							
								    endwhile
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return l:output
							 | 
						||
| 
								 | 
							
								endfunction
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								call ale#linter#Define('fish', {
							 | 
						||
| 
								 | 
							
								\   'name': 'fish',
							 | 
						||
| 
								 | 
							
								\   'output_stream': 'stderr',
							 | 
						||
| 
								 | 
							
								\   'executable': 'fish',
							 | 
						||
| 
								 | 
							
								\   'command': 'fish -n %t',
							 | 
						||
| 
								 | 
							
								\   'callback': 'ale_linters#fish#fish#Handle',
							 | 
						||
| 
								 | 
							
								\})
							 |