Отображение непечатаемых символов в emacs с одной стороны очень простая тема, выполняем "M-x whitespace-mode" и пробелы, символы табуляции, перес строк будет сразу видны на экране, выполняем команду ещё раз - режим выключается. Настройки по умолчанию в принципе неплохие и если они устраивают, то на этом можно и закончить изучение режима. Но это же emacs, и "под капотом" скрывается на удивление много настроек для этого режима. К сожалению информация о нем раскидана по разным уголкам интернета, а кое-что пришлось узнавать экспериментальным путём. Так что сейчас попробую описать важные на мой взгляд опции этого режима.
Итак первой рассмотрим переменную "whitespace-style" это список, в котором требуется перечислить что собственно будет отображаться после "M-x whitespace-mode", возможные значения вот такие:
Что бы было понятнее о чем я пишу, приведу пример:
Т.е. мы включаем все возможные whitespace-style, и для пробелов в середине текста выставляем зелёный цвет, для символов переноса строки - синий, в результате получим вот такую картинку:
Ещё интересной опцией является "whitespace-display-mappings". Она показывает какие символы относятся к space-mark, tab-mark и newline-mark и как их отображать. По умолчанию она имеет такой вид:
Каждая строчка содержит имя режима, затем код символа который мы хотим отнести к этому режиму, а потом вектор с набором кодов символов, которые нужно отображать вместо исходного в whitespace-mode. Если первый вектор отобразить невозможно, emacs попытается взять следующий, если ни один не подойдёт, то ничего отображать не будет. Список кодов юникод символов можно найти например тут. Только прийдётся переводить из шестнадцатеричной формы в десятеричную. В качестве примера заменим символ l(108) на символ копирайта(169), а символ переноса строки сменим с "$"(36) на более привычный "¶"(182):
Теперь предыдущая картинка будет выглядеть вот так:
Теперь надеюсь каждый кого не устроят значения по умолчанию, сможет настроить режим отображения спец. символов по своему желанию.
Итак первой рассмотрим переменную "whitespace-style" это список, в котором требуется перечислить что собственно будет отображаться после "M-x whitespace-mode", возможные значения вот такие:
- face - Разрешить визуализацию всех режимов описанных ниже. Без этой опции ничего кроме режимов space-mark, tab-mark и newline-mark работать не будет.
- trailing - Дополнительно подсветить "лишние" пробелы и символы табуляции в конце строки.
- tabs - Отобразить символы табуляции отображаемые опцией tab-mark отличным от цвета по умолчанию.
- spaces - Аналогично "tabs", только действует на то, что отображается с включённой опцией space-mark.
- newline - Аналогично "tabs", для опции newline-mark.
- lines - Выделение линий длиннее whitespace-line-column символов (по умолчанию 80 символов).
- empty - Выделение "лишних" линий в начале и конце документа, причём одна пустая строка в конце не считается "ошибочной", а вот если их 2 и более - то подсвечивается.
- space-mark - Показывает специальные символов вместо пробелов.
- tab-mark - Показывает специальные символы для табуляции.
- newline-mark - Показывает символы переноса на следующую строку.
Что бы было понятнее о чем я пишу, приведу пример:
(setq whitespace-style '(face trailing tabs spaces lines newline empty space-mark tab-mark newline-mark)) (set-face-attribute 'whitespace-space nil :background nil :foreground "#00FF00") (set-face-attribute 'whitespace-newline nil :background nil :foreground "#0000FF")
Ещё интересной опцией является "whitespace-display-mappings". Она показывает какие символы относятся к space-mark, tab-mark и newline-mark и как их отображать. По умолчанию она имеет такой вид:
(setq whitespace-display-mappings '((space-mark 32 [183] [46]) (space-mark 160 [164] [95]) (newline-mark 10 [36 10]) (tab-mark 9 [187 9] [92 9])))
(setq whitespace-display-mappings '((space-mark 32 [183] [46]) (space-mark 160 [164] [95]) (space-mark 108 [169] [95]) (newline-mark 10 [182 10]) (tab-mark 9 [187 9] [92 9])))
Теперь надеюсь каждый кого не устроят значения по умолчанию, сможет настроить режим отображения спец. символов по своему желанию.
Комментариев нет:
Отправить комментарий