parent
3ab414de1a
commit
e376f0ae44
6 changed files with 74 additions and 0 deletions
|
@ -92,6 +92,11 @@ let s:default_registry = {
|
||||||
\ 'suggested_filetypes': ['c', 'cpp'],
|
\ 'suggested_filetypes': ['c', 'cpp'],
|
||||||
\ 'description': 'Fix C/C++ files with clang-format.',
|
\ 'description': 'Fix C/C++ files with clang-format.',
|
||||||
\ },
|
\ },
|
||||||
|
\ 'gofmt': {
|
||||||
|
\ 'function': 'ale#fixers#gofmt#Fix',
|
||||||
|
\ 'suggested_filetypes': ['go'],
|
||||||
|
\ 'description': 'Fix Go files with go fmt.',
|
||||||
|
\ },
|
||||||
\}
|
\}
|
||||||
|
|
||||||
" Reset the function registry to the default entries.
|
" Reset the function registry to the default entries.
|
||||||
|
|
18
autoload/ale/fixers/gofmt.vim
Normal file
18
autoload/ale/fixers/gofmt.vim
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
" Author: aliou <code@aliou.me>
|
||||||
|
" Description: Integration of gofmt with ALE.
|
||||||
|
|
||||||
|
call ale#Set('go_gofmt_executable', 'gofmt')
|
||||||
|
call ale#Set('go_gofmt_options', '')
|
||||||
|
|
||||||
|
function! ale#fixers#gofmt#Fix(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'go_gofmt_executable')
|
||||||
|
let l:options = ale#Var(a:buffer, 'go_gofmt_options')
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': ale#Escape(l:executable)
|
||||||
|
\ . ' -l -w'
|
||||||
|
\ . (empty(l:options) ? '' : ' ' . l:options)
|
||||||
|
\ . ' %t',
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
|
@ -20,6 +20,16 @@ the benefit of running a number of linters, more than ALE would by default,
|
||||||
while ensuring it doesn't run any linters known to be slow or resource
|
while ensuring it doesn't run any linters known to be slow or resource
|
||||||
intensive.
|
intensive.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
gofmt *ale-go-gofmt*
|
||||||
|
|
||||||
|
g:ale_go_gofmt_options *g:ale_go_gofmt_options*
|
||||||
|
*b:ale_go_gofmt_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to the gofmt fixer.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
gometalinter *ale-go-gometalinter*
|
gometalinter *ale-go-gometalinter*
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@ CONTENTS *ale-contents*
|
||||||
glsl..................................|ale-glsl-options|
|
glsl..................................|ale-glsl-options|
|
||||||
glslang.............................|ale-glsl-glslang|
|
glslang.............................|ale-glsl-glslang|
|
||||||
go....................................|ale-go-options|
|
go....................................|ale-go-options|
|
||||||
|
gofmt...............................|ale-go-gofmt|
|
||||||
gometalinter........................|ale-go-gometalinter|
|
gometalinter........................|ale-go-gometalinter|
|
||||||
graphql...............................|ale-graphql-options|
|
graphql...............................|ale-graphql-options|
|
||||||
gqlint..............................|ale-graphql-gqlint|
|
gqlint..............................|ale-graphql-gqlint|
|
||||||
|
|
40
test/fixers/test_gofmt_fixer_callback.vader
Normal file
40
test/fixers/test_gofmt_fixer_callback.vader
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
Before:
|
||||||
|
Save g:ale_go_gofmt_executable
|
||||||
|
Save g:ale_go_gofmt_options
|
||||||
|
|
||||||
|
" Use an invalid global executable, so we don't match it.
|
||||||
|
let g:ale_go_gofmt_executable = 'xxxinvalid'
|
||||||
|
let g:ale_go_gofmt_options = ''
|
||||||
|
|
||||||
|
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||||
|
|
||||||
|
After:
|
||||||
|
Restore
|
||||||
|
|
||||||
|
call ale#test#RestoreDirectory()
|
||||||
|
|
||||||
|
Execute(The gofmt callback should return the correct default values):
|
||||||
|
call ale#test#SetFilename('../go_files/testfile.go')
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ {
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\ 'command': ale#Escape('xxxinvalid')
|
||||||
|
\ . ' -l -w'
|
||||||
|
\ . ' %t',
|
||||||
|
\ },
|
||||||
|
\ ale#fixers#gofmt#Fix(bufnr(''))
|
||||||
|
|
||||||
|
Execute(The gofmt callback should include custom gofmt options):
|
||||||
|
let g:ale_go_gofmt_options = "-r '(a) -> a'"
|
||||||
|
call ale#test#SetFilename('../go_files/testfile.go')
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ {
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\ 'command': ale#Escape('xxxinvalid')
|
||||||
|
\ . ' -l -w'
|
||||||
|
\ . ' ' . g:ale_go_gofmt_options
|
||||||
|
\ . ' %t',
|
||||||
|
\ },
|
||||||
|
\ ale#fixers#gofmt#Fix(bufnr(''))
|
0
test/go_files/testfile.go
Normal file
0
test/go_files/testfile.go
Normal file
Reference in a new issue