Editor de Codigo (Scintilla)
O editor de codigo do HarbourBuilder e powered pelo Scintilla 5.5+, o mesmo componente de edicao usado pelo Notepad++, SciTE e Code::Blocks. Ele oferece edicao de codigo profissional com destaque de sintaxe consciente de Harbour e dobramento de codigo inteligente.
Todas as tres plataformas usam Scintilla 5.5+ — Windows usa DLLs dinamicas, macOS usa bibliotecas estaticas e Linux usa bibliotecas compartilhadas. A experiencia de edicao e identica em todas as plataformas.
Configuracao do Scintilla por Plataforma
| Plataforma | Tipo de Biblioteca | Arquivos |
|---|---|---|
| Windows | Bibliotecas dinamicas | Scintilla.dll, Lexilla.dll |
| macOS | Bibliotecas estaticas | libscintilla.a, liblexilla.a |
| Linux | Bibliotecas compartilhadas | libscintilla.so, liblexilla.so |
Destaque de Sintaxe
O editor usa um tema de cores VS Code Dark+ com destaque de sintaxe consciente de Harbour:
| Tipo de Token | Cor | Estilo | Exemplo |
|---|---|---|---|
| Palavras-chave | Azul | Negrito | function, return, local |
| Comandos | Teal | Normal | DEFINE FORM, BUTTON, LABEL |
| Comentarios | Verde | Italico | // Isto e um comentario |
| Strings | Laranja | Normal | "Hello World" |
| Numeros | Verde Claro | Normal | 400, 3.14 |
| Preprocessador | Magenta | Normal | #include, #xcommand |
Dobramento de Codigo
O dobramento de codigo consciente de Harbour compreende estruturas da linguagem xBase:
function/return— Limites de funcaoCLASS/ENDCLASS— Definicoes de classeif/endif— Blocos condicionaisfor/next— Lacos fordo while/enddo— Lacos whileswitch/endswitch— Instrucoes switchbegin sequence/end sequence— Tratamento de excecoes#pragma begindump/#pragma enddump— Incorporacao de codigo C
Atalhos de Teclado
| Atalho | Acao |
|---|---|
| Ctrl+F / Cmd+F | Abrir barra de localizacao |
| Ctrl+H / Cmd+H | Abrir barra de substituicao |
| Ctrl+Espaco / Cmd+Espaco | Autocompletar (150+ palavras-chave) |
| Ctrl+/ / Cmd+/ | Alternar comentario de linha |
| Ctrl+Shift+D / Cmd+Shift+D | Duplicar linha atual |
| Ctrl+Shift+K / Cmd+Shift+K | Excluir linha atual |
| Ctrl+L / Cmd+L | Selecionar linha atual |
| Ctrl+G / Cmd+G | Ir para numero da linha |
| F12 | Ir para definicao (funcao/procedimento/metodo/classe) |
Autocompletar
Pressione Ctrl+Espaco / Cmd+Espaco para acionar o autocompletar com 150+ itens:
- Palavras-chave Harbour — function, return, local, static, class, method, etc.
- Funcoes Harbour — MsgInfo(), MsgStop(), hb_vfExists(), etc.
- Comandos xBase — DEFINE FORM, BUTTON, LABEL, ACTIVATE, etc.
Correspondencia de Parenteses
O editor destaca automaticamente parenteses correspondentes:
- Pares correspondentes —
(),[],{}destacados em amarelo - Parenteses nao correspondentes/errados — Destacados em vermelho
Marcadores
Defina marcadores para navegar rapidamente para locais importantes no codigo:
| Atalho | Acao |
|---|---|
| Ctrl+0..9 / Cmd+0..9 | Alternar marcador na linha atual |
| Ctrl+Shift+0..9 / Cmd+Shift+0..9 | Ir para marcador |
Snippets de Codigo
Expansao por tab para padroes de codigo comuns:
| Snippet | Expande Para |
|---|---|
forn | for nI := 1 to nCount |
iff | if condition |
cls | CLASS TClassName FROM TParentClass |
func | function FunctionName() |
proc | procedure ProcedureName() |
whil | do while .T. |
swit | switch nValue |
tryx | begin sequence ... end sequence |
Auto-Indentacao
Quando voce pressiona Enter, o editor indenta automaticamente a nova linha para corresponder ao nivel de indentacao da linha anterior. Isso mantem seu codigo formatado corretamente sem espacamento manual.
Edicao Multi-Arquivo com Abas
O editor suporta edicao com abas, permitindo trabalhar em multiplos arquivos fonte simultaneamente. As abas mostram o nome do arquivo e um asterisco (*) quando o arquivo possui alteracoes nao salvas.
Painel de Mensagens de Build
Apos o build, o painel Mensagens aparece na parte inferior mostrando:
- Erros — Marcadores vermelhos com referencias de arquivo/linha clicaveis
- Avisos — Marcadores amarelos para problemas potenciais
- Ir para o fonte — Clique em qualquer erro para navegar diretamente ate a linha de codigo
- Botao limpar — Limpa o painel de mensagens
Barra de Status
A barra de status na parte inferior mostra informacoes de edicao em tempo real:
| Campo | Descricao |
|---|---|
| Linha | Numero da linha atual |
| Coluna | Posicao da coluna atual |
| INS/SOB | Indicador de modo Insercao ou Sobrescrita |
| Total de linhas | Total de linhas no arquivo |
| Total de caracteres | Total de caracteres no arquivo |
| UTF-8 | Codificacao do arquivo |
Todas as funcionalidades do Scintilla sao configuradas especificamente para a sintaxe Harbour/xBase. O lexer compreende palavras-chave Harbour, comandos e construtores especificos xBase.