Falámos recentemente sobre a nossa nova extensão Visual Studio Code que permite ao VS Code comunicar com o 4D para a gestão de códigos. O destaque da sintaxe foi a primeira característica do Protocolo de Servidor de Linguagem em 4D v19 R6. Vamos ver como personalizar a renderização do seu código fonte.
Pode querer personalizar o realce da sintaxe para a sua própria folha de estilo ou para a folha de estilo padrão 4D, como se mostra abaixo:

Vamos dar uma vista de olhos a mais informações técnicas.
fichas semânticas
Em todas as linguagens de programação, o código é composto por fichas semânticas. Um símbolo semântico é uma parte do código com um sentido único, tais como classes, métodos, variáveis, etc. Tal como outras línguas, o código 4D é dividido em fichas semânticas e modificadores.
O código VS permite verificar os tokens semânticos no seu editor de código. Para os exibir, abra a paleta de comando do código VS, pesquise “Inspeccionar fichas e escopos do editor”, e seleccione-o.

Uma paleta mostra as propriedades da parte de código atrás do cursor, incluindo o Token Semântico e o seu Modificador, se existir. Basta seleccionar outra parte do código para ver directamente as propriedades relacionadas.

Aqui está a tabela de mapeamento entre a linguagem 4D e os tokens semânticos LSP:
| Ficha semântica LSP | Linguagem 4D |
| método | métodos |
| method.defaultLibrary | comandos |
| método.plugin | métodos de plugin |
| propriedade | atributos de objectos |
| função | funções de membro objecto |
| parâmetro | parâmetros do método, parâmetros das funções dos membros do objecto |
| variável.interprocesso | variáveis interprocessadas |
| variable.process | variáveis de processo |
| variable.local | variáveis locais |
| palavra-chave | palavras-chave |
| quadro | quadros |
| campo | campos |
| comentário | comentários |
| tipo | tipos |
| constante | constantes |
| corda | cordas |
| erro | erros |
Como criar fontes?
Pode dizer: “Ok, o Código VS reconhece o código 4D automaticamente, mas que mais?”. Este é o último passo: estabelecer a fonte de cada símbolo semântico.
Para o personalizar, tem de editar o ficheiro de definições utilizado pelo seu Código VS. Para o fazer, abra a Paleta de Comandos do Código VS, procure por “Settings.json” e edite-o.
Para informação, o ficheiro VS Code Settings.json é colocado aqui:
/Users/{UserName}/Library/Application Support/Code/User/settings.json em macOS
C:Utentes{Nome do Utilizador}AppData{Roaming}Roaming{Code}User{settings.json no Windows


Aqui estão as definições JSON a adicionar para exibir o código 4D com as folhas de estilo “light 4D” e “dark 4D” (procurar nas definições.json pela linha “4D-Analyzer.server.path,” e inserir todo o bloco seguinte na linha acima ou abaixo):
"editor.semanticHighlighting.enabled": true,
"editor.semanticTokenColorCustomizations": {
"[Default Light+]":{
"enabled": true,
"rules": {
"*:4d": {"foreground": "#000000", "bold": false, "italic": false, "underline": false, "strikethrough": false},
"method:4d": {"foreground": "#000088", "bold": true, "italic": true},
"method.defaultLibrary:4d": {"foreground": "#068c00", "italic": false},
"method.plugin:4d": {"foreground": "#000000"},
"property:4d": {"foreground": "#a0806b"},
"function:4d": {"foreground": "#5f8e5e", "italic": true},
"parameter:4d": {"foreground": "#000b76", "bold": true},
"variable.interprocess:4d": {"foreground": "#ff0088"},
"variable.process:4d": {"foreground": "#0000ff"},
"variable.local:4d": {"foreground": "#0031ff"},
"keyword:4d": {"foreground": "#034d00", "bold": true},
"table:4d": {"foreground": "#532300"},
"field:4d": {"foreground": "#323232"},
"comment:4d": {"foreground": "#535353"},
"type:4d": {"foreground": "#068c00", "bold": true},
"constant:4d": {"foreground": "#4d004d", "underline": true},
"string:4d": {"foreground": "#000000"},
"error:4d": {"foreground": "#ff0000", "bold": true, "italic": true}
}
},
"[Default Dark+]":{
"enabled": true,
"rules": {
"*:4d": {"foreground": "#FFFFFF", "bold": false, "italic": false, "underline": false, "strikethrough": false},
"method:4d": {"foreground": "#1B79F3", "bold": true, "italic": true},
"method.defaultLibrary:4d": {"foreground": "#59BB00", "italic": false},
"method.plugin:4d": {"foreground": "#BFBFBF"},
"property:4d": {"foreground": "#A0806B"},
"function:4d": {"foreground": "#4EC36E", "italic": true},
"parameter:4d": {"foreground": "#0C70FF", "bold": true},
"variable.interprocess:4d": {"foreground": "#FF0088"},
"variable.process:4d": {"foreground": "#53B0EB"},
"variable.local:4d": {"foreground": "#18B3F1"},
"keyword:4d": {"foreground": "#575757", "bold": true},
"table:4d": {"foreground": "#CF5600"},
"field:4d": {"foreground": "#9C6765"},
"comment:4d": {"foreground": "#8F8F8F"},
"type:4d": {"foreground": "#59BB00", "bold": true},
"constant:4d": {"foreground": "#FA647F", "underline": true},
"string:4d": {"foreground": "#FFFFFF"},
"error:4d": {"foreground": "#ff0000", "bold": true, "italic": true}
}
}
},
Note que o “:4d” após cada tipo de símbolo semântico não é obrigatório, mas permite definir esta sintaxe apenas para a linguagem 4D. Ao fazer isto, o realce da sintaxe para todas as outras línguas será deixado intocável.
Ao guardar as definições, pode ver o efeito directamente no editor de código!
Esta personalização é benéfica quando se utiliza o Código VS com um projecto 4D contendo uma peça web. Todas as línguas mantêm o seu próprio destaque sintáctico: HTML, CSS, Javascript, e agora… 4D!
