summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/fix/registry.vim5
-rw-r--r--autoload/ale/fixers/tslint.vim22
-rw-r--r--test/fixers/test_tslint_fixer_callback.vader41
3 files changed, 68 insertions, 0 deletions
diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim
index 93c0860d..93ddf0f5 100644
--- a/autoload/ale/fix/registry.vim
+++ b/autoload/ale/fix/registry.vim
@@ -102,6 +102,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['go'],
\ 'description': 'Fix Go files with go fmt.',
\ },
+\ 'tslint': {
+\ 'function': 'ale#fixers#tslint#Fix',
+\ 'suggested_filetypes': ['typescript'],
+\ 'description': 'Fix typescript files with tslint --fix.',
+\ },
\}
" Reset the function registry to the default entries.
diff --git a/autoload/ale/fixers/tslint.vim b/autoload/ale/fixers/tslint.vim
new file mode 100644
index 00000000..4d905a08
--- /dev/null
+++ b/autoload/ale/fixers/tslint.vim
@@ -0,0 +1,22 @@
+" Author: carakan <carakan@gmail.com>
+" Description: Fixing files with tslint.
+
+function! ale#fixers#tslint#Fix(buffer) abort
+ let l:executable = ale_linters#typescript#tslint#GetExecutable(a:buffer)
+
+ let l:tslint_config_path = ale#path#ResolveLocalPath(
+ \ a:buffer,
+ \ 'tslint.json',
+ \ ale#Var(a:buffer, 'typescript_tslint_config_path')
+ \)
+ let l:tslint_config_option = !empty(l:tslint_config_path)
+ \ ? ' -c ' . ale#Escape(l:tslint_config_path)
+ \ : ''
+
+ return {
+ \ 'command': ale#node#Executable(a:buffer, l:executable)
+ \ . l:tslint_config_option
+ \ . ' --fix %t',
+ \ 'read_temporary_file': 1,
+ \}
+endfunction
diff --git a/test/fixers/test_tslint_fixer_callback.vader b/test/fixers/test_tslint_fixer_callback.vader
new file mode 100644
index 00000000..5bfafe24
--- /dev/null
+++ b/test/fixers/test_tslint_fixer_callback.vader
@@ -0,0 +1,41 @@
+Before:
+ Save g:ale_typescript_tslint_executable
+ Save g:ale_typescript_tslint_config_path
+
+ let g:ale_typescript_tslint_executable = 'xxxinvalid'
+ let g:ale_typescript_tslint_config_path = 'tslint.json'
+
+ call ale#test#SetDirectory('/testplugin/test/fixers')
+ silent cd ..
+ silent cd command_callback
+ let g:dir = getcwd()
+
+After:
+ Restore
+
+ call ale#test#RestoreDirectory()
+
+Execute(The tslint callback should return the correct default values):
+ call ale#test#SetFilename('../prettier-test-files/testfile.ts')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape(g:ale_typescript_tslint_executable)
+ \ . ' -c ' . ale#Escape('tslint.json')
+ \ . ' --fix %t',
+ \ },
+ \ ale#fixers#tslint#Fix(bufnr(''))
+
+Execute(The tslint callback should include custom tslint config option):
+ let g:ale_typescript_tslint_config_path = '.tslintrc'
+ call ale#test#SetFilename('../prettier-test-files/testfile.ts')
+
+ AssertEqual
+ \ {
+ \ 'read_temporary_file': 1,
+ \ 'command': ale#Escape(g:ale_typescript_tslint_executable)
+ \ . ' -c ' . ale#Escape(g:ale_typescript_tslint_config_path)
+ \ . ' --fix %t',
+ \ },
+ \ ale#fixers#tslint#Fix(bufnr(''))