Realce de sintaxe dinâmico


O realce de sintaxe dinâmico é o realce de código que o usuário pode alterar. Há apenas um lugar onde isso acontece: o editor online.

Note

Trechos de código, iterações e coisas do tipo são estáticos, pois o usuário não pode alterar o código na hora. Se você quiser saber mais sobre como lidamos com o realce de sintaxe estático, consulte a documentação de realce de sintaxe estático.

Implementação

O realce de sintaxe dinâmico é feito com a biblioteca CodeMirror.

Ao adicionar suporte para a sua linguagem, há três opções:

  1. A linguagem tem suporte nativo no CodeMirror (ou seja, está listada como linguagem suportada). Se for o caso, vá para a seção Habilitar a linguagem.
  2. A linguagem tem suporte por meio de um plugin do CodeMirror já existente. Se for o caso, vá para a seção Usar um plugin existente.
  3. A linguagem não tem suporte. Nesse caso, há três opções:
    1. Escrever um plugin do CodeMirror do zero, como descrito na seção Criar um novo plugin.
    2. A sintaxe da sua linguagem se parece (muito) com a sintaxe de outra linguagem (por exemplo, a sintaxe do Unison se parece com a do Haskell); nesse caso, você pode considerar usar o realce de sintaxe dessa outra linguagem para a sua. Veja a seção Habilitar a linguagem para saber mais.
    3. Não ter realce de sintaxe dinâmico.

Habilitar a linguagem

Para habilitar o suporte do CodeMirror para a sua linguagem, abra um tópico no fórum. Nós (o Exercism) vamos então criar um Pull Request que habilita o suporte do CodeMirror para a sua linguagem no site.

Usar um plugin existente

Para usar um plugin existente, ele precisa estar publicado no NPM.

Se o plugin não estiver publicado no NPM, você pode:

  1. Perguntar ao autor do plugin se ele quer publicar no NPM.
  2. Fazer um fork do repositório e publicar por conta própria.
  3. Pedir que nós (o Exercism) façamos um fork do repositório e o publiquemos. Para isso, abra um tópico no fórum solicitando isso.
Note

O próximo passo é Habilitar a linguagem.

Criar um novo plugin

Estes são os passos para começar:

  1. Verifique nossa lista de repositórios para um codemirror-lang-... existente para garantir que ainda não exista um.
  2. Abra um novo tópico no fórum do Exercism dizendo para qual linguagem você quer criar um plugin do CodeMirror.
  3. Assim que um repositório de plugin do CodeMirror for criado para você, implemente a gramática da sua track.
Note

Para ajudar você a começar, o repositório criado para você contém uma gramática de exemplo mínima que você pode usar como base e ajustar.

Temos uma comunidade incrivelmente amigável e prestativa, que terá prazer em ajudar você ao longo do processo! Se você ficar travado, abra um novo tópico no fórum do Exercism ou crie novas issues em exercism/exercism conforme a necessidade 🙂

Depois, você precisa publicar o plugin no NPM. O próximo passo é Habilitar a linguagem.

Usar outra linguagem

A sintaxe da sua linguagem se parece (muito) com a sintaxe de outra linguagem; nesse caso, você pode considerar usar o realce de sintaxe dessa outra linguagem para a sua. Para isso, configure a track usando o plugin do CodeMirror da outra linguagem. Veja a seção Habilitar a linguagem para saber mais.