Meditor
Version vom 13. November 2005, 16:30 Uhr von Osiris (Diskussion | Beiträge)
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.