Criando seus próprios snippets
Existem dois modos de criar seus snippets começarei do modo mais simples.
Modo 1:
Carregue um texto do modo que você quer criar o snippet. Nesse exemplo criarei um snippet para trabalhar com textos em LaTeX. Carregarei "meuTexto.ltx". Automaticamente entrarei no Modo LaTeX.
Digite o atalho:
C-c & C-n
O cursor moverá para o Mini Buffer e lá aparecerá o seguinte:
Enter a snippet name:
Entre com o nome pelo qual você quer chamar o snippet, no meu caso quero chamar meu snippet por "doca4".
Aparecerá um buffer com o seguinte conteúdo:
# -*- mode: snippet -*-
# name: doca4
# key:
# binding: "keybinding"
# expand-env: ((some-var some-value))
# --
Obs.: Agora é importante notar (para os usuários do Ubuntu e afins) que se você não conseguir alterar o arquivo é porque será necessário fazer os passos 6 e 7 da instalação do ArchLinux. E no passo 7 creio que apenas a terceira e quarta linhas serão suficientes no ".emacs".
Continuando, eu gosto de usar menos coisa desse cabeçalho, resumo ele assim:
# name:
# key:
# --
Onde:
- name: = O nome que eu quero que apareça no menu YASnipppet
- key: = O atalho por onde quero acessar o snippet
Agora tudo que aparecer abaixo da linha "# --" será seu snippet. No exemplo meu snippet ficará assim:
# name: Documento A4
# key: doca4
# --
\documentclass[a4paper]{${1:tipo}}
$0
Nesse caso o texto "\documentclass[a4paper]{} é o texto padrão que aparecerá. ${1:tipo} é o texto que será preenchido pelo usuário (se for teclado TAB a palavra tipo ficará como padrão e $0 é a posição do cursor após preencher todo o snippet.
Pra simplificar em todo o cursor sempre se moverá para onde houver um "$", porém com comportamento diferente conforme a tabela:
- $0 - Posição do cursor após o snippet ser preenchido
- $N - Campo para ser preenchido onde "N" é um número inteiro conforme a ordem que deve ser preenchida (Exemplo: blabla $1, blabla $2,...) mudando de campo apertando a tecla TAB
- ${N:default} - é semelhante a "$N", porém com um texto padrão que pode ser definido pelo criador do snippet, no caso o N se comporta igual ao "$N" e default é o texto padrão.
- $& - utilizado para inserir um texto edentado conforme a regra do Modo Maior ativo.
- ` - (crase) Inserir código elisp.
Interessante dizer que em "$N" ou "${N:xxx}" você pode usar o inteiro em "N" para repetir o mesmo tempo em outros lugares pertinentes no seu snippet. Exemplo:
xxx$1
XXX$1
Preenchendo o campo 1 com o texto OK os outros campos referenciados com "$1" serão preenchidos automaticamente resultará em:
XXXOK
XXXOK
É isso, já deu pra notar como um snippet pode ser muito flexível.
Modo 2:
Você também pode criar um snippet "do zero". No caso criando um arquivo de texto com o nome do atalho que você quer digitar para acessar o snippet e preenche-lo conforme as instruções acima. Basta criar esse arquivo em:
~/.emacs.d/plugins/yasnippet/yasnippet-0.6.1c/snippets/text-mode
Criando um diretório dentro de "text-mode" com o nome do modo a que pertence o snippet "python-mode" por exemplo e criando seu snippet dentro desse diretório. Isso para criar um snippet para seu usuário. Mas se você quiser criar um snippet para todos os usuários do PC você precisará criá-lo como "root" dentro do diretório:
/usr/share/emacs/site-lisp/yas/snippets/text-mode
Lembrando que trabalhando dessa forma você precisará criar o arquivo todo do zero, sem nenhum preambulo pronto.
Toque final
Para finalizar a criação dos seus snippets é somente acessar o menu YASnippet e clicar em "Reload everything" e seus snippets personalizados estarão disponíveis. Ou também fechando e reabrindo o GNU Emacs (eu acho mais eficiente).
Admito que esse tutorial não ficou tão claro ou didático como eu gostaria, mas eu o criei totalmente do zero apenas com os poucos conhecimentos que eu tenho sobre o assunto. Com o conteúdo aqui exposto você poderá concluir que o uso do YASnippet é realmente bastante simples, assim como a criação de seus próprios snippets.
O que realmente importa é o ganho de velocidade de criação quando o YASnippet é utilizado. Ainda mais se o usuário aliar o uso do YASnippet com outros recursos do GNU Emacs como as abreviações e os bookmarks.
Como dizem o GNU Emacs não é a mais bela das ferramentas, mas um usuário de GNU Emacs experiente escreverá muito rápido e de forma muito eficiente.