Merge pull request #2437 from robertjlooby/add-floskell
Add floskell for Haskell formatting
This commit is contained in:
commit
5d65f93033
@ -190,6 +190,11 @@ let s:default_registry = {
|
||||
\ 'suggested_filetypes': ['hack'],
|
||||
\ 'description': 'Fix Hack files with hackfmt.',
|
||||
\ },
|
||||
\ 'floskell': {
|
||||
\ 'function': 'ale#fixers#floskell#Fix',
|
||||
\ 'suggested_filetypes': ['haskell'],
|
||||
\ 'description': 'Fix Haskell files with floskell.',
|
||||
\ },
|
||||
\ 'hfmt': {
|
||||
\ 'function': 'ale#fixers#hfmt#Fix',
|
||||
\ 'suggested_filetypes': ['haskell'],
|
||||
|
20
autoload/ale/fixers/floskell.vim
Normal file
20
autoload/ale/fixers/floskell.vim
Normal file
@ -0,0 +1,20 @@
|
||||
" Author: robertjlooby <robertjlooby@gmail.com>
|
||||
" Description: Integration of floskell with ALE.
|
||||
|
||||
call ale#Set('haskell_floskell_executable', 'floskell')
|
||||
|
||||
function! ale#fixers#floskell#GetExecutable(buffer) abort
|
||||
let l:executable = ale#Var(a:buffer, 'haskell_floskell_executable')
|
||||
|
||||
return ale#handlers#haskell_stack#EscapeExecutable(l:executable, 'floskell')
|
||||
endfunction
|
||||
|
||||
function! ale#fixers#floskell#Fix(buffer) abort
|
||||
let l:executable = ale#fixers#floskell#GetExecutable(a:buffer)
|
||||
|
||||
return {
|
||||
\ 'command': l:executable
|
||||
\ . ' %t',
|
||||
\ 'read_temporary_file': 1,
|
||||
\}
|
||||
endfunction
|
@ -12,6 +12,16 @@ g:ale_haskell_brittany_executable *g:ale_haskell_brittany_executable*
|
||||
|
||||
This variable can be changed to use a different executable for brittany.
|
||||
|
||||
===============================================================================
|
||||
floskell *ale-haskell-floskell*
|
||||
|
||||
g:ale_haskell_floskell_executable *g:ale_haskell_floskell_executable*
|
||||
*b:ale_haskell_floskell_executable*
|
||||
Type: |String|
|
||||
Default: `'floskell'`
|
||||
|
||||
This variable can be changed to use a different executable for floskell.
|
||||
|
||||
===============================================================================
|
||||
ghc *ale-haskell-ghc*
|
||||
|
||||
|
@ -175,6 +175,7 @@ Notes:
|
||||
* Haskell
|
||||
* `brittany`
|
||||
* `cabal-ghc`
|
||||
* `floskell`
|
||||
* `ghc`
|
||||
* `ghc-mod`
|
||||
* `hdevtools`
|
||||
|
@ -2013,6 +2013,7 @@ documented in additional help files.
|
||||
ember-template-lint...................|ale-handlebars-embertemplatelint|
|
||||
haskell.................................|ale-haskell-options|
|
||||
brittany..............................|ale-haskell-brittany|
|
||||
floskell..............................|ale-haskell-floskell|
|
||||
ghc...................................|ale-haskell-ghc|
|
||||
ghc-mod...............................|ale-haskell-ghc-mod|
|
||||
cabal-ghc.............................|ale-haskell-cabal-ghc|
|
||||
|
@ -184,6 +184,7 @@ formatting.
|
||||
* Haskell
|
||||
* [brittany](https://github.com/lspitzner/brittany)
|
||||
* [cabal-ghc](https://www.haskell.org/cabal/)
|
||||
* [floskell](https://github.com/ennocramer/floskell)
|
||||
* [ghc](https://www.haskell.org/ghc/)
|
||||
* [ghc-mod](https://github.com/DanielG/ghc-mod)
|
||||
* [hdevtools](https://hackage.haskell.org/package/hdevtools)
|
||||
|
23
test/fixers/test_floskell_fixer_callback.vader
Normal file
23
test/fixers/test_floskell_fixer_callback.vader
Normal file
@ -0,0 +1,23 @@
|
||||
Before:
|
||||
Save g:ale_haskell_floskell_executable
|
||||
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_haskell_floskell_executable = 'xxxinvalid'
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
|
||||
Execute(The floskell callback should return the correct default values):
|
||||
call ale#test#SetFilename('../haskell_files/testfile.hs')
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'command': ale#Escape('xxxinvalid')
|
||||
\ . ' %t',
|
||||
\ },
|
||||
\ ale#fixers#floskell#Fix(bufnr(''))
|
Loading…
Reference in New Issue
Block a user