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)