Arbeit mit Code-Snippets in Eclipse
Demonstrationsumgebung: Eclipse for RCP and RAP Developers, Version: Neon.3 Release (4.6.3)
Unter einem Snippet versteht man ein mehr oder weniger kleines Stück Quelltext, das selbst erstellt und zur einfachen Wiederverwertung gespeichert werden kann. Eclipse unterstützt das Speichern und Einfügen solcher Snippets in den Quelltext des Editorfensters. Das Speichern von Snippets kann hierbei auf drei unterschiedliche Weisen erfolgen.
- lokal gespeichert und dargestellt in einer Snippets-View
- als template gespeichert
- in einem Code Recommenders Snipmatch-repository gespeichert
Die Snippets-View
Die Snippets der Snippets-View werden für jeden Workspace separat in einem Plugin gespeichert.
Die Snippets-View kann durch Aufruf von Window → Show View → Other... → General → Snippets angezeigt werden.
Snippets werden in Kategorien zusammengefasst, die nach Wunsch benannt werden können. Das Anlegen von Unterkategorien ist jedoch leider nicht möglich.
Durch Rechtsklick in die View kann ein Kontextmenu aufgerufen werden, das diverse Einstellungen bietet und das Kopieren, Ausschneiden und Einfügen eines Snippets ermöglicht. Soll ein gespeichertes Snippet verwendet werden, kann das Einfügen mit Hilfe des Menupunkts Insert... (1) oder durch Doppelklick auf den Snippet-Titel erfolgen. Hierbei wird das markierte Snippet an der Cursor-Position des aktiven Editors platziert. Paste as Snippet... bewirkt das Gegenteil: Der Menupunkt erzeugt ein neues Snippet des im Haupteditor markierten Bereichs.
Unter Settings... (3) können das Verhalten und das Layout der View angepasst werden.
Customize... (2) erlaubt das Einfügen, Überarbeiten und Exportieren von Snippet-Einträgen, sowie deren Sortierung. Die Steuerung erfolgt hier über das Menu links oben:
- Unter dem Button New verbirgt sich die Möglichkeit ein neues Snippet oder eine neue Kategorie anzulegen. Leider lassen sich Kategorien jedoch nicht schachteln.
- Delete löscht Kategorien oder Snippeteinträge.
- Mit Move Down und Move Up lassen sich Kategorien und Snippets sortieren.
- Import ermöglicht den Import von im passenden XML-Format vorliegenden Snippets.
- Export erlaubt den Export einzelner Kategorien, die hierzu selektiert werden müssen. Die Gesamtheit aller Snippets kann leider jedoch nicht auf einmal exportiert werden. Dies lässt sich nur durch Kopieren der originalen Speicherdatei realisieren (s.u.).
Portieren von Snippets
Da der Inhalt der Snippets-View an einen Workspace gebunden ist, muss er nach Erstellen eines neuen Workspace dorthin portiert werden, falls man die Snippets dort verwenden möchte. Das Eclipse GUI besitzt hierzu keine Möglichkeit. Die Snippets befinden sich in der Datei user.xml, die jedoch kopiert oder in einen neuen Workspace verschoben werden kann. Sie ist unter folgendem Pfad abgelegt:
WORKSPACE/.metadata/.plugins/org.eclipse.wst.common.snippets/user.xml
Zum Portieren wird die Datei einfach an den gleichen Ort des neuen Workspace kopiert und Eclipse im Anschluss neu gestartet.
Code Templates
Code Templates sind in Eclipse vordefinierte
Code-Abschnitte, die, je nach Einstellung, während des
Schreibens von Code in einem kleinen, Tooltip-artigen
Fenster automatisch zur Auswahl erscheinen oder durch die
Tastenkombination Ctrl + Space
aufgerufen
werden können. Durch Anklicken werden sie an der
aktuellen Cursor-Position eingefügt. Um die Auswahl der
Templates einzuschränken reicht es, die ersten Zeichen
des gesuchten Templates zu tippen.
Die Templates können in den Eclipse-Einstellungen unter
Java → Editor → Templates eingesehen und
konfiguriert werden.
Das Beispiel verweist auf ein selbst
erstelltes Template für die Erzeugung und
Anfangskonfiguration eines JFrame
mit dem Namen
JFr
.
Ein neues Template erstellt man unter New..., ein bestehendes editiert man mit Edit.... In beiden Fällen öffnet sich das gleiche Fenster mit den Template-Eigenschaften. Die folgenden Einträge können hier vorgenommen werden:
- Name bezeichnet das Zeichenkürzel, mit dem das Template aufgerufen werden kann.
- Unter Context wird der Gültigkeitsbereich
eingetragen, unter dem das Kürzel zur
Verfügung stehen soll. So kann das Template
JFr
wegen seines Java-Kontextes zwar in Java-Code-Zusammenhängen, nicht jedoch z.B. beim Editieren einer PHP-Datei verwendet werden. Dies ist unabhängig vom verwendeten Editor. - Wird Automatically insert aktiviert, so wird das Template automatisch an der Cursor-Position eingefügt, wenn er der einzige an dieser Stelle verfügbare Vorschlag ist.
- Description bezeichnet eine Beschreibung, die beim Code-Vorschlag mit angezeigt wird.
- Unter Pattern wird das eigentliche Template eingetragen. Dies ist reiner Java-Code, der jedoch durch Java Editor Template Variables ergänzt werden kann.
- Unter Insert Variable... können diese
Variablen ausgewählt werden. Sie dienen zum Eintrag
dynamischer Daten, wie z.B. Zeit- und Datumsangaben, dem
Dateinamen, dem Autorennamen oder der Cursor-Position
nach Einfügen des Snippets. Im Beispiel wird z.B.
durch die Zeile
${:import(javax.swing.JFrame)}
bewirkt, dass zusätzlich zum eigentlichen Code eine Import-Anweisung fürJFrame
am Anfang der Datei hinzugefügt wird.
Im Quelltext kann durch Eingeben des Namens und der
anschließenden Tastenkombination Ctrl + Space
das Sippet aufgerufen werden. Stehen mehrere Auswahlen zur
Verfügung, so kann die gewünschte mit den
Pfeiltasten oder der Maus selektiert und mit Enter
eingefügt werden.
Code Recommenders Snipmatch
Das Plugin Eclipse Code Recommenders ist seit Mars
bei den gängigen Eclipse-Varianten vorinstalliert und
dient dazu, während der Arbeit im Editor auf
intelligente Weise passende Code-Vorschläge
unterschiedlichster Art zu ermitteln und diese je nach
Arbeitskontext zur Verfügung zu stellen.
Als Basis
hierzu dient u.a. auch ein Git-basiertes Snippet-Repository,
von dem Snippets abgerufen, aber auch selbst der Community
zur Verfügung gestellt werden können.
Abfragen eines Snippets
Um einen Vorschlag abzufragen, öffnet man durch Ctrl
+ Alt + Space
ein kleines grünliches
Fenster, in das einige Zeichen des gewünschten Snippets
eingegeben werden. Mit Hilfe der Pfeiltasten und Enter
kann ein Vorschlag ausgewählt und an der aktuellen
Cursorposition eingefügt werden. Die Eingabe muss
für die Suche nicht den genauen Namen des Snippets
darstellen, sondern kann ein Teilstück, ein Tag,
Schlüsselwort oder ein Begriff aus der Beschreibung
sein. Mehrere Begriffe können darüber hinaus mit AND
oder OR
verknüpft werden.
Hinzufügen eines Snippets
Möchte man ein eigenes Snippet hinzufügen, so ist
dies durch Create Snippet...
im Kontext-Menu
möglich.
Es öffnet sich der Snippet-Editor, bei dem die notwendigen Angaben zum Snippet gemacht werden können. Das Fenster enthält zwei Registerkarten, eine für die Metadaten (1) und eine für den Quellcode des Snippets (2).
Die Metadaten umfassen die folgenden Angaben, von denen Name und Location obligatorisch sind:
- Der Name des Snippets wie er im Vorschlag erscheinen soll.
- Description ist eine Beschreibung, die durch ein
'
-
' vom Namen getrennt, in der Vorschlagsliste eine kurze Angabe über die Funktion des Snippets macht. - Location bezeichnet den Gültigkeitsort eines
Snippets. Für alle Angaben innerhalb von Java Code
Blöcken kann hier
java statement
verwendet werden. - Die Einträge unter Filename Restrictions
bewirken eine Einschränkung von Snippets, die mit
dem Gültigkeitsort
File
gekennzeichnet sind auf die hier angegebenen Namen oder Extensionen. Besitzen mitFile
gekennzeichnete Snippets hier keinen Eintrag, so sind sie für alle Dateitypen gültig. - Unter Extra Search Terms kann eine Liste von Suchbegriffen angeführt werden, die außer dem Namen und der Beschreibung in die Suche mit einbezogen werden sollen.
- Tags dienen zur logischen Gruppierung von Snippets.
- Dependencies beschränken die Verwendung von Snippets auf Anwendungen, bei denen die angegebenen Abhängigkeiten im Classpath erfüllt sind.
- UUID ist eine nicht editierbare ID des Snippets.
In die Registerkarte Raw Source (2) wird der Snippet-Quelltext eingetragen. Hier können bei Java-Snippets neben reinem Java Code auch Java Editor Template Variables angegeben werden, um dynamische Inhalte zu erzeugen.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.