Изменение внешнего вида текста в Emacs: наложения работают, свойства текста - нет - PullRequest
8 голосов
/ 11 февраля 2010

Я экспериментировал сегодня со свойствами текста в Emacs. Если я наведу курсор на строку с текстом, а затем выполню следующий код с M-:, строка будет отображена жирным шрифтом.

(overlay-put
 (make-overlay
  (line-beginning-position)
  (line-end-position))
 'face 'bold)

Если, однако, я стираю оверлей с помощью (remove-overlays) и выполняю следующий код, ничего не происходит (за исключением того, что слово "nil" появляется в минибуфере).

(put-text-property
 (line-beginning-position)
 (line-end-position)
 'face 'bold)

Исходя из того, что я почерпнул, я ожидал, что эти два фрагмента должны давать одинаковые визуальные результаты. Почему не они?

Ответы [ 2 ]

4 голосов
/ 11 февраля 2010

Когда font-lock-mode включено, атрибут face будет переопределен. Попробуйте font-lock-face вместо:

(put-text-property
 (line-beginning-position)
 (line-end-position)
 'font-lock-face 'bold)
2 голосов
/ 07 марта 2011

ansi-color.el - "Однако в Emacs все немного Разное: когда в буфере активна блокировка шрифта, вы не можете просто добавить свойства текста face в буфер. Font-Lock удалит лицо свойство text с использованием 'font-lock-unfontify-region-function'. Если ты хочешь вставлять строки, возвращаемые «ansi-color-apply» в такие буферы, Вы должны установить 'font-lock-unfontify-region-function' в `ANSI-цвета-unfontify-регион». Эта функция не удалит все лицо свойства текста безоговорочно. Сохранит текстовые свойства лица если свойство 'ansi-color' установлено.

...