Formatação
talor fmt escreve a forma canônica de um programa:
talor fmt src/main.talor src/parser.talor # in place
talor fmt --check src/main.talor # writes nothing; exit 1, naming the file
talor fmt - # the program on standard input, formatted, on standard output--check é o que um build chama: não escreve nada e responde 1 quando o texto não está canônico, nomeando o arquivo. - lê o programa da entrada padrão, então cat x.talor | talor fmt - deixa o mesmo texto que talor fmt x.talor deixaria.
Um arquivo só é substituído quando o texto muda, e a substituição é escrita através de um arquivo temporário ao lado dele, então uma execução interrompida deixa o arquivo que estava sendo escrito ou o arquivo que havia, nunca metade de um.
A forma que ele escreve
- Um bloco com uma instrução dentro nunca fica na linha do cabeçalho.
- A indentação segue as chaves do arquivo.
- Um literal de lista que não cabe na linha quebra um elemento por linha, com vírgula final.
- Dois itens de topo são separados por uma linha em branco, tenha o fonte uma ou não; mais de uma é escrita como uma. Uma sequência de linhas
useé um grupo, e um atributo oupubpertence ao item abaixo, então nenhuma linha em branco entra entre#[test]e a função que ele marca. - Dentro de um bloco, a linha em branco que quem escreveu deixou é mantida, no máximo uma. Nenhuma é inventada.
- Um comentário nunca é movido.
O arquivo de estilo
Um package declara seu estilo em talor.fmt na raiz dele, e o formatador o encontra subindo a partir do arquivo que está formatando. Um key = value por linha, # começa um comentário:
# two spaces, a narrower line, and a trailing comma in a broken list
indent = 2
max_width = 60
trailing_comma = trueindent é um número de espaços de 1 a 16, ou tab. Um package sem talor.fmt recebe quatro espaços e largura máxima de 100, que é o default dos formatadores das linguagens vizinhas.
Uma chave que esta versão não conhece é nomeada na saída de erro padrão, uma vez por arquivo de estilo, o arquivo é formatado com as chaves que ela entende, e o comando responde 0:
warning: 'src/talor.fmt' names 'indentt', which this formatter does not know; the key is ignoredA chave não é erro, porque um talor.fmt escrito para uma versão posterior do formatador ainda diz o que esta entende - e o aviso é o que distingue esse arquivo de uma chave digitada errado.
No editor
O mesmo formatador está por trás do pedido de formatação do language server, então salvar substitui exatamente as linhas que mudaram, e um arquivo já canônico volta sem mudança. Se o editor formata ao salvar, ao digitar ou ao colar é configuração do próprio editor, e a indentação que o editor manda junto com o pedido é a que o formatador usa nele. A extensão tem uma configuração própria, talor.format.configPath, que nomeia o arquivo de estilo quando aquele encontrado subindo a partir do arquivo não é o pretendido.