From 95b8689835d4d9efca8a513599bcd3d83542c6bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Paris?= Date: Thu, 25 Jul 2019 23:01:53 +0200 Subject: [PATCH] Add the possiblity to add extra psalm options --- ale_linters/php/psalm.vim | 7 ++++++- doc/ale-php.txt | 7 +++++++ test/command_callback/test_psalm_command_callbacks.vader | 8 ++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ale_linters/php/psalm.vim b/ale_linters/php/psalm.vim index 834d0993..ab4dbbc9 100644 --- a/ale_linters/php/psalm.vim +++ b/ale_linters/php/psalm.vim @@ -2,6 +2,7 @@ " Description: plugin for Psalm, static analyzer for PHP call ale#Set('psalm_langserver_executable', 'psalm') +call ale#Set('psalm_langserver_options', '') call ale#Set('psalm_langserver_use_global', get(g:, 'ale_use_global_executables', 0)) function! ale_linters#php#psalm#GetProjectRoot(buffer) abort @@ -10,12 +11,16 @@ function! ale_linters#php#psalm#GetProjectRoot(buffer) abort return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : '' endfunction +function! ale_linters#php#psalm#GetCommand(buffer) abort + return '%e --language-server' . ale#Pad(ale#Var(a:buffer, 'psalm_langserver_options')) +endfunction + call ale#linter#Define('php', { \ 'name': 'psalm', \ 'lsp': 'stdio', \ 'executable': {b -> ale#node#FindExecutable(b, 'psalm_langserver', [ \ 'vendor/bin/psalm', \ ])}, -\ 'command': '%e --language-server', +\ 'command': function('ale_linters#php#psalm#GetCommand'), \ 'project_root': function('ale_linters#php#psalm#GetProjectRoot'), \}) diff --git a/doc/ale-php.txt b/doc/ale-php.txt index d41fb50d..c415c086 100644 --- a/doc/ale-php.txt +++ b/doc/ale-php.txt @@ -189,6 +189,13 @@ g:ale_php_psalm_executable *g:ale_php_psalm_executable* This variable sets the executable used for psalm. +g:ale_psalm_langserver_options *g:ale_psalm_langserver_options* + *b:ale_psalm_langserver_options* + Type: |String| + Default: `''` + + This variable can be set to pass additional options to psalm. + =============================================================================== php-cs-fixer *ale-php-php-cs-fixer* diff --git a/test/command_callback/test_psalm_command_callbacks.vader b/test/command_callback/test_psalm_command_callbacks.vader index 74c68d43..70b5af95 100644 --- a/test/command_callback/test_psalm_command_callbacks.vader +++ b/test/command_callback/test_psalm_command_callbacks.vader @@ -22,6 +22,14 @@ Execute(Vendor executables should be detected): \ . '/psalm-project/vendor/bin/psalm' \ )) . ' --language-server' +Execute(User provided options should be used): + let g:ale_psalm_langserver_options = '--my-user-provided-option my-value' + + AssertLinter 'psalm', + \ ale#Escape('psalm') + \ . ' --language-server --my-user-provided-option my-value' + + Execute(The project path should be correct for .git directories): call ale#test#SetFilename('psalm-project/test.php')