Na parte 1 do tutorial você aprendeu como instalar os pacotes necessários para a construção do IDE Python. Nesse artigo, você será introduzido a uma configuração básica que te ajudará no uso do IDE.
Use esse trecho de código e cole em seu init.el:
Para ficar claro o que foi feito:
Para ver a documentação de uma função ou variável, execute C-h o RET sobre ela.
Com o buffer do seu init.el aberto, execute eval-buffer RET. Note que as configurações foram aplicadas. Ou pode recarregar o arquivo a partir de qualquer buffer executando o comando load-file RET ~/.emacs.d/init.el RET.
Juntamente aos pacotes que foram instalados, algumas configurações podem ser feitas para o ambiente de desenvolvimento. Use esse código:
Explicação do código acima:
O último comando configura o interpretador Python para o ipython, mas pode ser simplesmente "python" e o argumento "-i", caso opte por este.
Caso tenha instalado o pacote de temas e ícones, pode carregá-los também. Adicione esse trecho de código:
Cole o seguinte código:
Funções:
Se preferir, também pode definir uma configuração de atalhos para redimensionamento de janelas:
Opcionalmente, caso tenha instalado o Neotree, pode adicionar essas linhas de código:
Lembrando que todos esses atalhos são customizáveis e ficam ao seu critério adaptá-los.
Essas foram as configurações básicas de atalho e preferências. Com acesso a documentação da descrição (também disponível para leitura pelo artigo), você pode criar sua própria configuração e instalar seus próprios pacotes assim como também customizar atalhos. Há mais de 4.000 pacotes para uso se somados Elpa e MELPA. Vale a pena pesquisar e ler também o init file de outros usuários do Emacs.
No final, seu init.el deve se parecer aproximadamente assim:
Continuação de Transformando Emacs em um IDE Python parte 1.
Continua em Transformando Emacs em um IDE Python - Parte 3 (final).
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:
Configurando Emacs como Python IDE |
Esse é um resumo dos procedimentos que serão realizados. Também é importante ressaltar que os dois primeiros tópicos já foram abordados no artigo anterior:
- 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
Configurando Preferências
É possível instalar uma gama enorme de pacotes e realizar diversas configurações nessa etapa. Como o foco é manter uma configuração básica (e, talvez, mínima), o artigo seguirá esse escopo restritivo mas você poderá pesquisar novas configurações.
Use esse trecho de código e cole em seu init.el:
;; ################# Preferences ######################
(tool-bar-mode -1)
(menu-bar-mode -1)
(toggle-scroll-bar -1)
(setq inhibit-startup-screen t)
(global-linum-mode t)
(setq column-number-mode t)
(setq-default tab-width 4)
(electric-pair-mode 1)
(put 'narrow-to-region 'disabled nil)
(show-paren-mode 1)
(require 'paren)
(set-face-background 'show-paren-match (face-background 'default))
(set-face-foreground 'show-paren-match "#68ACEE")
(set-face-attribute 'show-paren-match nil :weight 'extra-bold)
Para ficar claro o que foi feito:
- tool-bar-mode: quando recebe o valor -1, ele oculta a barra de ferramentas.
- menu-bar-mode: o mesmo comportamento que tool-bar, mas oculta a barra de menu.
- toggle-scroll-bar: oculta a barra de rolagem.
- inhibit-startup-screen: quando verdadeiro, oculta a tela de boas-vindas do Emacs.
- global-linum-mode: exibe a numeração de linhas no canto esquerdo da tela.
- column-number-mode: quando verdadeiro, exibe o número de colunas onde o cursor se posicionar.
- tab-width: configura a tabulação para 4 espaços (recomendação PEP8).
- electric-pair-mode: autocompleta símbolos como " ' “” ‘’ () {} [] «» ‹› 「」.
- narrow-to-region: habilita editar um trecho de código separadamente do resto do conteúdo do arquivo.
- show-paren-mode: destaca símbolos pares como () {} [] ...
- show-paren-match: está sendo utilizado para definir a cor dos símbolos pares.
Para ver a documentação de uma função ou variável, execute C-h o RET sobre ela.
- Para ver o índice de variáveis padrão do Emacs, clique aqui.
- Para ver o índice de comandos padrão do Emacs, clique aqui.
Com o buffer do seu init.el aberto, execute eval-buffer RET. Note que as configurações foram aplicadas. Ou pode recarregar o arquivo a partir de qualquer buffer executando o comando load-file RET ~/.emacs.d/init.el RET.
Juntamente aos pacotes que foram instalados, algumas configurações podem ser feitas para o ambiente de desenvolvimento. Use esse código:
;; ################# Python Preferences ###############
(elpy-enable)
(yas-global-mode 1)
(setq highlight-indentation-blank-lines t)
(set-face-background 'highlight-indentation-face "#373A40")
(set-face-background 'highlight-indentation-current-column-face "#949da8")
(yafolding-mode 1)
(setq python-shell-interpreter "ipython"
python-shell-interpreter-args "-i --simple-prompt")
Explicação do código acima:
- elpy-enable: essa função ativa o Elpy, anteriormente instalado.
- yas-global-mode: ativa o YASnippet para uso no Emacs.
- highlight-indentation-blank-lines: quando verdadeiro, permite visualizar a indentação de blocos.
- yafolding-mode: permite exibir ou ocultar um bloco de código.
O último comando configura o interpretador Python para o ipython, mas pode ser simplesmente "python" e o argumento "-i", caso opte por este.
- Veja esse trecho da documentação do Elpy para mais informações.
Caso tenha instalado o pacote de temas e ícones, pode carregá-los também. Adicione esse trecho de código:
;; ################# Themes ###########################
(require 'doom-themes)
(load-theme 'doom-one t)
;; ################# Icons ############################
(require 'all-the-icons)
Configuração de Atalhos
A configuração de atalhos é importante para acessar facilmente alguns recursos dos pacotes que foram instalados. É importante, também, que essa configuração não entre em conflito com a de atalhos personalizados ou atalhos que são definidos como padrão.- Você pode ver a lista de atalhos padrões aqui.
Cole o seguinte código:
;; ################# Custom Shortcuts #################
(global-set-key (kbd "C-c k") 'yas-expand)
(global-set-key (kbd "C-<enter>") 'elpy-goto-definition)
(global-set-key (kbd "C-S-<enter>") 'elpy-goto-definition-other-window)
(global-set-key (kbd "C-=") 'er/expand-region)
(global-set-key (kbd "C-x C-/") 'yafolding-toggle-element)
Funções:
- yas-expand: completa blocos de códigos.
- elpy-goto-definition: permite inspecionar a definição de um objeto.
- elpy-goto-definition-other-window: o mesmo que o de cima, mas em uma outra janela.
- er/expand-region: permite expandir a seleção de uma região.
- yafolding-toggle-element: permite ocultar ou exibir um bloco de código.
Se preferir, também pode definir uma configuração de atalhos para redimensionamento de janelas:
;; ################# Window Shortcuts #################
(global-set-key (kbd "S-C-<left>") 'shrink-window-horizontally)
(global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally)
(global-set-key (kbd "S-C-<up>") 'shrink-window)
(global-set-key (kbd "S-C-<down>") 'enlarge-window)
Opcionalmente, caso tenha instalado o Neotree, pode adicionar essas linhas de código:
;; ################# File Explorer Menu ##############
(require 'neotree)
(global-set-key (kbd "C-x C-5") 'neotree-toggle)
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))
(setq neo-window-fixed-size nil)
Lembrando que todos esses atalhos são customizáveis e ficam ao seu critério adaptá-los.
Essas foram as configurações básicas de atalho e preferências. Com acesso a documentação da descrição (também disponível para leitura pelo artigo), você pode criar sua própria configuração e instalar seus próprios pacotes assim como também customizar atalhos. Há mais de 4.000 pacotes para uso se somados Elpa e MELPA. Vale a pena pesquisar e ler também o init file de outros usuários do Emacs.
No final, seu init.el deve se parecer aproximadamente assim:
;; Autociência 2019 - Criando uma IDE Python
(package-initialize)
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
;; ################# Themes ###########################
(require 'doom-themes)
(load-theme 'doom-one t)
;; ################# Icons ############################
(require 'all-the-icons)
;; ################# File Explorer Menu ##############
(require 'neotree)
(global-set-key (kbd "C-x C-5") 'neotree-toggle)
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))
(setq neo-window-fixed-size nil)
;; ################# Preferences ######################
(tool-bar-mode -1)
(menu-bar-mode -1)
(toggle-scroll-bar -1)
(setq inhibit-startup-screen t)
(global-linum-mode t)
(setq column-number-mode t)
(setq-default tab-width 4)
(electric-pair-mode 1)
(put 'narrow-to-region 'disabled nil)
(show-paren-mode 1)
(require 'paren)
(set-face-background 'show-paren-match (face-background 'default))
(set-face-foreground 'show-paren-match "#68ACEE")
(set-face-attribute 'show-paren-match nil :weight 'extra-bold)
;; ################# Python Preferences ###############
(elpy-enable)
(yas-global-mode 1)
(setq highlight-indentation-blank-lines t)
(set-face-background 'highlight-indentation-face "#373A40")
(set-face-background 'highlight-indentation-current-column-face "#949da8")
(yafolding-mode 1)
(setq python-shell-interpreter "ipython"
python-shell-interpreter-args "-i --simple-prompt")
;; ################# Custom Shortcuts #################
(global-set-key (kbd "C-c k") 'yas-expand)
(global-set-key (kbd "C-<enter>") 'elpy-goto-definition)
(global-set-key (kbd "C-S-<enter>") 'elpy-goto-definition-other-window)
(global-set-key (kbd "C-=") 'er/expand-region)
(global-set-key (kbd "C-x C-/") 'yafolding-toggle-element)
;; ################# Window Shortcuts #################
(global-set-key (kbd "S-C-<left>") 'shrink-window-horizontally)
(global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally)
(global-set-key (kbd "S-C-<up>") 'shrink-window)
(global-set-key (kbd "S-C-<down>") 'enlarge-window)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(package-selected-packages
(quote
(yasnippet-classic-snippets yafolding neotree markdown-mode json-mode hydra flymd expand-region elpy doom-themes))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
O que você aprendeu
Você pode configurar o seu editor GNU Emacs para edição de códigos em Python. Agora resta usá-lo e testá-lo. Você aprendeu, especificamente:- Realizar configurações padrões do Emacs.
- Realizar a configuração de alguns pacotes instalados.
- Configurar atalhos customizados.
Continuação de Transformando Emacs em um IDE Python parte 1.
Continua em Transformando Emacs em um IDE Python - Parte 3 (final).
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