Pour que les langues xtext deviennent sensibles au retrait, des jetons synthétiques sont utilisés as described here. Mais, dans les emplacements indentés, l'assistant de contenu ne propose rien à moins que la première lettre ne soit saisie.Xtext: aide au contenu pour les langues compatibles avec les indentations
Par exemple, considérons la grammaire suivante:
Model:
\t lines += Line+;
\t
Line:
\t 'model' name=ID
\t BEGIN
\t \t type=(Type1 | Type2 | Type3)
\t END
;
Type1:
'type1:' attr=ID;
Type2:
'type2:' attr=ID;
Type3:
'type3:' attr=ID;
// The following synthetic tokens are used for the indentation-aware blocks
terminal BEGIN: 'synthetic:BEGIN'; // increase indentation
terminal END: 'synthetic:END'; // decrease indentation
Maintenant, après avoir tapé modèle et une nouvelle ligne et un onglet, l'assistant de contenu ne demande rien. Mais, si je tape t et que je demande l'assistance de contenu, je reçois type1, type2 et type3.
Pourquoi l'aide au contenu ne fonctionne-t-elle que lors d'une saisie partielle?
Dans ce cas, j'essaie d'implémenter un langage sensible à l'espace blanc. Je souhaite utiliser l'aide au contenu pour demander les différents types possibles à cet endroit. En ce moment, en appuyant sur ctrl + espace après avoir tapé 'model', une nouvelle ligne et un nouvel onglet ne renvoient rien. Mais, si je tape la lettre 't' après cela, l'analyseur reconnaît que les types et m'indique avec 'type1, type2 et type3'. Comment modifier le comportement des jetons synthétiques? –
Le marquer comme optionnel n'a pas aidé –