Phpactor 2023.08.06

Last modified 2023/08/06 11:36

I have tagged Phpactor 2023.08.06.

There has not been much activity in the past months, I have been spending most of my spare programming time learning Rust while working on a Strava TUI, but this release does include some signficiant improvements and bug fixes.


Firstly this is a sad time for a project that owes its existence to the VIM editor.

My history with VIM started about 15 years ago when I was a year or so into my first job as a PHP developer. Our resident company mastermind wrote most of our infrastrcuture in Perl and PHP - often on production servers - it was not uncommon to debug issues by adding a var_dump here and there. An editor that could work over an SSH connection was a real benefit.

His chosen weapon of choice was VIM and I, having struggled to find a good editor (I had tried Netbeans, KDevelop, Eclipse, etc), decided to follow in my master’s footsteps - I asked for a copy of his .vimrc file.

8 years later IDEs had raced ahead while the PHP integrations for VIM were falling far behind and I decided to find out how hard it would be to implement auto-complete in VIM, and so Phpactor was born.

RIP Bram Moolenaar.

Parallel Diagnostics

This was a bit of a composer garbage collector moment. For a long time I had been puzzled by the conspicuous absence of diagnostic reports from the PHP linter, I finally decided to investigate and discovered that the linter output was only shown when all the linters had finished.

Somehow the decision to only publish once all the linters/diagnostic providers had finished made sense when I wrote the code, but with the addition of more providers that decision made less sense and, like the frog in the pot, the situation slowly got worse while not ever seeming to be critical.

The linters now run in parallel and diagnostics are published when any one of them finishes. This results in far more responsive and accurate diagnostics.

Index Documents on Save

This also fits in to the category of “what?”.

In theory the file watcher should report that the file has been updated - but this only works when that mechansim is enabled.

Phpactor can either watch files for changes itself, or, if the client supports it, use notifications sent from the client.

Neovim claims to support these notifications, but Phpactor doesn’t receive them.

Anyway, text documents are now indexed on save in anycase, which partially solves the issue which some people may experience.