PHPStorm Classic Mode

So, one of the most annoying things IN MY LIFE has been when JetBrains started adding all of this random AI Assistant autocompletes to their IDE’s. I know I’m not alone, because there are even tickets like this one, How to Shut Off All this AI Crap?.

It’s not that I’m anti-AI – I’m anti-Intrusion. When I’m driving the car, I get to drive the car, not the AI Assistant. Unfortunately, the way JetBrains is adding AI into it’s editor feels very intrusive. And, also unfortunately, it’s a slog to go through all of the IDE settings to try and find every single little thing that needs to be turned off.

Luckily, you don’t need to! JetBrains has added some files that will allow you to selectively use AI tools. My favorite is dropping a .noai file in your project root. It’s easy to do, navigate to your project root in Powershell and run touch .noai. That’s it, all you need is an empty file to disable all the AI stuff in PHPStorm.

Now you can get back to PHPStorm Classic mode. LFG? Molten Core? … oops wrong classic mode.

But what about Junie?

That’s a valid question. Like I said, I’m not anti-AI. I actually like the coding agents, I’ve found them extremely helpful in certain circumstances. So, I wondered, will .noai disable all coding agents? Nope! It won’t. As of this writing .noai will disable the AI Assistant features in the IDE – but you can still use the Junie agent window. I don’t know if that’s an oversight or not, I actually recently heard that the Junie agent window is going away as they consolidate underneath the AI Assistant chat window.

The Better Junie Option (imo)

The better option, in my opinion, is to just use the Junie CLI. It’s currently in beta, and appears very usable from my testing. It’s integrated with your current JetBrains AI pricing model, so if you pay to use Junie within your IDE, then you are paying to use the CLI tool as well. I’ve found that I can open my own custom terminal, or use the built in IDE terminal, and open Junie via CLI. This gives me the best of both worlds, a powerful IDE and a powerful coding agent. I can use both when I want.

Not Quite .noai

Despite .noai working in most circumstances, I’m noticing little bits of AI crop back up. For example, inline Code Completion. I’m wanting classic intellisense, but JetBrains is giving me inline completion using cloud and local models. I had expected this to not happen, and indeed thought it wasn’t happening. But today, as I’m coding, I noticed phpstorm giving me ghosted AI completion hints. So, I navigated to phpstorm settings Editor > General > Code Completion > Inline and unchecked the Enable inline completion using language models: option.

.noai seems to have no effect on this setting

Change the Display of the Tab Character in PHPStorm

Update 2022-02-18

You can now change the display of the Tab Character directly in the PHPStorm advanced settings. (Thanks to a comment by destinydriven!)

The Tab Character Rendering can be changed in Advanced Settings

Original Article

Recently the way the Tab Character is rendered in PHPStorm was changed. The character used to be rendered in a way that allowed you to see the entire tab character. However, after a recent change the tab character now displays as a single >.

The new tab character is likely a welcome change for some. But there are others of us who really appreciated the old rendering. The new rendering does not indicate how much whitespace is taken by the tab character. For this reason I don’t find it helpful and wanted a way to change it back.

Luckily, recently, the JetBrains team threw in a small registry setting to re-enable to old rendering of tab characters. This setting is available in version 2019.3.2. Access this setting by pressing “Shift” + “Shift” while in PHPStorm. Afterwards search for and select the “Registry…” option.

A Comparison of default tab rendering in PHPStorm
A Comparison of styles – it’s nice to have options.

You’ll find the editor.old.tab.painting option about a quarter of the way down the list. Check it to re-enable the old PHPStorm tab rendering. You can breathe freely now.

The location of the editor.old.tab.painting within the registry.
The editor.old.tab.painting option is about a quarter of the way down the list