Skip to content

feat: implementa navegação estrutural completa para as 13 linguagens (DocumentSymbol, FoldingRange, CodeLens, InlayHints, SemanticTokens, WorkspaceSymbol) - #128

Open
kunaaaalcodes wants to merge 2 commits into
DesignLiquido:principalfrom
kunaaaalcodes:fix-109-outline-simbolos

Conversation

@kunaaaalcodes

Copy link
Copy Markdown

Resolve #109

O que foi feito

Implementados 6 provedores de navegação estrutural e semântica que antes não existiam para nenhuma das 13 linguagens suportadas pela extensão. Agora um arquivo Delégua (ou qualquer dialeto) de 300 linhas oferece outline, breadcrumbs, dobra de código, CodeLens, dicas em linha, realce semântico e busca de símbolos no projeto.

Provedores criados

Provedor O que destrava Idiomas cobertos
DocumentSymbolProvider Outline, breadcrumbs, Ctrl+Shift+O 13/13 ✅
FoldingRangeProvider Dobra (folding) de blocos/funções/classes 11/13 ✅ (foles a egua)
CodeLensProvider Número de referências sobre funções/métodos 2/13 (delegua, delegua-testes)
InlayHintsProvider Dicas de tipo inline inferidas pelo estilizador 2/13 (delegua, pitugues)
SemanticTokensProvider Realce sintático-semântico por função/classe/variável 11/13 ✅
WorkspaceSymbolProvider Ctrl+T para buscar símbolos no projeto 9/13 ✅

Arquivos novos (56 no total)

fontes/dicas-insercao/ → InlayHintsProvider (base + delegua + pitugues)
fontes/dobramento/ → FoldingRangeProvider (base + 11 dialetos)
fontes/lentes-codigo/ → CodeLensProvider (base + delegua)
fontes/simbolos-documento/ → DocumentSymbolProvider (base + 13 dialetos)
fontes/simbolos-trabalho/ → WorkspaceSymbolProvider (delegua/pitugues + 7 dialetos)
fontes/tokens-semanticos/ → SemanticTokensProvider (base + 11 dialetos)

Arquivos modificados

  • fontes/extensao.ts — registros dos novos providers para delegua, pitugues, delegua-testes
  • fontes/extensao-web.ts — registros dos novos providers na versão web
  • fontes/ativacao-linguagens.ts — registros sob demanda para foles, lmht, visualg, mapler, potigol, portugolstudio, birl, egua
  • testes/extensao.test.ts — mocks atualizados
  • testes/extensao-web.test.ts — mocks atualizados

Arquitetura

Cada família de provedor segue o padrão base + dialetos:

  • delegua-base.ts contém a lógica compartilhada (percorrer AST/hierarquia de declarações)
  • Cada dialeto tem seu próprio arquivo que instancia o parser adequado e chama a base
  • index.ts + index-web.ts re-exportam os provedores para consumo

Dialetos com AST de pacotes externos (Foles, LMHT) usam varredura textual simplificada; todos os outros usam a AST completa de @designliquido/delegua.

Testes

1059 passed, 76 suites
TypeScript compilation: clean (0 errors)

…e, CodeLens, InlayHints, SemanticTokens e WorkspaceSymbol para as 13 linguagens (DesignLiquido#109)

@leonelsanchesdasilva leonelsanchesdasilva left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apenas uma modificação, por favor.

Comment thread fontes/simbolos-documento/lincones.ts Outdated

const simbolos: vscode.DocumentSymbol[] = [];
for (const comando of resultadoAvaliacao.comandos) {
const nome = comando.constructor.name === 'Criar' ? (comando as any).nomeEntidade

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Favor usar comando.constructor ao invés de comando.constructor.name.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sem outline, dobra de código, CodeLens ou dicas em linha

2 participants