O GNU Emacs é um editor de texto robusto, customizável e extensível para uso. É um dos projetos open-sources mais antigos que existe. Nessa série de artigos você aprenderá instalar e configurar esse editor como um ambiente de desenvolvimento integrado para Python.
Emacs configurado como um IDE Python |
O Emacs teve sua origem em 1974 como uma melhoria para um editor existente, chamado TECO (Text Editor & COrrector). Depois, foi escrito totalmente como um editor à parte, em 1976, no MIT (Massachusetts Institute of Technology) — fruto de trabalho de Richard Stallman, caracterizado por ser extensível mesmo enquanto está em execução, cujo artifício deve-se a flexibilidade da linguagem de sua implementação: Lisp.
Primeiros Passos
Primeiramente é necessário ter o editor GNU Emacs instalado em seu computador. Ele está disponível nessa página do GNU Emacs mas pode ser instalado via linha comando em ambientes unix-like. Você pode pesquisar pelo nome do pacote e instalá-lo.
Esse é um resumo dos procedimentos que serão realizados:
- Instalação dos pacotes Python
- Instalação dos pacotes do Emacs
- Configuração básica de preferências
- Configuração básica de atalhos
- Teste das funcionalidades
Note que esse tutorial serve como base e você é livre para customizá-lo. Nessa parte 1 será abordada apenas a instalação dos pacotes.
Instalação dos Pacotes Python
Utilizando o gerenciador de pacotes Python, chamado pip, instale esses pacotes:
- rope ou jedi (auto-completação, refatoração e introspecção)
- flake8 (conjunto de ferramentas para checagem de código)
- autopep8 (autoformatação de código usando PEP8)
- yapf (formatação de código aprimorada)
Use o comando pip install <pacote> para instalá-los.
Instalação dos pacotes Python mencionados. |
Você pode optar por jedi ou rope. Ambos oferecem suporte ao autocomplete e introspecção de código, recuperando informações de objetos — quando possível — e possibilitam ir a uma definição específica de um objeto. Rope tem o seu foco em refatoração de código.
O pacote flake8 é um conjunto de três ferramentas: PyFlakes, que checa erros em seus arquivos fontes; pycodestyle, que checa se seus fontes estão de acordo com a recomendação e guia de estilo PEP8; e Ned Batchelder’s McCabe script, que serve para cálculo de complexidade ciclomática.
- Leia mais sobre o flake8 aqui.
- Leia mais sobre o PyFlakes aqui.
- Leia mais sobre o pycodestyle aqui.
- Leia mais sobre o Ned Batchelder's McCabe script aqui.
O pacote autopep8 formata o seu código automaticamente de acordo com recomendação e guia de estilo PEP8. Então, como você deve imaginar, ele depende do pacote pycodestyle contido em flake8.
- Leia mais sobre o autopep8 aqui.
Por fim, o pacote yapf, que é bem interessante. Disponibilizado no Github em um repositório da Google, esse pacote serve para formatar códigos Python. O autopep8 faz isso de acordo com a PEP8, mas não é porque o código está de acordo com a PEP8 que ele está bem formatado e é nesse caso que esse pacote entra.
- Leia mais sobre o yapf aqui.
Instalação dos Pacotes Emacs
A configuração do Emacs fica em um arquivo chamado init.el, localizado geralmente em $HOME/.emacs.d/.
Caso esse arquivo não exista, não há problemas. Apenas certifique-se da
existência do diretório. Mas caso exista, crie um backup ou mova o
arquivo para um outro local. Caso utilize outro formato de init file, não há problemas e pode ler mais a respeito aqui (recomendado) e apenas adapte o tutorial.
Agora é preciso instalar alguns pacotes do Emacs. Digite no terminal o seguinte comando:
emacs --no-init-file
Esse comando faz com que o Emacs seja carregado sem a configuração do arquivo init.el em sua $HOME. E então, assumindo que o diretório ~/.emacs.d/ existe, execute dentro do Emacs: C-x C-f ~/.emacs.d/init.el RET.
Observação: caso não esteja familiarizado com o Emacs, isso pode ser útil.
- C: equivalente a tecla Ctrl
- M: equivalente a tecla Alt ou Command (Mac)
- RET: equivalente a tecla RETURN ou ENTER
Caso seja a primeira vez que esteja usando esse editor, pode clicar nesse link da Emacs Wiki, em português, para aprender os comandos básicos, se houver necessidade.
Emacs carregado sem o init file. |
Em seguida, precisamos habilitar o acesso a uma grande fonte de pacotes chamada MELPA. Adicione o seguinte código em seu init.el:
(package-initialize)
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
Feito isso, você pode recarregar o seu init.el sem sair do editor, apenas executando M-x load-file RET ~/.emacs.d/init.el RET.
Em seguida, ainda no Emacs, execute: M-x package-list-packages RET. Isso nos possibilitará navegar entre a lista de pacotes e instalar o que desejamos.
A lista de pacotes será carregada logo após o carregamento dos pacotes GNU Elpa (Emacs Lisp Package Archive), por isso, talvez demore um pouco. Após isso, instale os seguintes pacotes:
Elpy (Emacs Lisp Python Environment) é o principal pacote desse tutorial e faz uso das ferramentas Python supracitadas.
Expand-region é uma ótima ferramenta que auxilia na seleção de trechos do código. Com a demonstração de uso, na parte 3 do tutorial, a sua utilidade se tornará mais clara.
Yasnippet-classic-snippets facilita a construção de blocos de código, exigindo apenas que uma palavra-chave seja digitada.
Os pacotes adicionais, com exceção do último (neotree), são temáticos. O doom-theme permite deixar a aparência do editor igual a que é exibida no início do artigo. Os ícones all-the-icons complementam isso. O neotree, por sua vez, permite que uma janela de navegação — em forma de árvore — seja aberta no canto esquerdo da tela.
Feita a instalação de todas as ferramentas acima, o Emacs está pronto para ser configurado. Pois, apenas a instalação das ferramentas não é o suficiente para trabalho, por isso o arquivo init.el deve ser editado. Essa configuração será exibida na parte 2 do tutorial.
Continua em Transformando Emacs em um IDE Python - Parte 2.
Referências
EMACSWIKI: Novato no Emacs. Disponível em <https://www.emacswiki.org/emacs/NovatoNoEmacs>. Acesso em 15 jan. 2019.
GITHUB. All-the-icons. Disponível em <https://github.com/domtronn/all-the-icons.el>. Acesso em 15 jan. 2019.
Em seguida, ainda no Emacs, execute: M-x package-list-packages RET. Isso nos possibilitará navegar entre a lista de pacotes e instalar o que desejamos.
Carregamento da lista de pacotes Emacs. |
A lista de pacotes será carregada logo após o carregamento dos pacotes GNU Elpa (Emacs Lisp Package Archive), por isso, talvez demore um pouco. Após isso, instale os seguintes pacotes:
- Elpy (ambiente de desenvolvimento Python para Emacs)
- Expand-region (ferramenta para seleção de trechos de código)
- Yafolding (permite ocultar/exibir blocos de código)
- Yasnippet-classic-snippets (ferramenta para construção de trechos de código)
- All-the-icons (opcional)
- Doom-theme (opcional)
- Neotree (opcional)
Elpy (Emacs Lisp Python Environment) é o principal pacote desse tutorial e faz uso das ferramentas Python supracitadas.
- Leia mais sobre o elpy aqui.
Expand-region é uma ótima ferramenta que auxilia na seleção de trechos do código. Com a demonstração de uso, na parte 3 do tutorial, a sua utilidade se tornará mais clara.
- Leia mais sobre o expand-region aqui.
Yafolding pode ser útil na navegação de seu código. Ele possibilita que um bloco de código possa ser ocultado.
- Leia mais sobre o yafolding aqui.
- Leia mais sobre o yasnippet-classic-snippets aqui.
Os pacotes adicionais, com exceção do último (neotree), são temáticos. O doom-theme permite deixar a aparência do editor igual a que é exibida no início do artigo. Os ícones all-the-icons complementam isso. O neotree, por sua vez, permite que uma janela de navegação — em forma de árvore — seja aberta no canto esquerdo da tela.
- Leia mais sobre all-the-icons aqui.
- Leia mais sobre doom-theme aqui.
- Leia mais sobre neotree aqui.
Emacs usando all-the-icons (Foto: Divulgação / Dom Charlesworth) |
Importante: caso opte por instalar o pacote all-the-icons, após a instalação e recarregamento do seu Emacs ou o init.el, execute o comando M-x all-the-icons-install-fonts RET. Após isso atualize o cache de fontes da sua distribuição. No terminal, execute: fc-cache -f -v como um usuário não root.
Feita a instalação de todas as ferramentas acima, o Emacs está pronto para ser configurado. Pois, apenas a instalação das ferramentas não é o suficiente para trabalho, por isso o arquivo init.el deve ser editado. Essa configuração será exibida na parte 2 do tutorial.
O que você aprendeu
- Uma introdução sobre o Emacs.
- O básico sobre o arquivo de configuração do Emacs.
- A instalação de pacotes Emacs e Python para criar o IDE uma breve descrição sobre eles.
Continua em Transformando Emacs em um IDE Python - Parte 2.
Referências
EMACSWIKI: Novato no Emacs. Disponível em <https://www.emacswiki.org/emacs/NovatoNoEmacs>. Acesso em 15 jan. 2019.
GITHUB. All-the-icons. Disponível em <https://github.com/domtronn/all-the-icons.el>. Acesso em 15 jan. 2019.
GITHUB. Elpy. Disponível em <https://github.com/jorgenschaefer/elpy>. Acesso em 15 jan. 2019.
GITHUB. Emacs doom themes. Disponível em <https://github.com/hlissner/emacs-doom-themes>. Acesso em 15 jan. 2019.
GITHUB. Emacs jedi. Disponível em <https://github.com/tkf/emacs-jedi>. Acesso em 15 jan. 2019.
GITHUB. Emacs neotree. Disponível em <https://github.com/jaypei/emacs-neotree>. Acesso em 15 jan. 2019.
GITHUB. Expand region. Disponível em <https://github.com/magnars/expand-region.el>. Acesso em 15 jan. 2019.
GITHUB. Ropemacs. Disponível em <https://github.com/python-rope/ropemacs>. Acesso em 15 jan. 2019.
GITHUB. Yapf. Disponível em <https://github.com/google/yapf>. Acesso em 15 jan. 2019.
GNU. GNU Emacs. Disponível em <https://www.gnu.org/software/emacs/download.html>. Acesso em 15 jan. 2019.
GNU. EMACS: The Extensible, Customizable Display Editor. Disponível em <https://www.gnu.org/software/emacs/emacs-paper.html#SEC24>. Acesso em 15 jan. 2019.
GNU. My Lisp Experiences and the Development of GNU Emacs. Disponível em <https://www.gnu.org/gnu/rms-lisp.html>. Acesso em 15 jan. 2019.
PYPI. Autopep8. Disponível em <https://pypi.org/project/autopep8/>. Acesso em 15 jan. 2019.
PYPI. Flake8. Disponível em <https://pypi.org/project/flake8/>. Acesso em 15 jan. 2019.
PYPI. Mccabe. Disponível em <https://pypi.org/project/mccabe/>. Acesso em 15 jan. 2019.
PYPI. Pycodestyle. Disponível em <https://pypi.org/project/pycodestyle/>. Acesso em 15 jan. 2019.
PYPI. Pyflakes. Disponível em <https://pypi.org/project/pyflakes/>. Acesso em 15 jan. 2019.
Para citar esse artigo:
Comentários
Postar um comentário