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

1 1

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

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up