From 3b8ff6536e6eb4b9af946e2028164e8966ec5458 Mon Sep 17 00:00:00 2001 From: Arie Oldman Date: Thu, 18 Nov 2021 14:54:10 +1100 Subject: Adds PHPActor Linter (LSP) (#3975) * Adds phpactor lsp linter * Fixes missing comma * Adds tests for phpactor lsp linter * Adds note that this part is not my own work * Removes unused variable * Adds phpactor to supported tools list * Fixes doc sorting * Wraps phpactor in code tags --- ale_linters/php/phpactor.vim | 23 +++++++++++++++++++++++ doc/ale-supported-languages-and-tools.txt | 1 + supported-tools.md | 1 + test/linter/test_phpactor.vader | 20 ++++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 ale_linters/php/phpactor.vim create mode 100644 test/linter/test_phpactor.vader diff --git a/ale_linters/php/phpactor.vim b/ale_linters/php/phpactor.vim new file mode 100644 index 00000000..b137eaf1 --- /dev/null +++ b/ale_linters/php/phpactor.vim @@ -0,0 +1,23 @@ +" Author: Arizard +" Description: PHPactor integration for ALE + +" Copied from langserver.vim +function! ale_linters#php#phpactor#GetProjectRoot(buffer) abort + let l:composer_path = ale#path#FindNearestFile(a:buffer, 'composer.json') + + if (!empty(l:composer_path)) + return fnamemodify(l:composer_path, ':h') + endif + + let l:git_path = ale#path#FindNearestDirectory(a:buffer, '.git') + + return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : '' +endfunction + +call ale#linter#Define('php', { +\ 'name': 'phpactor', +\ 'lsp': 'stdio', +\ 'executable': 'phpactor', +\ 'command': '%e language-server', +\ 'project_root': function('ale_linters#php#phpactor#GetProjectRoot'), +\}) diff --git a/doc/ale-supported-languages-and-tools.txt b/doc/ale-supported-languages-and-tools.txt index 5a780803..492071a2 100644 --- a/doc/ale-supported-languages-and-tools.txt +++ b/doc/ale-supported-languages-and-tools.txt @@ -382,6 +382,7 @@ Notes: * `phan` * `php -l` * `php-cs-fixer` + * `phpactor` * `phpcbf` * `phpcs` * `phpmd` diff --git a/supported-tools.md b/supported-tools.md index 03d1ebb8..b03c4c66 100644 --- a/supported-tools.md +++ b/supported-tools.md @@ -391,6 +391,7 @@ formatting. * [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions * [php -l](https://secure.php.net/) * [php-cs-fixer](http://cs.sensiolabs.org/) + * [phpactor](https://github.com/phpactor/phpactor) * [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer) * [phpcs](https://github.com/squizlabs/PHP_CodeSniffer) * [phpmd](https://phpmd.org) diff --git a/test/linter/test_phpactor.vader b/test/linter/test_phpactor.vader new file mode 100644 index 00000000..8968bba1 --- /dev/null +++ b/test/linter/test_phpactor.vader @@ -0,0 +1,20 @@ +Before: + call ale#assert#SetUpLinterTest('php', 'phpactor') + +After: + call ale#assert#TearDownLinterTest() + +Execute(The default executable path should be correct): + AssertLinter 'phpactor', + \ ale#Escape('phpactor') . ' language-server' + +Execute(The project path should be correct for .git directories): + call ale#test#SetFilename('../test-files/php/with-git/test.php') + silent! call mkdir('../test-files/php/with-git/.git') + + AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/php/with-git') + +Execute(The project path should be correct for composer.json file): + call ale#test#SetFilename('../test-files/php/with-composer/test.php') + + AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/php/with-composer') -- cgit v1.2.3