2010-02-11 9 views
8

Eksperymentowałem dzisiaj z właściwościami tekstu w Emacs. Jeśli ustawię kursor na linii z tekstem, a następnie wykonam poniższy kod za pomocą M-:, linia zostanie pogrubiona ponownie.Zmiana wyglądu tekstu w Emacs: nakładki działają, właściwości tekstu nie odpowiadają

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

Jeśli jednak mogę wymazać nakładkę z (remove-overlays) i wykonać następujący kod, nic się nie dzieje (oprócz tego, że słowo „nil” pojawia się w minibuforze).

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

Z tego, co udało mi się zebrać do tej pory, oczekiwałbym, że te dwa fragmenty powinny dawać takie same efekty wizualne. Dlaczego oni nie?

+1

Działa dla mnie z Emacs 23.1, z tekstem w buforze zarówno w trybie podstawowym, jak i tekstowym. –

+0

Używam 22.1.50.1 na OS X. – Sean

+1

22.1.50 nie jest oficjalną kompilacją, próbowałem pobrać oficjalną wersję z http://homepage.mac.com/zenitani/emacs-e.html –

Odpowiedz

4

Po włączeniu font-lock-mode atrybut face zostanie nadpisany. Spróbuj font-lock-face zamiast:

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

ANSI color.el - „W Emacs jednak rzeczy są nieco inaczej: Kiedy font-lock jest włączony w buforze, nie można po prostu dodać twarz tekstowych właściwości do bufora Font-lock usunie właściwość tekstową za pomocą funkcji "font-lock-unfontify-region-area". Jeśli chcesz wstawić ciągi zwracane przez 'ansi-color-apply' do takich buforów, musisz ustawić 'font-lock-unfontify-region-function' na `ansi-color-unfontify-region '.Funkcja ta nie usunie wszystkich właściwości tekstowych bezwarunkowo. t-properties , jeśli właściwość 'ansi-color' jest ustawiona.