[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: When are the face text properties actually set?
From: |
Eli Zaretskii |
Subject: |
Re: When are the face text properties actually set? |
Date: |
Wed, 13 Jun 2012 18:39:58 +0300 |
> From: jack-mac <duthen.mac@gmail.com>
> Date: Wed, 13 Jun 2012 07:32:31 -0700 (PDT)
>
> I start "emacs -Q", open any emacs-lisp file which containing more
> than
> one page of text. I choose a point (e.g. 2400) which is beyond the
> first page and type the following:
>
> M-: (get-text-property 2400 'face) RET
> => nil
>
> M-: (progn (goto-char 2400) (get-text-property 2400 'face))
> => nil
>
> Now, point 2400 is visible.
>
> M-: (get-text-property 2400 'face) RET
> => font-lock-comment-face
>
> The function get-text-property returns nil only when the point given
> as argument has not yet been displayed.
>
> So, I can reproduce it each time I close and reopen the file. (C-x C-v
> RET)
>
> Is this normal or is it a bug?
Normal.
> If it's normal, is there any way to force the text properties to be
> set the way they will be set when the point is displayed?
Yes, but it's slow: you need to get the whole buffer fontified by
font-lock. Normally, Emacs only fontifies the portion of text that is
about to be displayed.
> I tried the following which works more or less:
>
> M-: (progn (goto-char 2400) (sit-for 0) (get-text-property
> 2400 'face))
> => font-lock-comment-face
Yes, because sit-for causes Emacs to prepare the text for display.
Why do you need that?