Macros

A palavra macro, do jeito que é utilizada em computação, vem do termo macroinstruction (macroinstrução). Então, quando falamos em macro, significa que estamos falando de um agrupamento de várias instruções em um único comando.

Por que usar macros?

Em editores de texto em geral, utilizamos macros quando precisamos repetir a mesma sequência de passos muitas vezes para conseguir fazer uma determinada tarefa.

Vamos imaginar um exemplo bem simples. Suponha que você escreveu várias linhas de código CSS e esqueceu de colocar o ponto-e-vírgula ao final de cada uma delas. Para consertar isso, normalmente você teria que:

  1. Posicionar o cursor no final da linha (digitar End)

  2. Inserir o ponto-e-vírgula (digitar ;)

  3. Descer o cursor para a linha seguinte (digitar Seta para baixo)

  4. Voltar ao passo 1 e repetir o processo para as linhas restantes

Consegue imaginar a ginástica necessária para fazer isso em um arquivo CSS com centenas de linhas? Em editores de texto que possuem o recurso de macros, é possível gravar esta sequência de comandos e reutilizá-la para cada linha na qual precisarmos incluir um ponto-e-vírgula.

Gravando e executando macros

No Sublime Text é muito fácil gravar uma macro:

  1. Para iniciar a gravação, basta ir em Tools | Record Macro (Ctrl+Q)

  2. Em seguida, execute uma vez a sequência de comandos que deseja repetir (no exemplo que vimos acima, seria digitar End, depois ; e finalmente Seta para baixo)

  3. Por fim, digite Ctrl+Q novamente para encerrar a gravação da macro

Depois disso, a cada vez que você executar o comando Tools | Playback Macro (Ctrl+Shift+Q), o Sublime Text repetirá a sequência efetuada no passo 2.

É importante lembrar que a macro é executada a partir da posição atual do cursor, ou seja, ao gravá-la para executar mais de uma vez em seguida, é preciso levar em consideração a posição final do cursor no último “passo” da macro. É por isso que o último passo do nosso exemplo foi digitar Seta para baixo. A finalidade é deixar o cursor no ponto certo para a próxima execução.

Salvando macros

Para os casos em que uma macro precisará ser reutilizada com frequência, é possível salvá-la em arquivo próprio. Fazemos isso com o comando Tools | Save Macro…, que ao ser executado abre uma caixa de diálogo na pasta Packages/User [1], na qual devemos salvar a macro em um arquivo com a extensão .sublime-macro.

Editando uma macro

Assim como podemos salvar uma macro, gerando um arquivo do tipo .sublime-macro, também é possível criar e editar macros manualmente. Um arquivo de macro contém o “roteiro” com todos os comandos a serem executados na ordem correta.

Na figura 36 temos o arquivo de macro correspondente à sequência de comandos para inserir um ponto-e-vírgula ao final de uma linha. Esse arquivo foi gerado quando salvamos a macro do exemplo acima.

Exemplo de arquivo de macro para adicionar ponto-e-vírgula ao final de uma linha

Fig. 36 Exemplo de arquivo de macro para adicionar ponto-e-vírgula ao final de uma linha

A grande utilidade de poder editar uma macro previamente gravada é ser capaz de corrigi-la ou mesmo adaptá-la sem que para isso seja preciso passar por todo o processo de execução dos comandos e gravação da macro.

Entendendo a estrutura de um arquivo de macros

Os arquivos do tipo .sublime-macro são arquivo no formato JSON que contém uma lista (todos os elementos que estão entre os colchetes) de estruturas chamadas dicionários (os pares de atributos e valores que estão entre chaves). Esses dicionários possuem os seguintes atributos:

command

Corresponde ao comando executado. Cada ação que executamos no Sublime Text, por menor que seja, corresponde a um comando. Para se ter uma ideia, o simples ato de pressionar uma tecla de direção (esquerda, direita etc.) dispara o comando move.

Nota

Uma dica para descobrir os comandos do Sublime Text, é ativar o log de comandos. Para isso, vá ao console do Sublime Text (View | Show Console), digite sublime.log_commands(True) e tecle Enter. A partir daí, toda ação feita pelo usuário será mostrada no console (ver figura 37) e você poderá observar como funciona cada comando nativo do Sublime Text.

args

Corresponde aos argumentos necessários para a execução de alguns comandos. O comando move, por exemplo, precisa receber o valor dos argumentos by, cujo valor pode ser lines ou characters a depender se o movimento do cursor é na vertical ou na horizontal; e forward, cujo valor pode ser True ou False, indicando se o cursor está avançando ou retrocedendo.

Log de comandos no console do |ST|

Fig. 37 Log de comandos no console do Sublime Text