2010-06-18 11 views
35

Al trabajar en Emacs, utilizo el comando de compilación (F12 por defecto) para ejecutar programas. Cuando ejecuto Cucumber en Emacs, Pepino escupe colores ANSI que el modo de compilación de Emacs no interpreta. El resultado es feo y difícil de leer. He aquí un fragmento de la * compilation * búfer que muestra la fea:Colores ANSI de pepino estropeando el búfer de compilación de emacs

^[[31m(::) failed steps (::)^[[0m 

El comando que estoy usando:

(cd ~/lab/rails/todolist && rake cucumber:all) 

Versiones:

  • Emacs 23.1
  • pepino 0.8. 3
  • Carriles de pepino 0.3.2

El mundo sería sol y canto de los pájaros, si pudiera:

  • Obtener Emacs para interpretar los códigos de color ANSI en su búfer de compilación, o
  • Obtener pepino para detener escupiendo códigos de color ANSI

¿Alguna idea?

Respuesta

62

Lo utilizo para activar el ANSI interpretación color en mi búfer de compilación:

(require 'ansi-color) 
(defun colorize-compilation-buffer() 
    (let ((inhibit-read-only t)) 
    (ansi-color-apply-on-region (point-min) (point-max)))) 
(add-hook 'compilation-filter-hook 'colorize-compilation-buffer) 
+4

Es por eso que amo este lugar. Gran solución; Funciona de maravilla. ¡Gracias! –

+0

¡Exactamente lo que estaba buscando! Desafortunadamente, en mi entorno (cygwin-xemacs) se ha acelerado (buffer-read-only # ) con "Error in process filter", lo que parece muy extraño. ¿Algunas ideas? – thoni56

+0

Esto funcionó muy bien para mí también. También agregué '(linum-mode 0)' (y, en el primer intento '(line-number-mode 0)', que no funcionó, pero lo dejé de todos modos, y podría funcionar para otra persona), después de ' (toggle-read-only) ', lo que me hace incluso más feliz (un grupo de líneas que apenas se estaban ajustando ahora no). – lindes

19

mejoro código de modo que no contamina M-x grep como comandos y más eficiente:

(ignore-errors 
    (require 'ansi-color) 
    (defun my-colorize-compilation-buffer() 
    (when (eq major-mode 'compilation-mode) 
     (ansi-color-apply-on-region compilation-filter-start (point-max)))) 
    (add-hook 'compilation-filter-hook 'my-colorize-compilation-buffer)) 
+0

** Nota ** Probé este código solo con Emacs 24.x, es posible que no funcione en la versión 23.xo menos ... – gavenkoa

+0

Esto funciona bien, por qué '(add-hook 'compilation-filter-hook' ansi -color-for-comint-mode-on) 'no? –

Cuestiones relacionadas