DEV Community

Kazuki Yokoyama
Kazuki Yokoyama

Posted on

Slurp e Barf

Olá, pessoal!

Vamos ver quatro atalhos do paredit, mas que também estão disponíveis no parinfer, para lidar com o monte de parênteses do Clojure. Eles são o slurp forwards/backwards e o barf forwards/backwards e o ojetivo deles é mover os parênteses*, expandindo ou retraindo a expressão atual (onde o cursor está).

  • Neste artigo, parênteses significa qualquer delimitador de expressão: parênteses, colchetes ou chaves.

O slurp "suga" uma expressão que está fora para dentro da expressão atual, enquanto o barf "cospe" algo que está dentro para fora da expressão atual.

O forwards se refere ao parêntese que fecha a expressão, ou seja, o mais à direita. O backwards se refere ao parêntese que abre a expressão, ou seja, o mais à esquerda.

Em todos exemplos a seguir, considere que o cursor está em algum lugar dentro da expressão atual (em vermelho).

No primeiro exemplo, usamos o slurp forwards para expandir a expressão atual, sugando o e que estava fora para dentro da expressão atual:

Alt Text

Agora, usamos o barf forwards para "cuspir" o e de dentro da expressão atual para fora:

Alt Text

Repare em duas coisas:

  • O slurp forwards e o barf forwards são opostos;
  • O forwards significa que queremos movimentar o parêntese da direita, ou seja, adicionar (slurp) ou remover (barf) do fim da expressão atual.

Seguindo, podemos usar o slurp backwards para expandir a expressão atual, sugando o b para dentro:

Alt Text

E podemos usar o barf backwards para "cuspir" o b para fora da expressão atual:

Alt Text

Novamente, repare em duas coisas:

  • O slurp backwards e o barf backwards são opostos;
  • O backwards significa que queremos movimentar o parêntese da esquerda, ou seja, adicionar (slurp) ou remover (barf) do começo da expressão atual.

Por fim, os atalhos também tem um padrão bem lógico: usamos Shift para forwards e Ctrl para backwards, enquanto K e J indicam o sentido do movimento do parêntese, para direita ou para a esquerda, respectivamente.

Existem vários outros movimentos no paredit, mas esses já são bastante úteis no dia-a-dia!

Oldest comments (0)