Skip to content

[feat] comando para instalar syntax highlight no IntelliJ e VSCode #9

Description

@eipastel

Syntax highlight de .psjava no IntelliJ e VSCode

Summary

Como .psjava é Java puro, um comando psjava highlight install apenas associa
*.psjava à linguagem Java já existente no VSCode e no IntelliJ — sem extensão
ou plugin próprio. Se não achar a pasta de config de uma IDE, pergunta o caminho
na hora. O psjava doctor passa a reportar, por IDE, se a associação existe.

Technical detail

  • Núcleo puro src/core/highlight.ts: descobre paths de config (Windows),
    decide o estado por IDE (configured / missing / ide-not-found) e aplica a
    associação. Lógica pura e testável (mesmo padrão de buildSession).
  • VSCode: editar %APPDATA%/Code/User/settings.json, garantindo
    "files.associations": { "*.psjava": "java" } (merge sem destruir o resto;
    VSCode já traz gramática Java embutida).
  • IntelliJ: editar %APPDATA%/JetBrains/<Produto><versão>/options/filetypes.xml,
    adicionando <mapping pattern="*.psjava" type="JAVA"/> no extensionMap
    (idempotente). Há 1+ pastas de produto/versão — aplicar em todas as achadas.
  • Detecção: pasta de config existe → configura; não existe → prompt CLI
    pedindo o caminho (ou pular essa IDE).
  • Comando: subcomando highlight install no commander (src/commands/highlight.ts),
    registrado no cli.ts ao lado de doctor.
  • Doctor: runDoctor chama o checador puro e imprime por IDE
    (✓ configurado / ⚠ ausente / – não encontrada). Ausente é aviso, não muda
    o exit code; só jshell faltando mantém exit 1.

Scope

In

  • Subcomando psjava highlight install para VSCode + IntelliJ no Windows.
  • psjava doctor reportando o estado do realce por IDE (aviso, não falha).
  • Prompt via CLI quando a pasta de config não é encontrada.
  • Unit para a lógica pura; e2e do subcomando no nível certo.

Out

  • macOS/Linux (paths de config dos outros SOs).
  • Publicar extensão/plugin em marketplace.
  • Gramática .psjava própria.
  • Outros editores.

As subtasks vivem como sub-issues vinculadas a este card.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions