I use #intelephense as #lsp plugin in #neovim but I think @phpactor has some features it doesn't.

I tried it once before and can't recall why I went back to just intelephense. Possibly CPU/memory limitations.

Can anyone offer a comparison? Perhaps you use them both at once? How does that work out?

@artfulrobot @phpactor I haven't tried Inteliphense and would be interested to know the struggles people have with @phpactor but I can guess:

Phpactor (still) has performance issues especially on large files and it is somewhat rough around the edges.

saying that, it almost certainly has more features and I prefer it to f.e. the Rust language server - when it works it works well 😃

@dantleech @phpactor from memory, last time I tried it it didn't easily integrate with the LSP architecture. I think there were some extra steps / bridging software that felt too much.

Also I work on v big php projects.

But I'm thinking of trying again. I'm looking for symbol renaming, for example

@artfulrobot @phpactor it should be fairly easy to try it out, you need to install phpactor, and then configure neovim:

https://phpactor.readthedocs.io/en/master/lsp/vim.html

VIM / NeoVim — Phpactor latest documentation

@dantleech @phpactor

I've set up #neovim with #phpactor (p) and another with #intelephense (i) I used Mason to install each.

What I noticed:

- The calculated root_dir fails for (p); it uses PWD

- BOTH give me signature help and completions (p) is slower and seems to crash on providing signatures for completion.

- BOTH let me jump to definition, though (i) is noticeably faster at this.

- Far fewer diagnostics from phpactor (no static analysis? Perhaps I need to add PHPStan as well?)

@dantleech @phpactor

- (p) can rename symbols. e.g. with vim.lsp.buf.rename("newname") (i) does not support this.

- (p) offers a list of code actions :lua vim.lsp.buf.code_action() although this does some strange things (e.g. added `use Array;`). (i) says No code actions available.

@dantleech @phpactor

- (p) uses less RAM. On my 2 identical docker containers, the (p) container is using 216MB, and the (i) container 640MB.

@artfulrobot @phpactor thanks for the feedback:

Phpactor doesn't have _many_ (https://phpactor.readthedocs.io/en/master/reference/diagnostic.html) diagnostics, but it does integrate with an existing PHPStan or Psalm.

i'm not aware of either of the issues you raised, but it's not well tested on older code bases, feel free to raise an issue 🙂

Diagnostics — Phpactor latest documentation