Mais desempenho no GNU Emacs com o YASnippet

O GNU Emacs é um ambiente de trabalho que dentre várias funcionalidades serve (principalmente) para criação de textos/scripts. Dentre seus muitos recursos, um dos mais úteis para essa tarefa, é o YASnippet, fácil de usar e expansível. Quero mostrar como instalar, usar e expandir o YASnippet, para seu uso.

[ Hits: 13.542 ]

Por: Jeremias Alves Queiroz em 23/03/2011


Compondo seus snippets



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.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Descrição do uso
   3. Compondo seus snippets
Outros artigos deste autor

Pilha de Diretórios (comandos pushd, popd e dirs)

Leitura recomendada

Criação de um repositório (mrepo) - Red Hat e CentOS 5 (com atualização na RHN para RedHat)

Montando um servidor de pacotes pré-compilados do Gentoo

Extraindo MP3 com o ripperX

Como manter GNOME2 em Sabayon Linux

Aulas particulares: Ganhando dinheiro com Linux

  
Comentários
[1] Comentário enviado por YuriAoto em 23/03/2011 - 19:15h

Muito interessante mesmo, não conhecia. Fazia este tipo de coisa usando eLisp, mas é sempre bom conhecer outras ferramentas

[2] Comentário enviado por asdf2 em 15/08/2012 - 18:07h

muito bom, valeu, foi pro favoritos


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts