summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArie Oldman <arie.oldman@vhs7.tv>2021-11-18 14:54:10 +1100
committerGitHub <noreply@github.com>2021-11-18 12:54:10 +0900
commit3b8ff6536e6eb4b9af946e2028164e8966ec5458 (patch)
tree2a83e0663a948d7e00910afab90433d69e42e157
parent31dc6a61a07839ea906f6f0b80be713fb8cad1c7 (diff)
downloadale-3b8ff6536e6eb4b9af946e2028164e8966ec5458.zip
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
-rw-r--r--ale_linters/php/phpactor.vim23
-rw-r--r--doc/ale-supported-languages-and-tools.txt1
-rw-r--r--supported-tools.md1
-rw-r--r--test/linter/test_phpactor.vader20
4 files changed, 45 insertions, 0 deletions
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 <https://github.com/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')