Archivo: Emacs | Picando Código
Grupos y capturas reemplazando texto con expresiones regulares
Las expresiones regulares nos permiten agrupar patrones y "capturarlos". Luego podemos usar el valor de esos grupos con "back references" (¿referencias posteriores?). Últimamente vengo usando cada vez más replace-regexp en Emacs y aprovechando que tuve que hacer uso de estas características, lo comparto por acá. Estaba editando código Ruby y dado un Array de Hashes, quería reemplazar todas las llaves en los Hashes del tipo String a Symbol: { "nombre": "Fernando" } => { nombre: "Fernando" } En Emacs, al presionar Alt x - replace-regexp Enter entramos a un mini-buffer donde tenemos que ingresar una expresión regular. Lo que quería […]
10 años de emacs.sexy
Esta semana se cumplen 10 años desde que registré el dominio y publiqué el sitio web emacs.sexy. Se ve que 2014 fue un año bastante ocupado en cuanto a proyectos personales... En su momento escribí en el blog al respecto en Emacs es Sexy. Como comentaba originalmente, el sitio surgió como respuesta a vim.sexy, pero con un objetivo un poco más productivo: Con la disponibilidad de los nuevos TLD .sexy, hace poco salió en La Internet el sitio vim.sexy. Tiene pinta de ser una respuesta paródica al editor de texto hipster del momento Atom. Pero mi problema era: Si bien […]
Piques Emacs: Usar Tramp para abrir un archivo con su/sudo
Cada tanto me olvido de la sintaxis exacta de este comando, así que lo publico acá. Emacs incluye TRAMP (Transparent Remote Access, Multiple Protocols), un paquete para editar archivos remotos. TRAMP nos permite también abrir archivos en nuestra computadora usando su o sudo. La sintaxis: C-x C-f /sudo:: Al ejecutar esto, Tramp nos presenta un diálogo en el mini-buffer para ingresar password: Y de ahí podemos empezar a navegar nuestro sistema y abrir cualquier archivo bajo sudo (o su). Tramp permite conectarnos a otros protocolos como ssh o ftp. Más información sobre TRAMP.
Mini pique - Emacs: ver la diferencia entre el buffer abierto y el archivo correspondiente
A veces al editar un archivo en Emacs, éste cambia en el disco (por ejemplo porque hicimos git pull o cambiamos de rama de desarrollo). Emacs nos avisa y nos pregunta si queremos editarlo a pesar de los cambios. Una forma de ver los cambios entre el buffer que estamos editando y el archivo en sí, es ejecutar: M-x diff-buffer-with-file El comando diff-buffer-with-file compara un buffer especificado con su archivo correspondiente. Es una función interactiva auto cargada de Lisp en diff.el. Requiere el programa diff instalado en nuestro path de ejecución.
Mini Pique: Ejecutar Emacs sin cargar los archivos de inicialización
Cuando Emacs inicia, intenta cargar un programa Lisp de un archivo de inicialización (o archivos init). Generalmente se usa ~/.emacs.d/init.el o el directorio ~/.emacs. A veces metiendo mano en este archivo podemos romper algo, y al iniciar Emacs nuevamente alguna cosa puede no funcionar como antes. En esos casos puede resultar conveniente ejecutar Emacs sin cargar nuestros archivos de inicialización. Para eso podemos usar el parámetro -q o --no-init-file: $ emacs -q Más información: Emacs Initial Options
Crux - una colección de extensiones ridículamente útiles para Emacs
CRUX, la colección de extensiones ridículamente útiles para Emacs empezó como una serie de blog posts en Emacs Redux, Emacs Redux es un blog dedicado a Emacs escrito por Bozhidar Batsov (también conocido por Rubocop y más proyectos open source). En él, publica trucos y recomendaciones sobre Emacs, lectura recomendada. Más adelante éstas funciones fueron incluidas en Emacs Prelude, distribución de Emacs de la que escribí en este post. y eventualmente extraídas a crux. Crux está disponible en los repositorios MELPA Stable y MELPA, se recomienda usar MELPA Stable que contiene la versión estable más nueva. La versión de MELPA […]
Cómo empezar con Emacs: Distribuciones
Un hecho de empezar a usar Emacs es que la experiencia inicial para quienes lo prueban por primera vez puede ser un poco intimidante. Ha habido algo de discusión recientemente sobre si las opciones por defecto son suficentemente amigables o esperadas, y que Emacs debería incluir algunas configuraciones y paquetes por defecto que hagan una mejor experiencia. Si bien esta discusión sigue su camino, hay una alternativa: distribuciones. Las distribuciones de Emacs se pueden comparar con las distribuciones GNU/Linux. Son conjuntos de scripts, paquetes y configuraciones que podemos usar en nuestro perfil para tener una experiencia de usuario predeterminada por […]
Paquete para Emacs: helm-icons
Actualización 20/07/2020: El paquete ha sido renombrado de helm-treemacs-icons a helm-icons y está disponible en MELPA. Así que actualicé la información del post para reflejar el cambio. Hace un tiempo me encontré con este paquete para Emacs que me resultó sumamente útil. Integra helm, el sistema que uso para cambiar de buffers o archivos, con treemacs (y treemacs-icons), el sistema que muestra íconos en el árbol de archivos de un proyecto. De esta forma, podemos ver los íconos de los archivos cuando estamos usando helm para cambiar de buffer. Esto hace mucho más práctico el cambio de buffers y la […]
Piques Emacs: Contar líneas, palabras y caracteres de una región
En Emacs al seleccionar una región, Alt = nos muestra información de las líneas, palabras y caracteres de la selección: El atajo de teclado llama a la función count-words-region. Ésta función sólo cuenta los caracteres dentro de la región. Así que si no hay una región seleccionada, nos va a dar 0 como resultado. Otra función que podemos usar para contar el buffer entero es count-words, que funciona tanto para una región como para un buffer sin regiones. Como resulta más práctica, terminé reemplazando count-words-region con count-words en mi archivo de keybindings: (global-set-key (kbd "M-=")'count-words)
Piques Emacs: mantener el límite de caracteres por cada línea
Dependiendo el contexto podemos querer un límite de 80, 100, 120 caracteres por línea. Por ejemplo en algunos proyectos se sugiere usar un límite de 50 caracteres para el mensaje de un commit en Git. Emacs tiene un modo para mantener el límite de caracteres en cada línea que escribimos: auto-fill-mode. Al activarlo, Emacs se va a encargar automáticamente de mantener cada línea dentro del límite establecido: El límite depende de la variable fill-column de Emacs. Para leer más al respecto podemos usar el comando de Emacs describe-variable e ingresar fill-column. Emacs nos cuenta que es una variable definida […]
¡Disponibles los videos de EmacsConf 2019!
Ya están disponibles los videos de EmacsConf 2019, realizada el pasado 2 de noviembre. Podemos ver los videos en la página de EmacsConf 2019, alojados en un servidor del Computer Science Club de la Universidad de Waterloo. También fueron subidos a toobnix.org, una instancia de PeerTube (red descentralizada de almacenamiento de video, basada en Software Libre). Pueden ver los videos también ahí a través de éste enlace y explorar el playlist "EmacsConf 2019". Personalmente vi alguna de las charlas, pero seguramente repase otras de las que quería ver y me perdí. Hay videos de 31 de las 32 charlas agendadas […]
Piques Emacs: Conocer el valor de una variable
Al ser un editor de texto extensible y auto-documentado, existen muchas variables en Emacs que el usuario puede cambiar. Esto son variables Elisp -el Lisp de Emacs-, símbolos que guardan un valor. Generalmente el nombre de la variable consiste de palabras en inglés separadas por guiones que describen su rol. La mayoría también cuentan con documentación que describe su propósito y utilidad. Para leer información de una variable y conocer su valor, podemos usar el comando describe-variable que podemos ejecutar de las siguientes maneras: C-h v Alt x para ejecutar comandos en el mini-buffer e ingresamos describe-variable (podemos usar Tab […]
Piques Emacs: enlaces simbólicos
Cuando intentamos abrir un enlace simbólico en Emacs, nos pregunta: Symbolic link to Git-controller source file; follow link? (y or n) Tengo mis archivos de configuración, o dotfiles (.spacemacs, .bashrc, etc), como enlaces simbólicos a proyectos bajo control de versiones. Así puedo ir gestionándolos a medida que les hago mejoras o agrego cosas, y puedo compartir la misma configuración en distintas computadoras. Esto se gestiona en el paquete de control de versiones vc, en la variable vc-follow-symlinks. Su valor por defecto es ask, por lo que el sistema nos va a preguntar qué hacer. Si respondemos que no, editamos el […]
Spacemacs: entorno integrado eficiente y sofisticado para Emacs
Desde hace unos 2 años vengo usando Spacemacs como editor de texto para programar, escribir y más. Lo he mencionado varias veces en el blog particularmente en posts sobre Emacs, pero nunca escribí al respecto. Es un proyecto que me ha dado mucho y me gustaría compartir lo que he aprendido, y con suerte animar a alguien más a probar Spacemacs. Así que ¡hablemos de Spacemacs! ¿Qué es Spacemacs? Spacemacs es una "distribución" de Emacs. Emacs es un editor de texto extensible y personalizable. Cada uno puede crear su propia "distribución" agregando funciones, paquetes y distintas configuraciones en archivos Elisp […]
Emacs Boostrap: Entornos de desarrollo para Emacs al vuelo
Emacs Bootstrap es un sitio que te permite generar entornos de desarrollo en Emacs para distintos lenguajes de programación: Python, Ruby, Go, PHP, JavaScript, Web, Haskell, Elixir, Rust, Racket y C. Desde la página elegimos qué lenguages queremos usar con Emacs y va a generar las configuraciones necesarias para empezar a escribir código. También nos permite elegir entre 3 temas distintos: solarized-emacs, zenburn-emacs y spacemacs y qué motor de autocompletado preferimos entre ivy y helm. Esto nos genera un archivo con el directorio .emacs.d ya listo para ubicar en nuestro directorio home, ejecutar Emacs, esperar que se bajen los paquetes […]
Comentarios recientes