Mar 24 2014

Emacs whitespace-mode

Tag: mediumoverdrive @ 10:49 pm

Whitespace-mode renderiza caracteres para que sean visibles, tales como espacios, tabulaciones o nuevas lineas.

Esto es de gran importancia especialmente cuando se emplean lenguajes como Python.

Para comenzar a usarlo tan solo debemos teclear:

 M-x whitespace-mode

Este comando hara toggle de este modo para el fichero actual. Si queremos activar/desactivar el modo a nivel global para la sesion actual de emacs deberemos lanzar:

 M-x global-whitespace-mode

whitespace1

Ejemplo de captura con whitespace-mode por defecto

  • los tabs se muestran como «>>»
  • los espacios como «.»
  • fin de linea como «$»
  • las lineas en rojo son trailing spaces
  • mientras que las lineas amarillas son «TABs» en lugar de espacios al principio de la linea.

Tambien existen otros modos utiles como:

 M-x whitespace-newline-mode
 M-x global-whitespace-newline-mode

Ahora bien, si no queremos acabar con los ojos destrozados, podemos modificar los simbolos y colores por defecto de este modo:

Para reducir los colores podemos emplear:

(setq whitespace-style (quote (spaces tabs newline space-mark tab-mark newline-mark)))

Si queremos mostrar el simbolo pilcrow en lugar del simbolo del dolar para nueva linea hariamos lo siguiente:

(setq whitespace-display-mappings
;; all numbers are Unicode codepoint in decimal. try (insert-char 182 ) to see it
 ‘(
  (space-mark 32 [183] [46]) ; 32 SPACE, 183 MIDDLE DOT 「·」, 46 FULL STOP 「.」
   (newline-mark 10 [182 10]) ; 10 LINE FEED
    (tab-mark 9 [9655 9] [92 9]) ; 9 TAB, 9655 WHITE RIGHT-POINTING TRIANGLE 「▷」
  ))

Simbolo   Unicode Code Point (Decimal)       Unicode Name
·                183                                                     MIDDLE DOT
¶               182                                                     PILCROW SIGN
↵               8629                                                  DOWNWARDS ARROW WITH CORNER LEFTWARDS
↩               8617                                                  LEFTWARDS ARROW WITH HOOK
⏎               9166                                                  RETURN SYMBOL
▷               9655                                                 WHITE RIGHT POINTING TRIANGLE
▶               9654                                                 BLACK RIGHT-POINTING TRIANGLE
→              8594                                                 RIGHTWARDS ARROW
↦               8614                                                 RIGHTWARDS ARROW FROM BAR
⇥               8677                                                 RIGHTWARDS ARROW TO BAR
⇨               8680                                                 RIGHTWARDS WHITE ARROW

 

whitespace2

Whitespace-mode tunneado para que quede mucho mas chulo que por defecto

Para eliminar los espacios en blanco al final de la linea tan solo debemos invocar a la funcion:

M-x delete-trailing-whitespace

Aunque tambien podemos anadir las siguientes lineas en nuestro .emacs, para asegurarnos de manera automatica, que cada vez cuando guardamos, no dejamos trailing spaces:

(add-hook ‘before-save-hook ‘delete-trailing-whitespace)

Referencias:
http://ergoemacs.org/emacs/whitespace-mode.html
http://www.emacswiki.org/emacs/WhiteSpace