La mise en évidence de la syntaxe: This me vient en tête. Je n'ai pas vraiment essayé l'exemple, donc je ne peux rien dire sur la performance, mais il semble que ce soit la manière la plus simple d'obtenir une mise en évidence de la syntaxe de base.
Auto-complétion: Étant donné une liste de mots-clés possibles (qui pourraient être filtrés en fonction du contexte), vous pouvez rapidement éliminer tout ce qui ne correspond pas à ce que l'utilisateur est en cours de frappe. Dans la plupart des langues, vous pouvez vous limiter à un «mot», puisque les espaces ne sont généralement pas légaux dans un identifiant. Par exemple, si je commence à taper "li", la base de données d'auto-complétion peut rejeter tout ce qui ne commence pas par les lettres 'l' et 'i' (en ignorant la casse). Au fur et à mesure que l'utilisateur continue à taper, de plus en plus d'options peuvent être supprimées jusqu'à ce qu'il n'en reste plus qu'une ou, du moins, quelques-unes. Puisque vous regardez juste un mot à la fois, ce serait très rapide en effet.
Indentation: Une approche rapide et sale qui (genre de) travailler dans les langues de type C est d'avoir un compteur qui vous incrémenter une fois pour chaque « { » et décrément une fois pour toutes « } '. Lorsque vous appuyez sur Entrée pour commencer une nouvelle ligne, le niveau d'indentation est alors counter * indentWidth
, où indentWidth
est un nombre constant d'espaces ou d'onglets à indenter. Cela souffre d'un sérieux inconvénient, mais - considérer les points suivants:
if(foo)
bar(); // This line should be indented, but how does the computer know?
Pour faire face à cela, vous pouvez rechercher des lignes qui se terminent par un «) », et non un point-virgule.
Voulez-vous dire "mise en œuvre" plutôt que "l'idée"? – BoltClock
Lors de la numérisation pour l'achèvement, il suffit de revenir en arrière d'où ils tapent jusqu'à ce que vous frappiez des espaces ou un caractère spécial, car ce serait le début de ce qu'ils sont en train de taper. '5 + mushroom' Le bit" 5 + "peut être ignoré, car aucun nom de variable/fonction ne contient d'espaces ou un +. – TaslemGuy
+1 Bonne question, je me suis demandé la même chose ces derniers temps – helpermethod