Eclipse als Matlab Editor

Aus Physik
Wechseln zu: Navigation, Suche

Editor-Plugin

Genauere Informationen zum Editor gibt's auf der Seite Meditor

Gewüschte Features

  • Syntax-Highlighting mit allen Keywords
  • Syntax-Highlighting funktioniert auch bei folgenden Konstrukten: y=x'; %kljdsad
  • Templates über Strg+Leertaste
  • Code-Completion
  • Automatische Einrückung
  • Tab verschiebt ganze Zeile wie im emacs
  • Automatische Codeausrichtung des ganzen Skripts
  • Matching Brackets

Status

Implementiert:

  • Syntax-Highlighting
  • Matching Brackets
  • Automatische Einrückung, auch korrektes Ausrichten von Codeteilen
  • Tab wie in Emacs
  • Hilfefunktionen
  • Exportfunktionen (XML, HTML, LaTeX, PDF)

Builder-Plugin

Gewünschte Features

  • Matlab Syntax wird wie in Eclipse üblich sofort überprüft
  • Prüfung soll anhand der Sprachgrammatik ausgeführt werden.

Status

Bis jetzt ist eine Syntaxprüfung implementiert, die 1. mit mlint (bei installiertem Matlab) und 2. mit einem Matlabsyntaxcheck, welches über jython aufgerufen wird, gemacht wird. Das ist jedoch nicht in jedem Fall eine befriedigende Lösung, da wenn die Sprachgrammatik wirklich im Editor Plugin implementiert wäre, dies sehr viel einfacher über diese ablaufen könnte. Beim python-Plugin wird jedoch auch auf pylint gesetzt und das funktioniert auch wunderbar. Also ich denke, der Benutzer sollte zusätzlich zumindest mlint zur Verfügung gestellt bekommen, da dort auch auf nicht vorhandene Befehle und ähnliches, was nicht über die Grammatik funktioniert gecheckt wird. Das matlabsyntaxcheck wäre durch eine Implementierung der Sprachgrammatik wie in Eclipse üblich zu ersetzen.

Debug (bzw. Konsole?)-Plugins

  • Matlab startet nicht wie eingestellt mit ${workspace_loc:/${project_path}} sondern immer mit ~/matlab als wokspace.
Ist nur bei den "neueren" StudentInnen so (Matrikelnummer >= 2001?), da bei ihnen im Homedirectory ein script startup.m hineinkopiert wurde, welches automatisch in dieses Verzeichnis hupft. Man müsste beim Starten von Matlab durch den Parameter -r "cd pfad" das Verzeichnis angeben in dem die Daten liegen. Aber siehe unten..
  • Autovervollständigung mit der TAB Taste funktioniert in der integrierten Matlab Console nicht.
Matlab wird normalerweise nicht auf diese Art (als externes Tool) gestartet. Daher ist der "Fehler" mit der nicht
funktionierenden TAB-Taste (unter anderem funktionieren auch die Cursor-Tasten nicht) relativ egal. Das war eine Notlösung, da das
einloggen per ssh (und somit der Aufbau) nicht funktioniert hat. Siehe unten... Wenn man zusätzlich eine Matlab-Konsole haben möchte,
dann müsste man wie bei den externen Tools eine Art Terminal Emulator machen, der auch auf diese Tasten reagiert.

Es gibt sowieso ein Problem mit einer integrierten Matlab-Konsole. Wir haben bis jetzt noch keine Lösung gefunden, mehrere Workspaces mit Matlab zu verwalten. Bei der Ausführung eines Beispiels muss man ja zuerst alle Variablen löschen, damit keine Beeinträchtigungen auftreten. Damit würden auch alle selbsteingegebenen Variablen wegsein. Wenn man jedoch noch zusätzlich eine Matlab-Konsole startet braucht man zwei verschiedene Matlab-Lizenzen, was zuviel sein kann. Im Moment sind zum Beispiel gerade alle verbraucht und bei 80 Studienanfängern, die jeweils mit 2 Matlabs gleichzeitig arbeiten ..

Deswegen ist es daweil geplant, dass Beispiele (bzw. selbstgeschriebene Programme) einfach über die Pipe ausgeführt werden, die Variablen nachher über den Workspace-Viewer angezeigt werden) und der Rest gar nicht da ist. Wenn dann jemand auf die Idee kommt, sich selbst Matlab als externes Tool (wie jetzt geschehen) einzubinden, kann man auch nix machen.

Lösungsvorschläge für das Verwalten mehrerer Workspaces mit Matlab

  • Speichern aller Variablen vor der Ausführung eines Beispiels und nachträgliches Wiedereinspielen


Grundlagen (Editoren in Eclipse)

Wie nicht anders zu erwarten stellt Eclipse ein umfassendes Framework für das Erstellen eigener Editoren zur Verfügung. Damit kann man sich bei der Programmierung auf die Kernfunktionalitäten konzentrieren, allerdings muss man sich erst mal im Framework zurechtfinden (es sind seehr viele Klassen und Interfaces, mit denen man es zu tun hat).

Die gröbste Einteilung der grundlegenden Texteditor-Funktionen ist:

  • Inhaltsassistenz
  • Syntaxhervorhebung
  • Formatierer

Die hier streng durchgezogene Aufteilung ist für unseren Editor, abgesehen von der schönen Trennung von Funktionalitäten, auch deshab sehr angenehm, da man sich so einer Aufgabe nach der anderen widmen kann.


Vergleich mit dem Fortran-Editor

Zitat aus Photran 3.0 Developers Guide, Seite 15:

5.1 Lexer-based Syntax Highlighting
The main difference between our Fortran editor and a "normal" Eclipse editor is that we do not use the typical means of syntax highlighting. Since Fortran does not have reserved words, keywords such as "if" and "do" can also be used as identifiers. So the word "if" may need to be highlighted as a keyword in one case and as a varible in another.
To do this, we actually run the Fortran lexical analyzer over the entire source file. It splits the input into tokens and specifies whether they are identifiers or not. We create a partition for each token. We also create a partition for the space between tokens. Each entire partition, then, is given a single color, based on its contents (keyword, identifier, or comments/whitespace). This is all done in the class FortranPartitionScanner.

Dies heißt, dass wir mit dem Editor des Photran-Plugins nicht so viel anfangen können wie erhofft, falls wir den Matlab-Editor auf die Eclipse-übliche Weise schreiben wollten. Andererseits stellt dies natürlich auch einen interessanten Ansatz dar.

Weitreichende Konsequenzen hat dieser Unterschied jedoch nicht, da nur die Art wie Partitionen erzeugt werden betroffen ist.