Spacemacs y Elixir

Como configurar el entorno de desarrollo para Elixir

Wed, 22 Jul 2020

Cuando se empieza a trabajar con un lenguaje de programación, se suele buscar un editor que nos facilite la vida. En Elixir una de las configuraciones más comunes es usar Spacemacs y Alchemist. A continuación describo los pasos que he seguido para instalar ambos usando la guía que se ha publicado en el foro de elixir.

iver.mx

Instalación

Lo primero es instalar Emacs, después Spacemacs y por último la capa de Elixir.

1. Instalando Emacs

Aquí están las instrucciones para OS X (de su wiki). Para otras plataformas se puede consultar la página del proyecto. Instalación habitual de Emacs:

$ brew update
$ brew install emacs --with-cocoa
$ brew linkapps emacs

O bien, la instalación recomendada de SpaceMacs:

$ brew tap d12frosted/emacs-plus
$ brew install emacs-plus
$ brew linkapps emacs-plus

2. Instalando Spacemacs

Si previamente has usado emacs lo mejor es respaldar tu directorio ~/.emacs.d

$ mv ~/.emacs.d ~/.emacs.backup
$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

Ahora se puede iniciar Emacs y dejar que se instale todo. Después hay que reiniciar y la configuración de Spacemacs se activará. Hay que seleccionar el modo VIM cuando sea requerido.

3. Agregar la capa de Elixir

En el archivo ~ / .spacemacs, y en dotspacemacs-configuration-layers se agrega elixir. Se debe ver más o menos así:

dotspacemacs-configuration-layers
   '(
     ruby
     ;; ----------------------------------------------------------------
     ;; Example of useful layers you may want to use right away.
     ;; Uncomment some layer names and press <SPC f e R> (Vim style) or
     ;; <M-m f e R> (Emacs style) to install them.
     ;; ----------------------------------------------------------------
     helm
     ;; auto-completion
     ;; better-defaults
     emacs-lisp
     ;; git
     ;; markdown
     ;; org
     ;; (shell :variables
     ;;        shell-default-height 30
     ;;        shell-default-position 'bottom)
     ;; spell-checking
     ;; syntax-checking
     ;; version-control
     elixir
     )

Si se reinicia SpaceMacs se instalará todo. En lo personal prefiero recargar la configuración usando SPC f e R.

4. Instalar Ack ó Ag

Son herramientas recomendadas para aumentar la velocidad de búsqueda.

  • Ack es una herramienta como grep, optimizada para programadores.
  • Ag es como Ack, pero afirma ser 5-10 veces más rápido.

5. [Opcional]

Habilitar el desplazamiento suave (smooth scrolling), NeoTree a la derecha y restauración de sesión.

Para esto hay que agregar las últimas 5 líneas en la configuración de usuario (defun dotspacemacs/user-config () que debe quedar como:

(defun dotspacemacs/user-config ()
  "Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place your code here."
  ;; scroll one line at a time (less "jumpy" than defaults)
  (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
  (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
  (setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
  (setq scroll-step 1) ;; keyboard scroll one line at a time
  )

NeoTree en el lado derecho

Para que NeoTree SPC f t se abra en el lado derecho se agrega: '(neo-window-position (quote right)) en las variables (custom-set-variables) dentro del archivo .spacemacs (luego se reinicia o bien, se recarga la configuración).

Restaurar sesión

Se asigna dotspacemacs-auto-resume-layouts a t en el archivo .spacemacs; esto restaurará la sesión cuando se abra SpaceMacs.

6. Para usuarios de Mac

Agregando una fuente

La fuente predeterminada no parece ser una incluida con OS X, en el archivo .spacemacs (desde SpaceMacs SPC f e d) y en dotspacemacs-default-font cambiar la fuente a "Menlo" y el tamaño a 12.

El shell en Emacs

Para que Emacs respete el archivo ~/.bash_profile se debe instalar exec-path-from-shell. Se puede usar SPC SPC package-install y después ingresar exec-path-from-shell.

Después se abre o crea el archivo .bashrc y al final se debe escribir . ~/.bash_profile.

Documentación

Donde empezar con Spacemacs

Instalando paquetes

Los paquetes se installan con Melpa, el Administrador de paquetes de Emacs. Se puede verificar si un paquete ya está instalado con SPC h SPC seguido del nombre del paquete.

  • Si se desea agregar una capa (layer), se debe agregar a la lista de layers en el archivo .spacemacs y reiniciar.
  • Si es un paquete se puede instalar con SPC SPC <package name> RET

La mayoría de los paquetes están en Melpa e incluidos por SpaceMacs, pero si no, se puede agregar el nombre del paquete a dotspacemacs-optional-packages y reiniciar.

Consejos rápidos con Spacemacs

Abrir y recargar configuración

  • Abrir el archivo .spacemacs desde SpaceMacs con SPC f e d
  • Después de hacer cambios en el archivo .spacemacs, se puede usar SPC f e R para recargar la configuración.
  • En ocasiones basta con recargar la configuración pero a veces se necesita reiniciar la aplicación con SPC q r

Búsqueda, visualización de documentos y misceláneos

  • SPC h SPC para abrir la documentación
  • Para buscar información de una función de Emacs SPC h d f <function-name> RETORNO, por ejemplo, SPC h d f what-cursor-position RETURN
  • Cuando en algún lado se lee algo como M-x <comando>, quiere decir que se debe presionar SPC SPC y luego escribir .
  • , es la tecla líder, cuando se hace referencia a SPC m <algo> se puede usar , <algo>.

Búsqueda

  • SPC p p - Muestra proyectos abierto previamente
  • SPC p f - Buscar archivo en el proyecto
  • SPC s s - Búsqueda en picada Swoop search (búsqueda en archivo) habitualmente en vim /
  • SPC f f - Buscar archivo, búsqueda difusa (),
  • SPC f r - Encuentra/muestra archivos recientes
  • SPC / - Buscar patrón (texto) en un archivo abierto (atajo de SPC s p)
  • SPC * - Igual que SPC / pero busca lo que está debajo del cursor. Si necesita buscar un término exacto, por ejemplo escapar espacios: SPC / see \ the \ posts
  • SPC s a p buscar patrón (texto) en el proyecto

Ventanas

  • SPC w s divide la ventana SPC w v la divide verticalmente
  • SPC w d eliminar/cerrar ventana (o Command W en OS X)

Buffers

  • SPC b b lista los buffers
  • SPC TAB va al último buffer

NeoTree

  • SPC f t abre NeoTree
  • SPC 0 selecciona la ventana de NeoTree
  • SPC 1 selecciona la ventana (1)

Shell

  • SPC ' abre la terminal (en el directorio donde se encuentra el archivo actual)
  • SPC p ' abre la terminal en la raíz del proyecto

Comentar / Descomentar

  • g c c or SPC c l comenta/descomenta una línea
  • g c 3 j comenta 3 líneas para abajo
  • g c 3 k comenta 3 líneas para arriba
  • v selecciona el código (y después g c)

Más Referencias

Tutoriales de Spacemacs

Publicaciones en blogs

Temas de Spacemacs

SpaceMacs Gitter Chat

Solucionando de problemas

  • Si existe algún aviso (warning) al inicio, con SPC b b se listan los buffers y después con Messages.

Alchemist Elixir

Alchemist docs

Loading...
Iván Jaimes

Iván Jaimes Padre, esposo y desarrollador de software. Programa en go y elixir (por gusto), js (por necesidad) y shell (por diversión).