Prettify-symbols-mode

Desde la versión 24.4 de emacs se incluye un nuevo modo llamado prettify-symbols-mode, el cuál esta planeado para remplazar la representación de varios identificadores/símbolos usados en los lenguajes de programación por caracteres más estéticos.

Por ejemplo, en el modo lisp (emacs-lisp también), al escribir la palabra reservada lambda, visualmente se transforma en el símbolo λ, pero que en el texto se sigue conservando la palabra escrita.

Esto permite que escribir en diversos lenguajes tenga una notación un poco más “matemática” y visualmente más estética respecto a escribirlo en otros editores.

Para activar esta características, por ejemplo, en el modo lisp hay que sobreescribir la variable lisp--prettify-symbols-alist de la siguiente forma:

(defconst lisp--prettify-symbols-alist
  '(("lambda"  . ?λ)))

Esto significa que la palabra lambda va a ser remplazada por el simbolo λ. Pero también se puede agregar más remplazos para otros modos:

(add-hook clojure-mode-hook
            (lambda ()
              (push '(">=" . ?≥) prettify-symbols-alist)))

En caso de que queramos activar por defecto prettify-symbols en la mayoría de los modos por defecto de emacs, agregamos la siguiente linea a nuestra configuración de emacs:

(global-prettify-symbols-mode +1)

¿Emacs como ide para Java?

Una de las cosas que me faltan por hacer, es convertir a Emacs como mi editor primario. Entonces, ¿qué me falta para eso?

La respuesta es simple: Java. Actualmente todo el trabajo que realizo con Java es través de Netbeans, lo cuál me hace tener que estar cambiando entre Emacs y Netbeans, haciendo que tenga que estarme moviendo mucho entre ventanas.

A pesar de que he probados varias bibliotecas que permiten trabajar con Java en Emacs, creo que no me he dado el tiempo suficiente para probarlas a profundidad. Tendré que hacerlo tarde o temprano.

A continuación hago una lista de las cosas que me gustan de trabajar con Netbeans:

  • Autocompletado de código. Esta parte podría trabajarla vía autocomplete o vía company-mode.
  • Imports automáticos. Aquí no tengo idea de como hacer que trabaje de igual forma en Emacs.
  • Herramientas para hacer uso de Java 8.
  • Templates para proyectos y archivos.
  • Navegación sencilla entre clases.
  • Snippets. Podría trabajarlo vía yasnippet.
  • Sugerencias de refactoring inteligentes.
  • Inspección de jerarquías de clases.
  • Análisis de errores al vuelo.
  • Distintos tipos de source code refactoring.
  • Integración con Herramientas como maven, ant o gradle.
  • El uso sencillo del Debugger o el profiler.
  • Herramientas para realizar pruebas unitarias.
  • Herramientas para Análisis del código.

Creo que no hay una o más herramientas que trabajando juntas me den las mismas capacidades que las de Netbeans. Así que o tendré que esperar o comenzar a construir mis propias herramientas. Lo más probable es que me decante por lo segundo.

Notas de braveclojure

Bueno, creo que es hora de ir tomando nota de este pequeño tutorial que es presentado en la página Brave Clojure.

Me salte los capítulos 1 y 2, por lo que me fuí directamente con el tercero.

Using emacs with clojure.

Este capítulo se basa principalmente en mostrar la forma de conectarse a al repl de clojure vía cider-nrepl, así como una introducción a las herramientas que se pueden usar en emacs y sus atajos de teclado.

El capítulo está dividido en las siguientes subsecciones:

  • How to start a REPL process that’s connected to Emacs
  • How to work with Emacs windows
  • A cornucopia of useful key bindings
    • How to evaluate an expression
    • How to compile the file you’re editing
    • How to switch to the namespace of your current file
  • How to handle errors
  • Intro to Paredit

De las cosas más importantes de este capítulo se encuentran los atajos de teclado que utiliza, los que voy a separar de la siguiente forma:

How to start a REPL process that’s connected to Emacs

Atajo Descripción
M-x cider-jack-in Inicia un nuevo nrepl asociado a un archivo .clj
M-x nrepl-close Cierra el nrepl

How to work with Emacs windows

Atajo Descripción
C-x o Mueve el cursor al siguiente frame
C-x 1 Elimina los otros buffers excepto el actual
C-x 2 Divide el buffer en dos. Uno arriba y otro abajo
C-x 3 Divide el buffer en dos. Uno a la izquierda y otro a la derecha
C-x 0 Elimina el buffer actual
C-x b Intercambia entre buffers

A cornucopia of useful key bindings

Atajo Descripción
C-e Se mueve al final de la linea
C-x C-e Evalúa la expresión de Clojure
C-c M-n Establece el namespace actual al REPL
C-c C-k Compila el archivo actual
C-↑, C-↓ Historial del Cider
q Cierra el stack-trace de REPL en caso de error
M-x paredit-mode Establece el modo paredit
M-( Inserta un nuevo par de paréntesis
C-→ Mueve el parentesis al elemento siguiente
C-← Mueve el parentésis al elemento previo

Continuará…

Usando el chat de facebook en emacs.

Últimamente he comenzado a utilizar emacs para casi todo, entonces recordando que la conexión de los clientes para el chat de facebook es vía xmpp, busque un cliente xmpp para emacs.

Mi sorpresa es que existe Jabber, el cuál puede ser instalado desde Melpa.

Una vez instalado, hay que configurar la conexión hacia facebook de la siguiente forma:

;; define una lista de cuentas.
(setq jabber-account-list '(("account_name_or_id@chat.facebook.com"
                             (:network-server . "chat.facebook.com")
                             (:connection-type . starttls)
                             (:port . 5222)
                             (:password . "your_password"))))

;; deshabilita notificaciones de presencia de jabber.el
(remove-hook 'jabber-alert-presence-hooks
             'sr-jabber-alert-presence-func)

;; conecta todas mis cuentas de jabber.el al inicio.
(jabber-connect-all)

Ejemplo emacs-chat2.png

Con esto sería más que suficiente para conectarse a facebook vía emacs sin mayores complicaciones.

Para saber más sobre Jabber.

Org-html-theme

El día de hoy mientras leía el blog de Sacha Chua, ví que tenía un link a una herramienta llamada “org html themes”, la cual permite a través de agregar un directiva a tu archivo .org, generar los archivos .html de forma más bonita.

En la página de github del proyecto, te muestran como añadir este archivo de configuración para generar tus notas en html de forma más bonita.

Siendo la forma más sencilla la siguiente:

#+SETUPFILE: THEME-NAME.setup

ó

#+SETUPFILE: path/to/Git/repo/setup/THEME-NAME.setup

Añado un ejemplo de como se ven este tema aplicado a tus notas.

MachineLearning.png