Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment mettre à jour la propriété face pour que get-text-property fonctionne correctement?

6 réponses
Avatar
jack-mac
Bonjour v=E9n=E9rables emacsiens.

Comment faire pour que la propri=E9t=E9 "face" soit mise =E0 jour, soit pou=
r
tout le fichier, soit autour du "point"?

J'ai =E9crit une fonction emacs-lisp qui effectue une recherche sur du
texte et sur la propri=E9t=E9 'face'.
Cette fonction marche parfaitement lorsque le buffer a =E9t=E9 enti=E8remen=
t
affich=E9 (via un scroll, par exemple).
Mais, lorsque je viens juste d'ouvrir un fichier, j'ai constat=E9 que la
propri=E9t=E9 "face" du texte qui n'a pas encore =E9t=E9 affich=E9 reste =
=E0 nil
tant qu'il n'a pas =E9t=E9 affich=E9.

(get-text-property (point) 'face) =3D> nil

J'ai essay=E9 (font-lock-fontify-buffer) mais =E7a ne provoque pas la mise
=E0 jour que je souhaite.

Dans le temps, il y avait un lazy-lock, mais il n'existe pas dans mon
emacs.

Comment faire pour que la propri=E9t=E9 "face" soit mise =E0 jour, soit pou=
r
tout le fichier, soit autour du "point"?

Merci d'avance pour votre aide.

Rq:
Pour =E9viter tout probl=E8me de .emacs, j'ai lanc=E9: "emacs -Q" et =E9val=
u=E9
seulement ma fonction.
GNU Emacs 23.1.1 (i686-pc-linux-gnu, GTK+ Version 2.22.0) of
2011-03-04 on roseapple, modified by Debian

6 réponses

Avatar
vincent.belaiche
jack-mac writes:


[...]


Comment faire pour que la propriété "face" soit mise à jour, soit pour
tout le fichier, soit autour du "point"?

Merci d'avance pour votre aide.

Rq:
Pour éviter tout problème de .emacs, j'ai lancé: "emacs -Q" et évalué
seulement ma fonction.
GNU Emacs 23.1.1 (i686-pc-linux-gnu, GTK+ Version 2.22.0) of
2011-03-04 on roseapple, modified by Debian



As-tu essayé font-lock-fontify-block

Sinon essaie peut-être juste avant de faire le get-text-property un truc
de ce genre

(let ((inhibit-read-only))
(delete-region (point) (progn (insert 32) (point))))

histoire de provoquer un rafraichissement du texte à cet endroit.

Vincent.
Avatar
jack-mac
On 14 juin, 21:58, (Vincent Belaïche)
wrote:
jack-mac writes:

[...]

> Comment faire pour que la propriété "face" soit mise à jour, soit pour
> tout le fichier, soit autour du "point"?

> Merci d'avance pour votre aide.

> Rq:
> Pour éviter tout problème de .emacs, j'ai lancé: "emacs -Q" et évalué
> seulement ma fonction.
> GNU Emacs 23.1.1 (i686-pc-linux-gnu, GTK+ Version 2.22.0) of
> 2011-03-04 on roseapple, modified by Debian

As-tu essayé font-lock-fontify-block

Sinon essaie peut-être juste avant de faire le get-text-property un tru c
de ce genre

(let ((inhibit-read-only))
     (delete-region (point) (progn (insert 32) (point))))

histoire de provoquer un rafraichissement du texte à cet endroit.

   Vincent.



Bonjour,
merci d'avoir répondu!
Pour rafraichir le texte autour du point, on peut utiliser (sit-for
0), mais c'est très lourd.
En fait, j'ai eu la réponse sur gnu.emacs.help :
Pour forcer la fontification, il faut utiliser jit-lock-fontify-now
Mais, en plus, ce n'est pas la bonne méthode:
Pour vérifier si le point est dans un commentaire ou une chaine, etc.,
il vaut mieux utiliser syntaxe-ppss
)jack(
Avatar
vincent.belaiche
jack-mac writes:


[...]


Bonjour,
merci d'avoir répondu!
Pour rafraichir le texte autour du point, on peut utiliser (sit-for
0), mais c'est très lourd.
En fait, j'ai eu la réponse sur gnu.emacs.help :
Pour forcer la fontification, il faut utiliser jit-lock-fontify-now
Mais, en plus, ce n'est pas la bonne méthode:
Pour vérifier si le point est dans un commentaire ou une chaine, etc.,
il vaut mieux utiliser syntaxe-ppss
)jack(



Merci de l'info... Après avoir cherché cette fonction, c'est:

syntax-ppss

J'avoue que c'est un aspect d'EMACS que je connais très mal...

Vincent.
Avatar
valrik
(Vincent Belaïche) writes:

J'avoue que c'est un aspect d'EMACS que je connais très mal...



Moi, encore plus!
En deux mots, ça consiste en quoi une "propriété face"?
Avatar
duthen.cnv
Le lundi 25 juin 2012 15:28:14 UTC+2, (inconnu) a écrit :
(Vincent Belaïche) writes:
> J'avoue que c'est un aspect d'EMACS que je connais très mal...

Moi, encore plus!

En deux mots, ça consiste en quoi une "propriété face"?



Lorsque Emacs affiche une partie du texte en couleurs (coloration syntaxiqu e, par exemple), il se passe quelque chose en interne!
Xemacs utilise un mécanisme d'overlays (que je décrirai pas).
Gnu FSF Emacs utilise un mécanisme de propriétés. Dans GNU FSF Emacs , si tu places le curseur à l'intérieur d'un mot en couleur et que tu t apes M-: (get-text-property (point) 'face) RET, emacs affichera la propri été 'face' du point courant.
Avatar
valrik
writes:


Moi, encore plus!

En deux mots, ça consiste en quoi une "propriété face"?



Lorsque Emacs affiche une partie du texte en couleurs (coloration syntaxi que, par exemple), il se passe quelque chose en interne!
Xemacs utilise un mécanisme d'overlays (que je décrirai pas).
Gnu FSF Emacs utilise un mécanisme de propriétés. Dans GN U FSF Emacs, si tu places le curseur à l'intérieur d'un mot en co uleur et que tu tapes M-: (get-text-property (point) 'face) RET, emacs affi chera la propriété 'face' du point courant.




Ok, merci pour ta réponse. J'ai essayé la manip, et effectivement , ça
m'affiche un message. Je n'arrive pas à l'interpréter correctemen t pour
l'instant, mais je garde l'info dans un recoin de mon cerveau... car il
se pourrait bien qu'elle me soit utile dans quelques temps.