Forum général.général [emacs] semantic et completion de code

Posté par  .
Étiquettes : aucune
0
2
nov.
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
  • # completion

    Posté par  (site web personnel) . Évalué à 2.

    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

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.