LSP WorkbenchExtensão para VS Code e Cursor com suporte à Linguagem Senior de Programação (LSP) usada no ecossistema Senior Sistemas (Sapiens, HCM e afins). Abra um arquivo
O que você ganha
Instalação
Atalho de instalação rápida (Command Palette / Quick Open):
Guia rápido (5 minutos)
Recursos em detalheSyntax highlighting (cores)A gramática TextMate + semantic tokens colorizam palavras-chave (
Não há configuração obrigatória: basta o arquivo estar como Linguagem Senior. AutocompletarSugestões ao digitar ou com Ctrl+Espaço:
Dica: em Membros de Lista / CursorApós digitar
Hover (documentação)Passe o mouse sobre uma função (nativa ou do projeto) para ver resumo e detalhes.
Ajuda durante a digitação (parâmetros)Ao abrir
Validação sintática e de regrasEnquanto você edita, a extensão analisa o código e marca problemas (ex.: parâmetros incorretos, padrões inválidos da linguagem, regras
Fluxo típico: erro → alerta → Quick Fix → código corrigido:
SnippetsDezenas de snippets para estruturas comuns: Digite o prefixo do snippet e confirme com Tab/Enter. Formatador
Outline e navegação
Catálogo de banco (tabelas e campos)Sem catálogo local, a extensão funciona normalmente — só não sugere tabelas/campos do dicionário Senior.
Passo a passo (gerar JSON + O dicionário da sua empresa não vem no pacote do Marketplace. Contextos e escopo de símbolosVer passo a passo em Configurar multiarquivo. Comandos úteis (Ctrl+Shift+P): Criar/Editar/Apagar Contexto, Alternar Escopo de Símbolos. A status bar mostra o escopo atual. Projeto de relatórioComandos (Command Palette → “LSP Workbench”):
Há diagnósticos específicos ( RefactorsCode Actions / refactors: envolver seleção em Configuração (passo a passo)As settings começam com
1. Arquivo
|
| Peça | Exemplo | Significado |
|---|---|---|
| Padrão | **/HR/HR*.txt |
Arquivos sob HR/ que começam com HR e terminam em .txt |
| Language id | senior-lsp |
Ativa a extensão LSP Workbench |
Conferência: status bar = Linguagem Senior + cores/completion.
3. Configurar multiarquivo (contextos)
Use quando o workspace tem vários módulos e o Ctrl+Espaço mistura símbolos demais.
- Escolha o escopo (
lsp.symbols.scope):project— workspace inteiro (default)file— só o arquivo abertomixed— arquivo + entradas delsp.contexts
- Defina um ou mais itens em
lsp.contexts. - Salve
.vscode/settings.json. - Abra um arquivo do contexto e teste Ctrl+Espaço / F12.
- Opcional: LSP Workbench: Criar Contexto na Command Palette.
{
"lsp.symbols.scope": "project",
"lsp.contexts": [
{
"name": "HR",
"rootDir": "HR",
"filePattern": "HR*.lspt",
"includeSubdirectories": false,
"system": "HCM"
},
{
"name": "TR",
"rootDir": "TR",
"filePattern": "TR*.txt",
"includeSubdirectories": true,
"files": ["shared/helpers.lsp"]
}
]
}
| Campo | Obrigatório | Descrição |
|---|---|---|
name |
sim | Nome exibido |
rootDir |
sim | Pasta relativa ao workspace |
filePattern |
sim | Glob (ex.: *.lsp, HR*.txt) |
includeSubdirectories |
não | Default true |
files |
não | Arquivos extras (allowlist) |
system |
não | HCM / ACESSO / ERP (status bar) |
diagnostics.ignoreIds |
não | IDs ignorados só neste contexto |
4. Projeto de relatório (Gerador)
Criar do zero
- LSP Workbench: Gerar Projeto de Relatório (scaffold com
relatorio.json). - Edite
.lspdentro da pasta — o escopo fica isolado nessa pasta. - Importar Contexto de… para pastas compartilhadas (
contextoExtra). - Mostrar Escopo do Relatório para conferir.
Importar de um dump Senior
- No Gerador, use Visualizar Todas as Regras e salve o
.lspmulti-trecho (padrãoCódigo: N - Descrição: …). - Abra esse arquivo ou Command Palette → LSP Workbench: Importar Relatório e escolha o arquivo.
- Informe sigla (ex.
RDCG183), descrição e pasta destino. - A extensão cria
relatorio.json,Definicao/,Secoes/<Nome>/e abre oREADME.md. - Eventos
*_Na Impressãoficam listados no README (não geram arquivo).
{
"codigo": "RDCGXXX",
"descricao": "Cargas — exemplo",
"detalhePrincipal": "Detalhe_1",
"contextoExtra": ["../FUNCOES"]
}
Docs: docs/gerador-relatorios.
5. Catálogo de tabelas
- Gere ou copie um
catalog.json(receitas). - Configure o path no workspace:
{
"lsp.catalog.path": "docs/banco-senior-base/catalog.example.json"
}
- Sem path, a extensão tenta
docs/banco-senior/.generated/catalog.jsonedocs/banco-senior-base/.generated/catalog.json. - Teste: digite
E012FAM.→ Ctrl+Espaço.
6. Formatação e tabela de settings
{
"[senior-lsp]": {
"editor.formatOnSave": true
},
"lsp.format.enabled": true,
"lsp.format.indentSize": 2,
"lsp.format.braceStyle": "sameLine",
"lsp.format.embeddedSql.enabled": false,
"lsp.format.embeddedSql.dialect": "sql",
"lsp.diagnostics.ignoreIds": [],
"lsp.fallback.defaultSystem": "",
"lsp.server.enabled": false
}
| Setting | Default | Descrição |
|---|---|---|
lsp.format.enabled |
true |
Formatação de documentos |
lsp.format.indentSize |
2 |
Indentação (2 ou 4) |
lsp.format.braceStyle |
sameLine |
{ na mesma linha ou na seguinte |
lsp.format.embeddedSql.enabled |
false |
Formatar SQL embutido |
lsp.format.embeddedSql.dialect |
sql |
sql / oracle / sqlserver |
lsp.diagnostics.ignoreIds |
[] |
IDs a ignorar |
lsp.symbols.scope |
project |
Escopo de símbolos |
lsp.contexts |
[] |
Contextos nomeados |
lsp.fallback.defaultSystem |
"" |
Sistema na status bar |
lsp.catalog.path |
"" |
Path do catálogo JSON |
lsp.server.enabled |
false |
Language Server externo (experimental) |
Language Server (opcional)
Default: diagnósticos in-process (lsp.server.enabled = false). Para o LS externo é preciso build do monorepo — ver Documentação para desenvolvedores. Depois de ligar a setting: Reload Window.
Atalhos úteis
| Ação | Atalho típico (Windows) |
|---|---|
| Completar | Ctrl+Espaço |
| Quick Fix | Ctrl+. |
| Format Document | Shift+Alt+F |
| Go to Definition | F12 |
| Hover | Mouse over / Ctrl+K Ctrl+I |
| Problems | Ctrl+Shift+M |
| Command Palette | Ctrl+Shift+P → LSP Workbench: |
Requisitos
- VS Code 1.85+ (ou Cursor compatível)
- Arquivos
.lsp/.lspt
Problemas comuns
| Sintoma | O que verificar |
|---|---|
| Sem cores / sem completion | Linguagem = Linguagem Senior (não Plain Text) |
.txt sem highlight |
files.associations em .vscode/settings.json → senior-lsp |
| Sem sugestão de tabelas | Catálogo ausente ou lsp.catalog.path incorreto |
| Completion mistura outros módulos | Configure lsp.contexts / escopo (passo 3) |
| Formatação não roda | lsp.format.enabled = true |
| Muitos avisos indesejados | lsp.diagnostics.ignoreIds ou ignore por contexto |
Issues: github.com/brunoleocam/lsp-workbench/issues
Licença e créditos
MIT — ver LICENSE. Créditos de terceiros: CREDITS.md.
Código-fonte: github.com/brunoleocam/lsp-workbench.
Documentação para desenvolvedores: DEVELOPER.md.







