From 599f7b1eda20d48cf0a68c543b9e8d31266010eb Mon Sep 17 00:00:00 2001 From: Albert Peschar Date: Thu, 2 Feb 2023 07:09:11 +0200 Subject: phpstan: set cwd to configuration file directory (#4422) PHPStan will only detect a configuration file in the current working directory, so set that to the directory in which ALE finds the configuration file. --- ale_linters/php/phpstan.vim | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'ale_linters') diff --git a/ale_linters/php/phpstan.vim b/ale_linters/php/phpstan.vim index 4dce5d5f..b0d2a8d3 100644 --- a/ale_linters/php/phpstan.vim +++ b/ale_linters/php/phpstan.vim @@ -26,10 +26,8 @@ function! ale_linters#php#phpstan#GetCommand(buffer, version) abort \ : '' let l:level = ale#Var(a:buffer, 'php_phpstan_level') - let l:config_file_exists = ale#path#FindNearestFile(a:buffer, 'phpstan.neon') - let l:dist_config_file_exists = ale#path#FindNearestFile(a:buffer, 'phpstan.neon.dist') - if empty(l:level) && empty(l:config_file_exists) && empty(l:dist_config_file_exists) + if empty(l:level) && empty(ale_linters#php#phpstan#FindConfigFile(a:buffer)) " if no configuration file is found, then use 4 as a default level let l:level = '4' endif @@ -70,6 +68,22 @@ function! ale_linters#php#phpstan#Handle(buffer, lines) abort return l:output endfunction +function! ale_linters#php#phpstan#GetCwd(buffer) abort + let l:result = ale#path#Dirname(ale_linters#php#phpstan#FindConfigFile(a:buffer)) + + return empty(l:result) ? v:null : l:result +endfunction + +function! ale_linters#php#phpstan#FindConfigFile(buffer) abort + let l:result = ale#path#FindNearestFile(a:buffer, 'phpstan.neon') + + if empty(l:result) + let l:result = ale#path#FindNearestFile(a:buffer, 'phpstan.neon.dist') + endif + + return l:result +endfunction + call ale#linter#Define('php', { \ 'name': 'phpstan', \ 'executable': {buffer -> ale#path#FindExecutable(buffer, 'php_phpstan', [ @@ -86,4 +100,5 @@ call ale#linter#Define('php', { \ function('ale_linters#php#phpstan#GetCommand'), \ )}, \ 'callback': 'ale_linters#php#phpstan#Handle', +\ 'cwd': function('ale_linters#php#phpstan#GetCwd'), \}) -- cgit v1.2.3