- Autocompletion
-
Autovervollständigen ist eine Funktion, die eine Benutzereingabe sinnvoll ergänzt. Grundlage für die Vervollständigung ist in jedem Fall ein begrenzter Pool an Möglichkeiten, der sich äquivalent zum Fortschritt und ggf. Semantik der Benutzereingabe verkleinert. Sie wird von vielen Editoren und IDEs zur Verfügung gestellt. Es gibt verschiedene Möglichkeiten der Realisierung:
- Durch eine Dropdown-Liste,
- durch das Anzeigen eines möglichen Textes,
- durch das sofortige Einsetzen eines Vorlagen-Textes
Beispiele dafür sind Verfahren wie Text on 9 keys (T9) beim Schreiben von SMS-Nachrichten oder Input Method Editoren, Schnellwahlen im Adressbuch, Ergänzungen von früheren Eingaben (etwa in Suchleisten), Autovervollständigen in Office-Produkten, wo es je nach Programm u. a. Datumsangaben oder Wörter vervollständigt, oder Befehlsergänzung über ein Command Line Interface, wie es bei einigen Betriebssystemen der Fall ist.
In IDEs unterstützt eine syntaktische und semantische Überprüfung des schon eingegebenen Quelltexte den Programmierer mit einer Liste von Vorschlägen zur Autovervollständigung. Diese Liste an Quelltextvorschlägen umfasst zum Beispiel zuvor deklarierte Variablen, in dem Programmkontext erreichbare Methoden, Funktionen und Objekte bis zu umfangreichen Vorlagen von häufig verwendeten Codestücken (Templates).
Inhaltsverzeichnis
Autovervollständigen von Vorlagen
Insbesondere das Einfügen von Templates wird in aktuellen IDEs immer ausgefeilter.
NetBeans
Zum Beispiel bietet NetBeans eine kleine Template-Makro-Sprache, um komfortable Eingabemöglichkeiten zu bieten:
for (Iterator ${it} = ${collection instanceof="java.util.Collection"}.iterator(); ${it}.hasNext();) { ${Object} ${elem} = (${Object}) ${it}.next(); ${cursor} }
Das obige Beispiel mit dem Kürzel forc verknüpft, erzeugt bei Eingabe von f, o, r, c und Leertaste folgende Ausgabe in den Quelltext:
for (Iterator it = collection.iterator (); it.hasNext ();) { Object elem = (Object) it.next (); }
Dabei wird der Variablenname it markiert und alle weitere Vorkommen von it blau hervorgehoben. Nun kann der Name it durch einen passenden Variablennamen (durch einfaches eintippen) ersetzt werden. Automatisch werden alle Vorkommen von it im Template mit demselben eingetippten Namen ersetzt. Mit der Tabulatortaste springt die Markierung zu collection. Der Programmierer kann den Namen des Objektes ändern und springt dann wiederum per Tabulator-Taste zu dem mit ${Object} gekennzeichneten Abschnitt. Bei der Änderung dieses Klassennames ändern sich natürlich wieder alle blau markierten ${Object} Platzhalter. Mit dem nächsten Tab-Sprung kann man den Platzhalter ${elem} ändern. Die letzte Eingabe mittels der Tabulator-Taste springt dann endgültig zu dem Platzhalter ${Cursor}.
NetBeans unterstützt den Programmierer sogar so weit, dass das nächst passende Collection-Objekt als Variablenname übernommen wird. Wurde also zuvor eine Liste deklariert:
List testListe = new ArrayList();
dann übernimmt die Vorlage forc auch den Variablennamen testListe für den Platzhalter ${collection instanceof="java.util.Collection"}, weil testListe vom Typ List ist und List vom Typ java.util.Collection. Solche Rückblicke auf Programmiersprachenebene ermöglicht der integrierte Lexer der IDE.
Eclipse
Ähnlich komfortable Template-Eingaben, die den Kontext und die Semantik der zu bearbeitenden Programmiersprache berücksichtigen, findet man zum Beispiel in Eclipse. Der Aufbau der Makrosprache entspricht der von NetBeans. Allerdings gibt es noch zusätzliche Platzhalter, die automatisch gefüllt werden. Zum Beispiel ${date} für das aktuelle Datum sowie ${time} für die aktuelle Uhrzeit. ${enclosing_method} für den Methodenname, in der das Template eingefügt wird oder ${user} für den aktuell angemeldeten Programmierer.
Microsoft Visual Studio .NET
Auch die aktuellen Versionen von Visual Studio .NET bieten Autovervollständigen mit Vorlagen an. Deren Definition erfolgt mittels XML.
Wikimedia Foundation.