2010-06-18 4 views
35

Khi làm việc trong Emacs, tôi sử dụng lệnh biên dịch (F12 theo mặc định) để chạy chương trình. Khi tôi chạy Cucumber trong Emacs, dưa chuột phun ra màu ANSI mà chế độ biên dịch Emacs không giải thích. Kết quả là xấu và khó đọc. Dưới đây là một đoạn trong * tổng hợp * đệm cho thấy sự xấu xí:Màu ANSI của dưa chuột làm lộn xộn bộ đệm biên dịch emacs

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

Lệnh Tôi đang sử dụng:

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

phiên bản:

  • Emacs 23,1
  • Dưa chuột 0.8. 3
  • Dưa chuột đường ray 0.3.2

Thế giới sẽ là ánh nắng mặt trời và chim hót nếu tôi có thể:

  • Nhận Emacs để giải thích mã màu ANSI trong bộ đệm biên soạn của nó, hoặc
  • Nhận Dưa chuột phải ngừng phun ra mã màu ANSI

Bất kỳ ý tưởng nào?

Trả lời

62

Tôi sử dụng này để bật ansi giải thích màu sắc trong bộ đệm biên soạn của tôi:

(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

Đó là lý do tôi yêu nơi này. Giải pháp tuyệt vời; hoạt động như một sự quyến rũ. Cảm ơn! –

+0

Chính xác những gì tôi đang tìm kiếm! Thật không may, trong môi trường của tôi (Cygwin-xemacs) nó được kroaked (buffer-read-only # ) với "Error in process filter", có vẻ rất lạ. Bất kỳ ý tưởng? – thoni56

+0

Điều này cũng rất hữu ích cho tôi. Tôi cũng đã thêm '(linum-mode 0)' (và, ở lần thử đầu tiên '(line-number-mode 0)', nó không hoạt động, nhưng tôi vẫn còn lại, và có thể làm việc cho người khác), sau ' (chuyển đổi chỉ đọc) ', mà làm cho tôi thậm chí còn hạnh phúc hơn nhiều (một loạt các dòng mà chỉ vừa mới gói bây giờ không). – lindes

19

tôi cải thiện mã vì vậy nó không gây ô nhiễm M-x grep như lệnh và hiệu quả hơn:

(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

** Lưu ý ** Tôi kiểm tra mã này chỉ với Emacs 24.x, nó có thể không hoạt động trong phiên bản 23.x trở xuống ... – gavenkoa

+0

Điều này làm việc tốt, tại sao '(add-hook 'compilation-filter-hook' ansi -color-for-comint-mode-on) 'không? –