¿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:
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)
Arrancamos el servidor, de manera que luego podamos abrir un fichero desde otra terminal:
;; Server
(server-start)
$ emacsclient -n .bashrc
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)
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)
- 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)
Mi configuración al final ha quedado así:
Top comments (0)