Meditor: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Osiris (Diskussion | Beiträge) |
Osiris (Diskussion | Beiträge) |
||
Zeile 32: | Zeile 32: | ||
Der Partitioner ist<tt>FastPartitioner</tt> (war vorher der deprecated <tt>DefaultPartitioner</tt>) |
Der Partitioner ist<tt>FastPartitioner</tt> (war vorher der deprecated <tt>DefaultPartitioner</tt>) |
||
+ | |||
+ | |||
+ | Weiters gibt es <span style="color:#00CC44"><tt>MatlabScanner</tt></span>, welche allerdings nur für die Erstellung eines <tt>DefaultDamageRepairer</tt> in der Funktion <span style="color:#00CC44"><tt>MatlabConfiguration.getPresentationReconciler(...)</tt></span> verwendet wird. |
||
+ | java.lang.Object |
||
+ | |- org.eclipse.jface.text.rules.RuleBasedScanner |
||
+ | |- at.tugraz.itp.mltutor.meditor.editors.<span style="color:#00CC44">MatlabScanner</span> |
||
+ | Anmerkung: <tt>RuleBasedPartitionScanner</tt> ist nur für <tt>IPredicateRules</tt>. |
||
Zeile 69: | Zeile 76: | ||
# Einen <tt>DocumentProvider</tt> erweitern um ein <tt>IDocument</tt> Objekt, welches die Datenrepräsentation darstellt, zu erhalten. Dies ist auch der Ausgangspunkt für Notifacations. |
# Einen <tt>DocumentProvider</tt> erweitern um ein <tt>IDocument</tt> Objekt, welches die Datenrepräsentation darstellt, zu erhalten. Dies ist auch der Ausgangspunkt für Notifacations. |
||
# Actions werden in der Funktion <tt>createActions()</tt> (Memberfunktion des erzeugten Editors) hinzugefügt. |
# Actions werden in der Funktion <tt>createActions()</tt> (Memberfunktion des erzeugten Editors) hinzugefügt. |
||
+ | |||
+ | |||
+ | ==Fragen== |
||
+ | |||
+ | * Warum werden die Keywords in einer eigenen Klasse (MatlabScanner) nur für den DefaultDamageRepairer und nicht für die Partitionierung verwendet? <br> Oder anders gefragt: Wozu MatlabScanner und MatlabPartitionScanner. |
Version vom 13. November 2005, 16:30 Uhr
Inhaltsverzeichnis
Ziel
Ein professioneller Editor für Matlab
Features:
- Syntax-Highlighting
- Automatische Einrückung
- Matching Brackets
- Templates?
Vorhandene Strukturen
In grün Geschriebenes sind die selbst entwickelten Klassen.
Editor
... |- org.eclipse.ui.texteditor.AbstractTextEditor |- org.eclipse.ui.texteditor.StatusTextEditor |- org.eclipse.ui.texteditor.AbstractDecoratedTextEditor |- org.eclipse.ui.editors.text.TextEditor |- at.tugraz.itp.mltutor.meditor.editors.MatlabEditProjection |- at.tugraz.itp.mltutor.meditor.editors.MatlabEditor
Partitionierung des Dokuments
PartitionScanner ist MatlabPartitionScanner.
java.lang.Object
|- org.eclipse.jface.text.rules.RuleBasedScanner
|- org.eclipse.jface.text.rules.BufferedRuleBasedScanner
|- org.eclipse.jface.text.rules.RuleBasedPartitionScanner
|- at.tugraz.itp.mltutor.meditor.editors.MatlabPartitionScanner
Der Partitioner istFastPartitioner (war vorher der deprecated DefaultPartitioner)
Weiters gibt es MatlabScanner, welche allerdings nur für die Erstellung eines DefaultDamageRepairer in der Funktion MatlabConfiguration.getPresentationReconciler(...) verwendet wird.
java.lang.Object
|- org.eclipse.jface.text.rules.RuleBasedScanner
|- at.tugraz.itp.mltutor.meditor.editors.MatlabScanner
Anmerkung: RuleBasedPartitionScanner ist nur für IPredicateRules.
Weitere Schritte
Partitionierung
- Schön wäre es, wenn auch Regular Expressions für die Partitionierung verwendet werden könnten. Damit könnten z.B. Variablen erkannt werden, weiters ist es besonders praktisch, dass die RegEx bereits entwickelt sind.
- Leider gibt es als Futter für den RuleBasedScanner nur die Klassen:
- NumberRule
- PatternRule, davon abgeleitet:
- MultiLineRule
- SingleLineRule
- WhitespaceRule
- WordRule
- Idee: Eine Klasse für RegEx schreiben, die IRule oder IPredicateRule implementiert.
- Leider gibt es als Futter für den RuleBasedScanner nur die Klassen:
Diverses
Anmerkungen zur Entwicklung
Folgende Plugins werden vom Meditor-Plugin benötigt (einzutragen bei Dependencies)
- org.eclipse.ui
- org.eclipse.core.runtime
- org.eclipse.ui.workbench.texteditor
- org.eclipse.jface.text
- org.eclipse.ui.editors
- org.eclipse.core.resources
- org.eclipse.ui.ide
- org.eclipse.ui.views
- org.eclipse.jdt.ui
Erstellen eines eigenen Editors (nur Anmerkungen)
- Klasse von AbstractTextEditor ableiten
- Klasse von SourceViewerConfiguration ableiten
Dies ist der Ausgangspunkt für das Hinzufügen von eigenen Funktionalitäten - Einen DocumentProvider erweitern um ein IDocument Objekt, welches die Datenrepräsentation darstellt, zu erhalten. Dies ist auch der Ausgangspunkt für Notifacations.
- Actions werden in der Funktion createActions() (Memberfunktion des erzeugten Editors) hinzugefügt.
Fragen
- Warum werden die Keywords in einer eigenen Klasse (MatlabScanner) nur für den DefaultDamageRepairer und nicht für die Partitionierung verwendet?
Oder anders gefragt: Wozu MatlabScanner und MatlabPartitionScanner.