Retourner aux forums || Retourner au forum general.general
general.general : [emacs] semantic et completion de code
Posté par eJah () le 02 novembre 2004
Je poste ici une question que j'ai pose dans f.c.a.emacs (corrige bien sur ;)
Voila, semantic c'est bien sympa mais ce qui serait cool c'est de le
rendre user-friendly :)
Y'a un truc pas mal c'est le mode: semantic-idle-completions-mode
Lorsqu'on idle, si le nom de la variable n'est pas fini de taper il y
a un popup avec un style bien particulier et bien sympa qui apparait
et qui propose les differents choix possible.
Maintenant il y'a plusieurs fonctions dans semantic qui montrent les
possibilites derriere un point par exemple.
Petit exemple:
typedef struct s_point
{
int x;
int y;
} Point;
int main(int ac, char av)
{
Point p1;
p1.
}
Si je fais un:
- M-x semantic-ia-complete-symbol: il m'ouvre un nouveau buffer avec
ce que je peus mettre derriere ce fameux point
- M-x semantic-ia-complete-symbol: il m'ouvre un nouveau buffer avec
ce que je peus mettre derriere ce fameux point
- M-x semantic-ia-complete-tip: il m'ouvre un popup de type "tip"
en-dessous du pointeur de la souris
- M-x semantic-ia-complete-menu: il m'ouvre un popup de type "menu"
et donc celui-ci ? le focus ce qui est plutot embetant ... ;)
Donc les questions sont:
- avez-vous une idee de comment implementer le style de popup utilise
pour semantic-idle-completions-mode avec l'une des fonctions
semantic-ia-complete-* ?
- Ou sinon savez-vous comment je pourrai faire apparaitre le popup de
style "tip" juste derriere mon point et non pas la ou se trouve mon
curseur de souris ?
- Comment binder le . et -> pour qu'il appelle la fonction qui va bien
justement ? parceque binder c'est assez simple, mais apres il faut qd
meme ecrire le . %)
Voila :)
Merci
Voila, semantic c'est bien sympa mais ce qui serait cool c'est de le
rendre user-friendly :)
Y'a un truc pas mal c'est le mode: semantic-idle-completions-mode
Lorsqu'on idle, si le nom de la variable n'est pas fini de taper il y
a un popup avec un style bien particulier et bien sympa qui apparait
et qui propose les differents choix possible.
Maintenant il y'a plusieurs fonctions dans semantic qui montrent les
possibilites derriere un point par exemple.
Petit exemple:
typedef struct s_point
{
int x;
int y;
} Point;
int main(int ac, char av)
{
Point p1;
p1.
}
Si je fais un:
- M-x semantic-ia-complete-symbol: il m'ouvre un nouveau buffer avec
ce que je peus mettre derriere ce fameux point
- M-x semantic-ia-complete-symbol: il m'ouvre un nouveau buffer avec
ce que je peus mettre derriere ce fameux point
- M-x semantic-ia-complete-tip: il m'ouvre un popup de type "tip"
en-dessous du pointeur de la souris
- M-x semantic-ia-complete-menu: il m'ouvre un popup de type "menu"
et donc celui-ci ? le focus ce qui est plutot embetant ... ;)
Donc les questions sont:
- avez-vous une idee de comment implementer le style de popup utilise
pour semantic-idle-completions-mode avec l'une des fonctions
semantic-ia-complete-* ?
- Ou sinon savez-vous comment je pourrai faire apparaitre le popup de
style "tip" juste derriere mon point et non pas la ou se trouve mon
curseur de souris ?
- Comment binder le . et -> pour qu'il appelle la fonction qui va bien
justement ? parceque binder c'est assez simple, mais apres il faut qd
meme ecrire le . %)
Voila :)
Merci
> Lire le message (1 commentaire, moyenne: 2).
completion
Posté par
Yann Hodique (page perso, ) le 02/11/2004 à 17:37. (lien). Évalué à 2.
Bon faudrait raffiner un peu, notamment, pour éviter les tentatives de completion sur
Je ne connais pas trop tooltip, mais j'ai bien peur que ce ne soit hardcodé (ce qui est Mal(tm) d'ailleurs, et devrait pouvoir se patcher relativement facilement au niveau C en ajoutant des parametres à x-show-tip() et compute_tip_xy()). La doc de x-show-tip annonce d'ailleurs bien la couleur:
Enfin, pour le réglage de la fonction d'affichage du tooltip, je sais pas trop, il faudrait sans doute partir de semantic-idle-completions-idle-function
je prends le plus facile: les bindings :)
(define-key c-mode-map ">" (lambda (arg)
(interactive "P")
(c-electric-lt-gt arg)
(when (looking-back "->")
(semantic-ia-complete-tip (point)))))
(define-key c-mode-map "." (lambda ()
(interactive)
(insert ".")
(semantic-ia-complete-tip (point))))
Bon faudrait raffiner un peu, notamment, pour éviter les tentatives de completion sur
if(p-->5)peut-être avec une regexp genre "\\(\\>\\|)\\)->"
Je ne connais pas trop tooltip, mais j'ai bien peur que ce ne soit hardcodé (ce qui est Mal(tm) d'ailleurs, et devrait pouvoir se patcher relativement facilement au niveau C en ajoutant des parametres à x-show-tip() et compute_tip_xy()). La doc de x-show-tip annonce d'ailleurs bien la couleur:
If the list of frame parameters PARAMS contains a `left' parameters,
the tooltip is displayed at that x-position. Otherwise it is
displayed at the mouse position
Enfin, pour le réglage de la fonction d'affichage du tooltip, je sais pas trop, il faudrait sans doute partir de semantic-idle-completions-idle-function
Revenir en haut de page || Retourner aux forums || Retourner au forum general.general



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.