Make executable and options configurable for hdevtools
This commit is contained in:
		
							parent
							
								
									a0059cfe03
								
							
						
					
					
						commit
						8ab632e6f2
					
				@ -1,9 +1,22 @@
 | 
			
		||||
" Author: rob-b
 | 
			
		||||
" Author: rob-b, Takano Akio <tak@anoak.io>
 | 
			
		||||
" Description: hdevtools for Haskell files
 | 
			
		||||
 | 
			
		||||
call ale#Set('haskell_hdevtools_executable', 'hdevtools')
 | 
			
		||||
call ale#Set('haskell_hdevtools_options', '-g -Wall')
 | 
			
		||||
 | 
			
		||||
function! ale_linters#haskell#hdevtools#GetExecutable(buffer) abort
 | 
			
		||||
    return ale#Var(a:buffer, 'haskell_hdevtools_executable')
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
function! ale_linters#haskell#hdevtools#GetCommand(buffer) abort
 | 
			
		||||
    return ale#Escape(ale_linters#haskell#hdevtools#GetExecutable(a:buffer))
 | 
			
		||||
        \ . ' check ' . ale#Var(a:buffer, 'haskell_hdevtools_options')
 | 
			
		||||
        \ . ' -p %s %t'
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
call ale#linter#Define('haskell', {
 | 
			
		||||
\   'name': 'hdevtools',
 | 
			
		||||
\   'executable': 'hdevtools',
 | 
			
		||||
\   'command': 'hdevtools check -g -Wall -p %s %t',
 | 
			
		||||
\   'executable_callback': 'ale_linters#haskell#hdevtools#GetExecutable',
 | 
			
		||||
\   'command_callback': 'ale_linters#haskell#hdevtools#GetCommand',
 | 
			
		||||
\   'callback': 'ale#handlers#haskell#HandleGHCFormat',
 | 
			
		||||
\})
 | 
			
		||||
 | 
			
		||||
@ -12,5 +12,23 @@ g:ale_haskell_stack_build_options           *g:ale_haskell_stack_build_options*
 | 
			
		||||
  We default to using `'--fast'`. Since Stack generates binaries, your
 | 
			
		||||
  programs will be slower unless you separately rebuild them outside of ALE.
 | 
			
		||||
 | 
			
		||||
===============================================================================
 | 
			
		||||
hdevtools                                               *ale-haskell-hdevtools*
 | 
			
		||||
 | 
			
		||||
g:ale_haskell_hdevtools_executable         *g:ale_haskell_hdevtools_executable*
 | 
			
		||||
                                           *b:ale_haskell_hdevtools_executable*
 | 
			
		||||
  Type: |String|
 | 
			
		||||
  Default: `'hdevtools'`
 | 
			
		||||
 | 
			
		||||
  This variable can be changed to use a different executable for hdevtools.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
g:ale_haskell_hdevtools_options               *g:ale_haskell_hdevtools_options*
 | 
			
		||||
                                              *b:ale_haskell_hdevtools_options*
 | 
			
		||||
  Type: |String|
 | 
			
		||||
  Default: `'-g -Wall'`
 | 
			
		||||
 | 
			
		||||
  This variable can be changed to modify flags given to hdevtools.
 | 
			
		||||
 | 
			
		||||
===============================================================================
 | 
			
		||||
  vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,37 @@
 | 
			
		||||
Before:
 | 
			
		||||
  Save g:ale_haskell_hdevtools_executable
 | 
			
		||||
  Save g:ale_haskell_hdevtools_options
 | 
			
		||||
 | 
			
		||||
  unlet! g:ale_haskell_hdevtools_executable
 | 
			
		||||
  unlet! b:ale_haskell_hdevtools_executable
 | 
			
		||||
  unlet! g:ale_haskell_hdevtools_options
 | 
			
		||||
  unlet! b:ale_haskell_hdevtools_options
 | 
			
		||||
 | 
			
		||||
  runtime ale_linters/haskell/hdevtools.vim
 | 
			
		||||
 | 
			
		||||
  let b:command_tail = ' check -g -Wall -p %s %t'
 | 
			
		||||
 | 
			
		||||
After:
 | 
			
		||||
  Restore
 | 
			
		||||
  unlet! b:command_tail
 | 
			
		||||
  unlet! b:ale_haskell_hdevtools_executable
 | 
			
		||||
  unlet! b:ale_haskell_hdevtools_options
 | 
			
		||||
  call ale#linter#Reset()
 | 
			
		||||
 | 
			
		||||
Execute(The executable should be configurable):
 | 
			
		||||
  AssertEqual 'hdevtools', ale_linters#haskell#hdevtools#GetExecutable(bufnr(''))
 | 
			
		||||
 | 
			
		||||
  let b:ale_haskell_hdevtools_executable = 'foobar'
 | 
			
		||||
 | 
			
		||||
  AssertEqual 'foobar', ale_linters#haskell#hdevtools#GetExecutable(bufnr(''))
 | 
			
		||||
 | 
			
		||||
Execute(The executable should be used in the command):
 | 
			
		||||
  AssertEqual
 | 
			
		||||
  \ ale#Escape('hdevtools') . b:command_tail,
 | 
			
		||||
  \ ale_linters#haskell#hdevtools#GetCommand(bufnr(''))
 | 
			
		||||
 | 
			
		||||
  let b:ale_haskell_hdevtools_executable = 'foobar'
 | 
			
		||||
 | 
			
		||||
  AssertEqual
 | 
			
		||||
  \ ale#Escape('foobar') . b:command_tail,
 | 
			
		||||
  \ ale_linters#haskell#hdevtools#GetCommand(bufnr(''))
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user