DEV Community

Cover image for Configurar Emacs usando Doom
César M. Cristóbal for CallePuzzle Dev

Posted on Originally published at dev.callepuzzle.com

Configurar Emacs usando Doom

¿Por qué Emacs?

Emacs fue el primer IDE que aprendí a usar, por aquel entonces todos programábamos en la misma máquina conectándonos por ssh.

Más tarde nos "modernizamos" y empezamos a usar PhpStorm. Así que cuando dejé Php de lado y empecé a programar en Terraform, Ansible y Python, opté por usar PyCharm ya que es un productor de la misma compañía y el cambio iba a ser más sencillo.

Ahora bien el mundo JetBrains tiene su pega, para cada lenguaje necesitas un maldito editor distinto, y cuando empecé a hacer cosillas en Go me negué a instalar otro más.

Vale, Emacs mola mucho y todo lo que tu quieras pero configurarlo es un dolor. Por eso opté por probar Doom.

Doom

Doom es un framework para configurar Emacs.

Básicamente nuestra configuración se guarda en ~/.doom.d/ donde tenemos tres ficheros:

  • init.el: desde el cual activas o desactivas extensiones
  • packages.el: desde el que puedes instalar paquetes de MELPA, ELPA o emacsmirror
  • config.el: donde va tu configuración personal

y ejecutando ~/.emacs.d/bin/doom sync se generará nuestra configuración en ~/.emacs.d/.

Instalación

Seguimos los pasos del getting started y al arrancar por primera vez Emacs veremos algo como esto:

Primera carga de Emacs con Doom

Configuración

Después de jugar un poco me di cuenta de que había demasiados paquetes instalados que hacían demasiadas cosas que no sabía usar y me “estorbaban”.

Me habían aconsejado fuertemente que probase la extensión evil pero de momento prefiero el modo de edición de emacs “puro”. Me quedo sin galletas :(

Así que comenté las siguientes extensiones:

  • evil +everywhere
  • +bindings +smartparens

Además de los lenguajes que fuese a utilizar.
Añadimos la configuración para borrar los espacios en blanco al guardar:

;; Hooks
(add-hook ‘before-save-hook ‘delete-trailing-whitespace)
Enter fullscreen mode Exit fullscreen mode

Arrancamos el servidor, de manera que luego podamos abrir un fichero desde otra terminal:

;; Server
(server-start)

$ emacsclient -n .bashrc
Enter fullscreen mode Exit fullscreen mode

Añadimos keybindings que para mí son necesarios:

;; Keybindings
(global-set-key “\M-p” ‘backward-paragraph)
(global-set-key “\M-n” ‘forward-paragraph)
(global-set-key (kbd “C-7”) ‘undo)
(global-set-key (kbd “C-x p”) ‘counsel-projectile-switch-project)
Enter fullscreen mode Exit fullscreen mode

Y con esto ya estaría para funcionar.

Autocompletado

Company ya viene por defecto y en principio con activar lsp sería suficiente. Aunque esta parte aún la tengo algo verde y hay cosas que no terminan de ir fino.

NeoTree

Es una extensión para ver el árbol de ficheros y directorios de un proyecto. Para activarlo con su extensión de iconos hay que realizar los siguientes cambios:

  • instalar “all-the-icons”
(package! all-the-icons)
Enter fullscreen mode Exit fullscreen mode
  • descomentar “neotree” del init.el
  • añadir la siguiente configuración:
;; NeoTree
(setq neo-theme (if (display-graphic-p) ‘icons ‘arrow))
(global-set-key (kbd “C-x t”) ‘neotree-show)
(setq projectile-switch-project-action ‘neotree-projectile-action)
Enter fullscreen mode Exit fullscreen mode

Mi configuración al final ha quedado así:

Ver repositorio en GitHub

Top comments (0)