Ir para o conteúdo

Formatação ​

talor fmt escreve a forma canônica de um programa:

sh
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 ou pub pertence 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 = true

indent é 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 ignored

A 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.

Talor v0.1.0 - Publicado sob a licença MIT OR Apache-2.0.