mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 14:43:35 +08:00 
			
		
		
		
	Removed syntastic and replaced it with ale
Read more here: https://github.com/w0rp/ale
This commit is contained in:
		
							
								
								
									
										65
									
								
								sources_non_forked/ale/ale_linters/scala/scalac.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								sources_non_forked/ale/ale_linters/scala/scalac.vim
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| " Author: Zoltan Kalmar - https://github.com/kalmiz, | ||||
| "         w0rp <devw0rp@gmail.com> | ||||
| " Description: Basic scala support using scalac | ||||
|  | ||||
| function! ale_linters#scala#scalac#GetExecutable(buffer) abort | ||||
|     if index(split(getbufvar(a:buffer, '&filetype'), '\.'), 'sbt') >= 0 | ||||
|         " Don't check sbt files with scalac. | ||||
|         return '' | ||||
|     endif | ||||
|  | ||||
|     return 'scalac' | ||||
| endfunction | ||||
|  | ||||
| function! ale_linters#scala#scalac#GetCommand(buffer) abort | ||||
|     let l:executable = ale_linters#scala#scalac#GetExecutable(a:buffer) | ||||
|  | ||||
|     if empty(l:executable) | ||||
|         return '' | ||||
|     endif | ||||
|  | ||||
|     return ale#Escape(l:executable) . ' -Ystop-after:parser %t' | ||||
| endfunction | ||||
|  | ||||
| function! ale_linters#scala#scalac#Handle(buffer, lines) abort | ||||
|     " Matches patterns line the following: | ||||
|     " | ||||
|     " /var/folders/5q/20rgxx3x1s34g3m14n5bq0x80000gn/T/vv6pSsy/0:26: error: expected class or object definition | ||||
|     let l:pattern = '^.\+:\(\d\+\): \(\w\+\): \(.\+\)' | ||||
|     let l:output = [] | ||||
|     let l:ln = 0 | ||||
|  | ||||
|     for l:line in a:lines | ||||
|         let l:ln = l:ln + 1 | ||||
|         let l:match = matchlist(l:line, l:pattern) | ||||
|  | ||||
|         if len(l:match) == 0 | ||||
|             continue | ||||
|         endif | ||||
|  | ||||
|         let l:text = l:match[3] | ||||
|         let l:type = l:match[2] is# 'error' ? 'E' : 'W' | ||||
|         let l:col = 0 | ||||
|  | ||||
|         if l:ln + 1 < len(a:lines) | ||||
|             let l:col = stridx(a:lines[l:ln + 1], '^') | ||||
|         endif | ||||
|  | ||||
|         call add(l:output, { | ||||
|         \   'lnum': l:match[1] + 0, | ||||
|         \   'col': l:col + 1, | ||||
|         \   'text': l:text, | ||||
|         \   'type': l:type, | ||||
|         \}) | ||||
|     endfor | ||||
|  | ||||
|     return l:output | ||||
| endfunction | ||||
|  | ||||
| call ale#linter#Define('scala', { | ||||
| \   'name': 'scalac', | ||||
| \   'executable_callback': 'ale_linters#scala#scalac#GetExecutable', | ||||
| \   'command_callback': 'ale_linters#scala#scalac#GetCommand', | ||||
| \   'callback': 'ale_linters#scala#scalac#Handle', | ||||
| \   'output_stream': 'stderr', | ||||
| \}) | ||||
							
								
								
									
										94
									
								
								sources_non_forked/ale/ale_linters/scala/scalastyle.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								sources_non_forked/ale/ale_linters/scala/scalastyle.vim
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | ||||
| " Author: Kevin Kays - https://github.com/okkays | ||||
| " Description: Support for the scalastyle checker. | ||||
|  | ||||
| let g:ale_scala_scalastyle_options = | ||||
| \   get(g:, 'ale_scala_scalastyle_options', '') | ||||
|  | ||||
| let g:ale_scalastyle_config_loc = | ||||
| \   get(g:, 'ale_scalastyle_config_loc', '') | ||||
|  | ||||
| function! ale_linters#scala#scalastyle#Handle(buffer, lines) abort | ||||
|     " Look for help output from scalastyle first, which indicates that no | ||||
|     " configuration file was found. | ||||
|     for l:line in a:lines[:10] | ||||
|         if l:line =~# '-c, --config' | ||||
|             return [{ | ||||
|             \   'lnum': 1, | ||||
|             \   'text': '(See :help ale-scala-scalastyle)' | ||||
|             \       . ' No scalastyle configuration file was found.', | ||||
|             \}] | ||||
|         endif | ||||
|     endfor | ||||
|  | ||||
|     " Matches patterns like the following: | ||||
|     " | ||||
|     " warning file=/home/blurble/Doop.scala message=Missing or badly formed ScalaDoc: Extra @param foobles line=190 | ||||
|     let l:patterns = [ | ||||
|     \   '^\(.\+\) .\+ message=\(.\+\) line=\(\d\+\)$', | ||||
|     \   '^\(.\+\) .\+ message=\(.\+\) line=\(\d\+\) column=\(\d\+\)$', | ||||
|     \] | ||||
|     let l:output = [] | ||||
|  | ||||
|     for l:match in ale#util#GetMatches(a:lines, l:patterns) | ||||
|         let l:args = { | ||||
|         \   'lnum': l:match[3] + 0, | ||||
|         \   'type': l:match[1] =~? 'error' ? 'E' : 'W', | ||||
|         \   'text': l:match[2] | ||||
|         \} | ||||
|  | ||||
|         if !empty(l:match[4]) | ||||
|             let l:args['col'] = l:match[4] + 1 | ||||
|         endif | ||||
|  | ||||
|         call add(l:output, l:args) | ||||
|     endfor | ||||
|  | ||||
|     return l:output | ||||
| endfunction | ||||
|  | ||||
| function! ale_linters#scala#scalastyle#GetCommand(buffer) abort | ||||
|     " Search for scalastyle config in parent directories. | ||||
|     let l:scalastyle_config = '' | ||||
|     let l:potential_configs = [ | ||||
|     \   'scalastyle_config.xml', | ||||
|     \   'scalastyle-config.xml' | ||||
|     \] | ||||
|     for l:config in l:potential_configs | ||||
|         let l:scalastyle_config = ale#path#ResolveLocalPath( | ||||
|         \   a:buffer, | ||||
|         \   l:config, | ||||
|         \   '' | ||||
|         \) | ||||
|         if !empty(l:scalastyle_config) | ||||
|             break | ||||
|         endif | ||||
|     endfor | ||||
|  | ||||
|     " If all else fails, try the global config. | ||||
|     if empty(l:scalastyle_config) | ||||
|         let l:scalastyle_config = get(g:, 'ale_scalastyle_config_loc', '') | ||||
|     endif | ||||
|  | ||||
|     " Build the command using the config file and additional options. | ||||
|     let l:command = 'scalastyle' | ||||
|  | ||||
|     if !empty(l:scalastyle_config) | ||||
|         let l:command .= ' --config ' . ale#Escape(l:scalastyle_config) | ||||
|     endif | ||||
|  | ||||
|     if !empty(g:ale_scala_scalastyle_options) | ||||
|         let l:command .= ' ' . g:ale_scala_scalastyle_options | ||||
|     endif | ||||
|  | ||||
|     let l:command .= ' %t' | ||||
|  | ||||
|     return l:command | ||||
| endfunction | ||||
|  | ||||
| call ale#linter#Define('scala', { | ||||
| \   'name': 'scalastyle', | ||||
| \   'executable': 'scalastyle', | ||||
| \   'output_stream': 'stdout', | ||||
| \   'command_callback': 'ale_linters#scala#scalastyle#GetCommand', | ||||
| \   'callback': 'ale_linters#scala#scalastyle#Handle', | ||||
| \}) | ||||
		Reference in New Issue
	
	Block a user
	 Amir Salihefendic
					Amir Salihefendic