diff --git a/ale_linters/typescript/tslint.vim b/ale_linters/typescript/tslint.vim index 26d26c8c..18f9e08c 100644 --- a/ale_linters/typescript/tslint.vim +++ b/ale_linters/typescript/tslint.vim @@ -1,8 +1,9 @@ -" Author: Prashanth Chandra https://github.com/prashcr +" Author: Prashanth Chandra , Jonathan Clem " Description: tslint for TypeScript files call ale#Set('typescript_tslint_executable', 'tslint') call ale#Set('typescript_tslint_config_path', '') +call ale#Set('typescript_tslint_rules_dir', '') call ale#Set('typescript_tslint_use_global', 0) function! ale_linters#typescript#tslint#GetExecutable(buffer) abort @@ -38,15 +39,20 @@ function! ale_linters#typescript#tslint#GetCommand(buffer) abort \ '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) \ : '' + let l:tslint_rules_dir = ale#Var(a:buffer, 'typescript_tslint_rules_dir') + let l:tslint_rules_option = !empty(l:tslint_rules_dir) + \ ? ' -r ' . ale#Escape(l:tslint_rules_dir) + \ : '' + return ale#path#BufferCdString(a:buffer) \ . ale_linters#typescript#tslint#GetExecutable(a:buffer) \ . ' --format json' \ . l:tslint_config_option + \ . l:tslint_rules_option \ . ' %t' endfunction diff --git a/doc/ale-typescript.txt b/doc/ale-typescript.txt index df479c5a..e20d058e 100644 --- a/doc/ale-typescript.txt +++ b/doc/ale-typescript.txt @@ -30,6 +30,14 @@ g:ale_typescript_tslint_config_path *g:ale_typescript_tslint_config_path* such path exists, this variable will be used instead. +g:ale_typescript_tslint_rules_dir *g:ale_typescript_tslint_rules_dir* + *b:ale_typescript_tslint_rules_dir* + Type: |String| + Default: `''` + + If this variable is set, ALE will use it as the rules directory for tslint. + + g:ale_typescript_tslint_use_global *g:ale_typescript_tslint_use_global* *b:ale_typescript_tslint_use_global* Type: |Number| diff --git a/test/command_callback/test_tslint_command_callback.vader b/test/command_callback/test_tslint_command_callback.vader index 694d36d6..51567951 100644 --- a/test/command_callback/test_tslint_command_callback.vader +++ b/test/command_callback/test_tslint_command_callback.vader @@ -1,11 +1,13 @@ Before: - Save g:typescript_tslint_executable - Save g:typescript_tslint_config_path - Save g:typescript_tslint_use_global + Save g:ale_typescript_tslint_executable + Save g:ale_typescript_tslint_config_path + Save g:ale_typescript_tslint_rules_dir + Save g:ale_typescript_tslint_use_global - unlet! g:typescript_tslint_executable - unlet! g:typescript_tslint_config_path - unlet! g:typescript_tslint_use_global + unlet! g:ale_typescript_tslint_executable + unlet! g:ale_typescript_tslint_config_path + unlet! g:ale_typescript_tslint_rules_dir + unlet! g:ale_typescript_tslint_use_global runtime ale_linters/typescript/tslint.vim @@ -14,6 +16,8 @@ Before: After: Restore + unlet! b:ale_typescript_tslint_rules_dir + call ale#test#RestoreDirectory() call ale#linter#Reset() @@ -22,3 +26,13 @@ Execute(The default tslint command should be correct): \ 'cd ''' . expand('%:p:h') . ''' && ' \ . 'tslint --format json %t', \ ale_linters#typescript#tslint#GetCommand(bufnr('')) + +Execute(The rules directory option should be included if set): + let b:ale_typescript_tslint_rules_dir = '/foo/bar' + + AssertEqual + \ 'cd ''' . expand('%:p:h') . ''' && ' + \ . 'tslint --format json' + \ . ' -r ' . ale#Escape('/foo/bar') + \ . ' %t', + \ ale_linters#typescript#tslint#GetCommand(bufnr(''))