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

Le
jack-mac
Bonjour vénérables emacsiens.

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

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

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

J'ai essayé (font-lock-fontify-buffer) mais ça ne provoque pas la mise
à 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été "face" soit mise à jour, soit pou=
r
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 éval=

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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
vincent.belaiche
Le #24561501
jack-mac

[...]


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.
jack-mac
Le #24563851
On 14 juin, 21:58, (Vincent Belaïche)
wrote:
jack-mac
[...]

> 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(
vincent.belaiche
Le #24591261
jack-mac

[...]


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.
valrik
Le #24592611
(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"?
duthen.cnv
Le #24667631
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.
valrik
Le #24720462
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.
Publicité
Poster une réponse
Anonyme