Chcę widzenia (i / lub edytować) kolorowanie tekstu w emacs, takiego jakie jest wyjście przez ls -l --color=always
, tree...
lub cokolwiek.
Tekst, o którym mówię, istnieje w pliku. Kiedy otwieram ten plik w emacsie, chcę mieć możliwość zobaczenia go pokolorowanego lub przełączenia go, aby pokazać sekwencje specjalne ANSI (SGR).
ansi-color.el
wydaje się być tym, czego potrzebuję, ale nie byłem w stanie zmusić go do kolorowania sekwencji ucieczki ANSi , ale widzę niebieską pogrubienie dla poszczególnych bajtów contol (np. ^A
i ^[
) ... Nie jestem jasne, czy jest to cecha ansi-color
, ale myślę, że tak.
Zgodnie z komentarzami ansi-color.el może on działać z ciągami znaków i regionami, ale nawet to nie działa. Na przykład funkcja ansi-color-apply-on-region
nie jest rozpoznawana przez M-x
. Mówi: „Brak dopasowania”
Dodałem (require 'ansi-color)
do mojego pliku .emacs , a nawet (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
. Nie pojawia się żaden błąd ani ostrzeżenie, gdy zaczyna się emacs, więc utknąłem.
Jak sprawić, by standardowe funkcje działały i czy można je ustawić tak, aby były automatycznie stosowane podczas otwierania pliku, którego nazwa zawiera przyrostek .col
?
Poniższe rozwiązanie umożliwia odczyt (i nie zapisanie) plików zawierających sekwencje kolorów ANSI. Nazwy plików muszą mieć
.txt
rozszerzenie.Umieść bibliotekę w formacie tty
~/.emacs.d/site-lisp/
, a następnie dodaj te wiersze do~/.emacs
pliku init.źródło
ansi-color
i idzie o krok dalej, jak mówi link: „... Celem tty-format.el jest po prostu udostępnienie * takich plików .” * .. „ takie pliki ” to te, które zawierają ucieczkę ANSI SGR sekwencje itty-format
. Wydaje się być lepszy od mojej funkcji otoki lub 3-liniowego trybu pochodnego. :) Emacs z trudem radzi sobie z wieloma nakładkami, czyli jak kolorystyka ansi-color. Istnieje tu możliwość dalszej optymalizacji, ponieważ nie musimy pokolorować całego bufora, tylko wyświetlaną część.Dziękuję bardzo @enzotib za twoje rozwiązanie!
Jako dodatek do Twojego rozwiązania, oto sposób, aby użytkownik mógł je wyraźnie wywołać:
i automatyczne dla plików innych niż tylko * .txt lub README:
W ten sposób możesz zastąpić sekwencje specjalne kolorami bez zmiany oryginalnego pliku, w przeciwieństwie do rozwiązań wykorzystujących
ansi-color-apply-on-region
.źródło