From e273f678fffe190ba3b22995ca8d91ab60fcf88d Mon Sep 17 00:00:00 2001 From: Robert Estelle Date: Tue, 22 Jan 2019 09:22:49 -0500 Subject: [PATCH] =?UTF-8?q?Add=20haskell=5Fstack=5Fghc=5Foptions=20like=20?= =?UTF-8?q?=E2=80=A6=5Fcabal=5Fghc=5F=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds new option `g:haskell_stack_ghc_options` which passes options to `stack ghc`. This is implemented similiarly to `g:haskell_cabal_ghc_options`. --- ale_linters/haskell/stack_ghc.vim | 11 ++++++++++- doc/ale-haskell.txt | 11 +++++++++++ doc/ale.txt | 1 + .../test_haskell_stack_ghc_command_callback.vader | 3 +++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/ale_linters/haskell/stack_ghc.vim b/ale_linters/haskell/stack_ghc.vim index 8f42b96c..99aa2540 100644 --- a/ale_linters/haskell/stack_ghc.vim +++ b/ale_linters/haskell/stack_ghc.vim @@ -1,11 +1,20 @@ " Author: w0rp " Description: ghc for Haskell files, using Stack +call ale#Set('haskell_stack_ghc_options', '-fno-code -v0') + +function! ale_linters#haskell#stack_ghc#GetCommand(buffer) abort + return ale#handlers#haskell#GetStackExecutable(a:buffer) + \ . ' ghc -- ' + \ . ale#Var(a:buffer, 'haskell_stack_ghc_options') + \ . ' %t' +endfunction + call ale#linter#Define('haskell', { \ 'name': 'stack_ghc', \ 'aliases': ['stack-ghc'], \ 'output_stream': 'stderr', \ 'executable_callback': 'ale#handlers#haskell#GetStackExecutable', -\ 'command': 'stack ghc -- -fno-code -v0 %t', +\ 'command_callback': 'ale_linters#haskell#stack_ghc#GetCommand', \ 'callback': 'ale#handlers#haskell#HandleGHCFormat', \}) diff --git a/doc/ale-haskell.txt b/doc/ale-haskell.txt index a4db683b..2247eddc 100644 --- a/doc/ale-haskell.txt +++ b/doc/ale-haskell.txt @@ -107,6 +107,17 @@ 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. +=============================================================================== +stack-ghc *ale-haskell-stack-ghc* + +g:ale_haskell_stack_ghc_options *g:ale_haskell_stack_ghc_options* + *b:ale_haskell_stack_ghc_options* + Type: |String| + Default: `'-fno-code -v0'` + + This variable can be changed to modify flags given to ghc through `stack + ghc` + =============================================================================== stylish-haskell *ale-haskell-stylish-haskell* diff --git a/doc/ale.txt b/doc/ale.txt index ac71ab83..54d63741 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -140,6 +140,7 @@ CONTENTS *ale-contents* hfmt................................|ale-haskell-hfmt| hlint...............................|ale-haskell-hlint| stack-build.........................|ale-haskell-stack-build| + stack-ghc...........................|ale-haskell-stack-ghc| stylish-haskell.....................|ale-haskell-stylish-haskell| hie.................................|ale-haskell-hie| hcl...................................|ale-hcl-options| diff --git a/test/command_callback/test_haskell_stack_ghc_command_callback.vader b/test/command_callback/test_haskell_stack_ghc_command_callback.vader index 4adab583..f58f8b5f 100644 --- a/test/command_callback/test_haskell_stack_ghc_command_callback.vader +++ b/test/command_callback/test_haskell_stack_ghc_command_callback.vader @@ -12,3 +12,6 @@ Execute(The linter should be executed when there is a stack.yaml file): AssertLinter 'stack', 'stack ghc -- -fno-code -v0 %t' + let b:ale_haskell_stack_ghc_options = 'foobar' + + AssertLinter 'stack', 'stack ghc -- foobar %t'