ZED para uso com CodeIgniter4

Recentemente resolvi migrar do VSCode para o ZED editor e aqui vai o setup para uso e formatação com projetos em CodeIgniter4.

Extensões:

  • HTML
  • Dockerfile
  • Docker Compose
  • SQL
  • PHP
  • XML
  • LOG
  • CSV
  • HTML Snippets
  • PHP Snippets
  • Git Firefly
  • Catppuccin
  • Catppuccin Icons

Na raiz do projeto, dentro da pasta .zed, modifico as seguinte diretivas para não conflitar o LSP (Language Server Protocol):

{
  "languages": {
    "CSS": {
      "language_servers": ["!tailwindcss-language-server", "..."],
    },
    "HTML": {
      "language_servers": ["!tailwindcss-language-server", "..."],
    },
    "PHP": {
      "language_servers": [
        "intelephense",
        "custom-code-folding",
        "!phpactor",
        "!phptools",
        "!phpantom",
        "!tailwindcss-language-server",
        "...",
      ],
    },
  },
}

Nas views, anotar as variáveis no topo:

<?php
/**
 * @var string $titulo
 * @var App\Entities\Chamado[] $chamados
 * @var int $totalPendentes
 */
?>
<h1><?= $titulo ?></h1>

Prefiro padronizar o code formatter com o php-cs-fixer. Então vamos declarar o pacote no projeto:

composer require --dev friendsofphp/php-cs-fixer

Instalar o binário do php-cs-fixer globalmente:

curl -L https://cs.symfony.com/download/php-cs-fixer-v3.phar -o php-cs-fixer
chmod +x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

Para o ZED usar o php-cs-fixer, ele tem que usar um wrapper que aplica o fix no arquivo e depois manda o conteúdo já corrigido:

#!/usr/bin/env bash
set -e
FILE="$1"
php-cs-fixer fix --quiet "$FILE" >/dev/null 2>&1
cat "$FILE"

Salve esse script como php-cs-fixer-format, executável (chmod +x), em uma pasta no seu perfil, .zed, por exemplo e chame ele no settings.json do ZED:

"formatter": {
  "external": {
    "command": "/Users/SEU_USUARIO/.zed/php-cs-fixer-format",
    "arguments": ["{buffer_path}"]
  }
}