Configurando o Emacs para desenvolvimento em Swift


O GNU Emacs é um editor de texto altamente personalizável, que teve origem como um pacote de macros para o editor TECO da Digital Equipment Corporation.
Vários editores semelhantes ao Emacs e derivados surgiram ao longo dos anos, mas este guia foca no GNU Emacs.
Este guia mostra como configurar uma nova instalação do Emacs para desenvolvimento com a linguagem de programação Swift.
Este guia assume que você já instalou a linguagem de programação Swift.
Instalando o Emacs
macOS
O site Emacs for Mac OS X fornece binários universais em uma imagem de disco padrão do macOS.
Basta baixar o arquivo, abri-la e arrastar o aplicativo para a pasta Aplicativos.
Microsoft Windows
MSYS2
pacman -S mingw-w64-x86_64-emacs
Instalador
O instalador do GNU Emacs para Windows pode ser baixados através do link:
Debian (Ubuntu)
sudo apt install \
emacs
Se estiver usando um sistema sem interface gráfica (GUI), como servidores ou contêineres, use:
sudo apt install \
emacs-nox
RedHat (RHEL, CentOS, Fedora)
sudo dnf install \
emacs
Em versões antigas, pode ser necessário usar
yum
em vez dednf
.
Configurando o Emacs
Usuários antigos do Emacs podem lembrar de instalar pacotes Lisp manualmente.
Hoje em dia, o melhor é usar um gerenciador de pacotes.
Vamos configurar o MELPA, um repositório popular de pacotes para Emacs.
Abra o Emacs, pressione C-x C-f
, digite ~/.emacs
e pressione Enter. Adicione o seguinte conteúdo:
;;; Adiciona o MELPA como fonte de pacotes
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
Agora, vamos instalar o use-package
, que simplifica a instalação e organização dos pacotes:
;;; Inicializa o `use-package`
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
Em seguida, adicionamos uma função para localizar o sourcekit-lsp
:
;;; Localiza o sourcekit-lsp
(defun find-sourcekit-lsp ()
(or (executable-find "sourcekit-lsp")
(and (eq system-type 'darwin)
(string-trim (shell-command-to-string "xcrun -f sourcekit-lsp")))
"/usr/local/swift/usr/bin/sourcekit-lsp"))
Agora, instale os pacotes necessários para desenvolvimento com Swift:
;;; Pacotes úteis para desenvolvimento em Swift
;; Suporte a arquivos .editorconfig
(use-package editorconfig
:ensure t
:config (editorconfig-mode +1))
;; Suporte à edição de código Swift
(use-package swift-mode
:ensure t
:mode "\\.swift\\'"
:interpreter "swift")
;; Delimitadores coloridos (parênteses, colchetes, etc.)
(use-package rainbow-delimiters
:ensure t
:hook ((prog-mode . rainbow-delimiters-mode)))
;; Autocompletar com company-mode
(use-package company
:ensure t
:config
(global-company-mode +1))
;; Integração com Swift LSP
(use-package lsp-mode
:ensure t
:commands lsp
:hook ((swift-mode . lsp)))
;; Interface para lsp-mode
(use-package lsp-ui
:ensure t)
;; Suporte ao sourcekit-lsp
(use-package lsp-sourcekit
:ensure t
:after lsp-mode
:custom
(lsp-sourcekit-executable (find-sourcekit-lsp) "Find sourcekit-lsp"))
Adicionalmente, instale alguns pacotes para melhorar a aparência:
;; Powerline
(use-package powerline
:ensure t
:config
(powerline-default-theme))
;; Spaceline
(use-package spaceline
:ensure t
:after powerline
:config
(spaceline-emacs-theme))
Caso queira desabilite a tela inicial e a barra de ferramentas:
;;; Desativa a tela de início
(setq inhibit-startup-screen t)
;;; Desativa a barra de ferramentas
(tool-bar-mode -1)
Salve seu arquivo .emacs
com C-x C-s
e reinicie o Emacs.
Conclusão
Configuramos o Emacs para editar código Swift, com realce de sintaxe, integração com o SourceKit-LSP, suporte a boas práticas modernas como .editorconfig
, e uma interface moderna com Powerline e Spaceline.
Arquivo .emacs
completo
;;; Adiciona o MELPA como fonte de pacotes
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
;;; Inicializa o `use-package`
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
;;; Localiza o sourcekit-lsp
(defun find-sourcekit-lsp ()
(or (executable-find "sourcekit-lsp")
(and (eq system-type 'darwin)
(string-trim (shell-command-to-string "xcrun -f sourcekit-lsp")))
"/usr/local/swift/usr/bin/sourcekit-lsp"))
;;; Pacotes úteis para desenvolvimento em Swift
(use-package editorconfig
:ensure t
:config (editorconfig-mode +1))
(use-package swift-mode
:ensure t
:mode "\\.swift\\'"
:interpreter "swift")
(use-package rainbow-delimiters
:ensure t
:hook ((prog-mode . rainbow-delimiters-mode)))
(use-package company
:ensure t
:config
(global-company-mode +1))
(use-package lsp-mode
:ensure t
:commands lsp
:hook ((swift-mode . lsp)))
(use-package lsp-ui
:ensure t)
(use-package lsp-sourcekit
:ensure t
:after lsp-mode
:custom
(lsp-sourcekit-executable (find-sourcekit-lsp) "Find sourcekit-lsp"))
(use-package powerline
:ensure t
:config
(powerline-default-theme))
(use-package spaceline
:ensure t
:after powerline
:config
(spaceline-emacs-theme))
(setq inhibit-startup-screen t)
(tool-bar-mode -1)
Subscribe to my newsletter
Read articles from Renato Cruz directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
