Jens' File Editor - Der ultimative Editor für jeden Softi![]()
Da es oft
bemängelt wurde das JFE ja ganz brauchbar, aber ohne jede Dokumentation ,
die nahzu unerschöpflichen Möglichkeiten gar nicht auszunutzen seien, soll
jetzt endlich Abhilfe
geschaffen werden. Hier werden aber nur die wichtigen Dinge beschrieben sein
die sich von
anderen Editoren unterscheiden.
|
|
||
|
|
Wie können Blöcke markiert,gelöscht und eingefügt werden

Das funktioniert mit der Maus im Zusammenhang mit der ALT-Taste.
Bereiche die über die Zeile
hinausgehen werden dabei mit Leerzeichen aufgefüllt und mit
Zeilenumbruch abgeschlossen. Es entsteht also immer ein Textrechteck.
Die Farbe für solche beim Markieren tatsächlich nicht vorhandenen Leerzeichen
kann im Farbmenü eingestellt werden. (15. Texthintergrund Farbe).
Blöcke (aber auch normal markierter Text ) können entweder wie üblich an der
aktuellen
Cursorposition (CTRL-V) eingefügt oder aber in eine Spalte eingefügt werden.
Letzteres geht folgendermaßen vor sich:
Es gibt drei Varianten Blöcke einzufügen
1. Der Block wird in den Text eingefügt da könnte so aussehen (B=eingefügter Block, T=Text)
TTTTTTTTTTTTTTTTTTTT
TTTTTTTTBBBBBTT
TTTTTTTTBBBBB
TTTTTTTTBBBBBTTTTTTTTTT
TTTT BBBBB
TTTTTTTTBBBBBTT
TTTTTTTTTTTTTTTTTTTT
Dazu:
2. Der Block wird in der Spalte eingefügt der Text nach unten geschoben
TTTTTTTTTTTTTTTTTTTT
TTTTTTTTBBBBBTT
BBBBB
BBBBB
BBBBB
BBBBB
TTTTTTTTTTTTTTTTTT
TTTT
TTTTTTTTTT
TTTTTTTTTTTTTTTTTTTT
Dazu:
3. Der Block wird einfach mit Paste eingefügt
TTTTTTTTTTTTTTTTTTTT
TTTTTTTTBBBBB
BBBBB
BBBBB
BBBBB
BBBBB
TT
TTTTTTTTTTTTTTTTTT
TTTT
TTTTTTTTTT
TTTTTTTTTTTTTTTTTTTT
Natürlich können auch eigene Tastaturmakros definiert werden.

Zu jedem Zeichen existiert
ein Byte für die Farbinformation. Davon beschreibt das untere Nibble die
Textfarbe, das obere Nibble den Texthintergrund. Die Farbnummer (0...15) ist
ein Index auf eine Tabelle
die dann den tatsächlichen 24Bit-RGB-Farbwert enthält.
Es sind also beliebige Farben auswählbar aber eben nur 16 verschiedene
gleichzeitig.
Die Farbeinstellung erfolgt über den Menüpunkt
"Einstellungen-Farben". Alle Farbeinstellungen werden in der
INI-Datei bzw. einer Projektdatei gespeichert.
Geändert werden kann eine Farbe durch Markieren des jeweiligen Kästchens mit
der Maus und Click auf "Ändern".
Aus dem Farbdialog kann dann eine andere Farbe gewählt werden.
Die Textvordergrundfarbe im Index 1(das erste Kästchen) ist die voreingestellte
Schriftfarbe die immer für nicht
selektierten und nicht syntaxcolorierten Text verwendet wird. (voreingestellt
schwarz).
Gleichermaßen steht die voreingestellte Texthintergrundfarbe im Index 0 der der
darunterliegenden
Tabelle für den Texthintergrund.
Der Texthintergrund bezieht sich tatsächlich nur auf die tatsächlich durch Text
belegte Bereiche. Alle anderen
Flächen werden mit der "Default Hintergrundfarbe" eingestellt. Zu
Vereinfachung ist es so eingerichtet das eine
Änderung dieser Farbe auch den Index 0 der Farbtabelle,d.h. die
Texthintergrundfarbe mi ändert.
Wer tatsächlich einen andersfarbig hinterlegten Text wünscht muß erst den
Default Hintergrund einstellen und danach
den Texthintergrund.
Besondere Bedeutungen haben noch die Indizes 14 und 15.
Der Farbindex 15 legt fest wie selektierte Bereiche in Voder und Hintergrund
dargestellt werden sollen. Damit kann
ist es möglich das die Selektierung anders als durch die Windows
Defauleinstellung vorgegeben aussieht.
Der Index 14 hat eine doppelte Funktion. Zum einen bestimmt er das Aussehen der
Zeilennummerierungsleiste
zum Anderen gibt die Texthintergruundfarbe an wie bei Blockmarkierung nichtvorhandene Leerzeichen
markiert werden.
Wie definiert man sich ein eigenes Syntaxcoloring
|
|
|
|
|
Für C und C++ ist das
Syntaxcoloring schon grunsätzlich vordefiniert. Man aber kann für verschiedene
Programmiersprachen noch zusätzlich unterschiedliche Farbtemplates erstellen.
Dazu öffnet man das Menü: "Einstellungen-Syntaxfarben.." und legt ein
neues Template an. Der abgefragte Name
ist beliebig und dient dazu die folgenden Einstellungen im INI-File zu
unterscheiden.
Das neue Template ist initial leer und muß erst mit den hervorzuhebenden
Schlüsselworten gefüllt werden.
Ein neuer Eintrag wird angelegt mit dem Button "neuer Eintrag". Im
darauf geöffneten Dialog kann das Schlüsselwort,
die Textfarbe und spezielle Flags angegeben werden. Die Schlüsselworte werden
mit fallender Priorität abgearbeitet.
Das bedeutet die weiter oben stehenden Schlüsselworte werden zuletzt bearbeitet
und können u.u andere davor liegende
überschreiben.
Beispiel:
|
1. else |
|
würde in so coloriert werden: #else |
|
2. #else |
|
anders herum wird das gewünschte Ergebnis erreicht:
|
1. #else |
|
würde in so coloriert werden: #else |
|
2. else |
|
Die Flags haben folgende Bedeutung:
Die Hintergrundfarben sind nicht änderbar.
Eine Besonderheit gibt es noch: man
kann auch einen Zeilenumbruch in ein Schlüsselwort aufnehmen mit "\n"
Dafür funktioniert aber auch die genauso geschriebene Zeichenkette nicht mehr!
Durch "OK"
wird das neue Keywort übernommen. Das Ändern erfolgt analog.
Farben und Schlüsselworte sind im Klartext in der INI-Datei abgelegt und können
auch direkt editiert werden.

Es gibt vier Stufen der Suchfunktion:
Zur einfachen Bedienung
läßt sich durch setzen des Checkmarks "markierten Text übernehmen"
jede Selektion
im Dokument direkt in das Suchfenster übernehmen. Ein wie in anderern
Konkurrenzprodukten erforderliches Kopieren-Einfügen
ist nicht erforderlich. Ansonsten entspricht die Suchfunktion unter 1. der
sonst üblichen Funktionalität mit der Erweiterung das auch nach Sonderzeichen
wie TAB "\t" oder Zeilenumbruch "\n" in Verbindung mit Text
gesucht werden kann. Das Suchen nach Backslash muß
dadurch anders formuliert werden.
Wird die Option "nur in aktueller Datei suchen" aktiviert so werden
die Suchergebnisse nicht einzeln aangefahren sondern als Liste im
Ausgabefenster dargestellt. Durch Doppelklick kommt man dann an die
entsprechende Stelle.
|
Beispiel: |
c:\tmp |
sucht nach "c:TABmp" |
|
|
c:\\tmp |
"c:\tmp" |
Das Suchen nach den
Varianten 2. ,3. und 4. stellt das Suchergebnis im Ausgabefenster dar. Durch
Doppelclick auf die jeweilige Zeile
wird das entsprechende Dokument aktiviert bzw. geladen.
Zusätzlich gibt es die Option sich Suchergebnisse innerhalb von C-Kommentaren
nicht anzeigen zu lassen. Das ist zwar eine sehr
sprachspezifische Einstellungm, (auf Wunsch eines einzelnen nicht genannt
werden wollenden Nutzers) aber bei der vorgesehenen
Anwendung als Programmiereditor sicher ganz nützlich.
Die SuchVariante 4. wird
durch Click auf "Erweitert" aus Suchvariante 2. eingestellt. Damit
ist es möglich auch in nicht aktuell
geöffneten Dateien nach einem Text zu suchen. Hier ist es natürlich sinnvoll
die Zahl der zu durchsuchenden Files einzuschränken.
Das ist möglich über die Angabe eines Dateifilters. Mehere Filter werden durch
Leerzeichen getrennt. Wildcards sind möglich.
|
Beispiele: |
*.c *.h |
sucht nach allen Dateien mit der Erweiterung "h" und "c" |
|
|
O?t*.* |
sucht nach allen Dateien die mit "O" beginnen, findet: Otto.txt, Ottokar.cpp |
Die Suche wird in dem
Verzeichnis durchgeführt das als Initial-Verzeichnis eingetragen ist. Das ist
beim Öffnen des Dialogs zunächst der
aktuelle Arbeitspfad. Unterverzeichnisse werden mit durchsucht wenn die
entsprechende Option selektiert ist.
Lesezeichen (oder
Bookmarks) dienen dazu eine Stelle in einem Dokument schnell wiederzufinden.Das
macht
sich besonders gut wenn man in einem File ständig hin- und her scrollt oder aber
ständig zwischen mehreren Dokumenten
umschaltet. Ein Bookmark wird dargestellt als eine Taste in einem Toolbar der
(default) an der rechten Seite des
Arbeitsbereiches angezeigt wird. Die Bookmarks des gerade aktiven Fensters sind
gelbe Büroklammern alle anderen
schwarze.Der zu jedem Button verfügbare Tooltip zeigt Filename und Zeilennummer
des Lesezeichens an.Einem Lesezeichen
kann auch ein beliebiger Tooltiptext zugewiesen werden. Dazu klickt man mit der
rechten Maustaste auf den
zu ändernden Bookmark und gibt in das erscheinende Eingabefeld den gewünschten
Namen ein.
Bookmarks werden gesetzt durch:
Gelöscht wird auf die gleiche Weise. Man geht zu dem zu löschenden Lesezeichen und löscht es mit den gleichen Kommandos.
|
OpenWindows Mehrfach Click |
|
Damit werden auch Mehrfach-Clicks möglich
|
|
Markierung nach Paste halten |
|
Normalerweise
wird nach dem Einfügen aus der Zwischenablage |
|
Focus erst beim 2.Click |
|
Beim
Wechsel zwischen unterschiedlichen Dokumenten wird das aktuelle Dokument erst |
|
nur eine Instanz öffnen |
|
normalerweise
würde für jedes File das aus dem Explorer geöffnet würde |
|
Tabulatoren |
|
|
|
Backup |
|
Die
Möglichkeit von Backups eines Files können verschieden konfiguriert werden. |
|
Autoindent |
|
Bei
Zeilenumbruch wird der Cursor unter den Anfang der vorhergehenden Zeile
gesetzt. |
|
Keine Suchergebnisse in C-Kommentaren |
|
Beim
Suchen werden gefundene Strings die innerhalb von C-Kommentaren liegen nicht
angezeigt. Diese Einstellung wirkt sowohl für das Suchen in Dateien wie auch
für das Suchen nach Klammern. |
|
Speichern im UNIX-Format |
|
Speichert
nicht wie unter DOS den Zeilenumbruch mit CR/LF (0x0D/0x0A) sondern nur mit
LF (0x0A) |
|
Auto Kopieren |
|
Markierter
Text wird dabei automatisch in die Zwischenablage übernommen. Ist die
Funktion eingeschaltet, |
|
Zeilenumbruch |
|
Damit
wird eingestellt bei welcher Spalte die Zeile selbständig umgebrochen wird.
Man kan dann wählen ob der automatische |
|
Auto Suche |
|
Schaltet den Autobrowser ein/aus |
|
Autosuch Konfiguration |
|
Öffnet den Konfigurationsdialog für den Autobrowser |
|
Defaultverzeichnis |
|
Wenn
dieser Eintrag gesetzt ist, wird für alle Öffnen /Speicher -operationen das
gleiche Defaultverzeichnis angeboten. |
|
Split |
|
Wenn aktiviert läßt sich die Ansicht in maximal 4 unabhängig scrollbare Sichten auf das Dokument splitten |
|
Es ist
eine sehr angenehme Einrichtung editierte Quellen gleich aus
|
|
|
||||||||||||||||||||||||||||||||||||||||||
|
Für den Start einer Anwendung gibt es drei mögliche (aber nicht immernotwendige) Parameter:
Für die Parameter gibt es einige Macros die das Leben leichter machen:
Die Parameter können
direkt aus der Liste ausgewählt, und an der Selektion im Editfeld eingetragen
werden.
In der rechten Spalte ist
ein Beispiel für die erzeugte Ausgabe angegeben. So kann man einen passenden
Filter auswählen. Ein Tool erscheint wenn
es angelegt wurde als Button in einer eigenen Toolbarleiste. Der dort
angezeigte Name Es hat sich
gezeigt das die Ausgabeumleitung manchmal nicht funktioniert wenn im
Hintergrund ein Virensuchprogramm läuft. Manche alte
Tools lasen sich nicht umleiten sondern produzieren immer eine Datei eines
bestimmten Namens. Da hilft es manchmal in einer Die Checkboxen haben folgende Bedeutung:
|
||||||||||||||||||||||||||||||||||||||||||||
Der Autobrowser
Es ist sehr unangenehm wenn
man beim Editieren und Bearbeiten größerer Projekte ständig zwischen
verschiedenen Dateien hin und her springen, bzw. scrollen muß um sich
Variablenamen, Typen, Definitionen Funktionsprototypen und Werte zusammen
zusuchen. Sofern diese Informationen innerhalb des Projektes eindeutig sind
könnte diese Arbeit auch durch das Programm selbst erledigt werden. Genau das
tut der Autobrowser. Wenn er gestartet wird durchsucht er alle konfigurierten
Dateien oder Pfade nach diesen Informationen und baut sich eine interne Liste
mit Verweisen auf die entsprechenden Stellen in den Dateien auf. Wird der
Cursor in einem Dokument über einem Schlüsselwort das sich in der Liste
befindet gehalten, wird ein Tooltip angezeigt. Je nach Listeninhalt hat der
Tooltip nachstehenden Inhalt:
|
Tagtyp |
Schlüsselwort |
Tooltipinhalt |
|
Definition |
#define |
Wert des Defines |
|
Enum |
enum |
Enumname |
|
Typdefinition |
struct |
Name der Struktur bzw.Strukturmember |
|
Funktion |
(entsprechend Kontext) |
Funktionsprototyp |
|
Variable |
(entsprechend Kontext) |
Typ der
Variable |
|
extern Funktionen |
extern |
Funktionsprototyp |
|
|
|
Die Suche
kann entweder innerhalb der konfigurierten Pfade In dem Feld "Suchen
nach:" kann ausgewählt werden welche Der Browser wir über den
Button "B" in der Stauszeile oder über den Der Browserthread läuft
im Hintergrund der Anwendung mit niedriger |
|
|
|
|
|
Entfernt alle Leerzeichen am Ende einer Zeile. |
||
|
Entfernt
alle Leerzeichen am Anfang einer Zeile. |
||
|
Alle
Leerzeilen werden im selektierten Bereich entfernt. |
||
|
Richtet
einen C oder C++ Quelltext so aus das eine |
||
|
Untersucht
alle geöffneten Quellen und Header auf Referenzen |
||
|
|
Die Operationen dieses Dialogs können nicht rückgängig gemacht werden! Also besser vorher speichern.
Nach welchen Regeln erfolgt die C-Syntaxausrichtung
Strukturiert C zu schreiben
ist natürlich Geschmackssache. Demzufolge wird jede Form automatischer
Ausrichtung von irgendwem auch wieder kritisiert werden. Deshalb folgendes
Statement:
Die C-Syntaxstrukturierung realisiert meine persönliche Vorstellung davon wie
C/C++ lesbar stukturiert werden sollte!
Wer's nicht mag muß es ja nicht benutzen. es
bleiben aber trotzdem noch genügend Freiheiten.
Hier die Regeln nach denen ausgerichtet wird:
Wozu ist die Operation HTML-Projekt erstellen verwendbar
Welcher Softi kennt das
Problem nicht: Man bekommt einen Haufen Quellen und Headerfiles (oder man hats
selbst geschrieben)
und solls jetzt dokumentieren oder auch nur den Sinn des Ganzen verstehen. Und
schon fängt man an nach einem Zipfel zu suchen
von dem aus man das Knäuel aufwickeln kann. Üblicherweise ist der erste
gegriffene Faden leider der falsche und man braucht
unendliche Zeit um irgendwie Sinn in das Chaos hineinzu denken.
Da wäre es doch schön wenn man eine Werkzeug hätte was einem die Arbeit
abnehmen würde aufzuklären wer, wen, von wo aus und
wie oft aufruft und wenigstens das mal aufschreibt.
Alle Kommentare die als erstes Zeichen mit ' * ' beginnen
werden auch als Funktionsbeschreibung mit in das HTML-Referenzfile übernommen.
Und genau das soll dies Funktion tun. Und damit es besonders angenehm wird,
werden Funktionsaufrufe gleich mit Links versehen.
Damit kann man dann schön die Aufrufe per Link nachvollziehen. Darüberhinaus
kann man das erstellte HTML-File sehr gut als Basis
für eine Softwaredokumentation verwennden. (HTML läßt sich ja auch in Word
importieren.)
Soweit so gut. Allerdings gibts auch Grenzen wo die Maschinenlogik nicht mehr
kann. Es lassen sich keine indirekten Aufrufe über
Zeiger auflösen. Genauso unmöglich ist es Informationsflüsse über Messages zu
dokumentieren. Hier muß man immer noch selbst im
Code graben.
|
|
|
Template: alphabetische
Funktionsliste: mehrfache Aufrufe
auflisten: Kommentare in
Funktionen nach Klammerebenen einrücken |
Wie muss ein eigenes Template für ein HTML-Projekt aussehen.
Wie in diesem Beispiel das (fast) dem Defaulttemplate
entspricht.
Wichtig ist das nach der Überschrift eine horizontale Linie eingebaut ist.
Tabellen lassen sich nicht nutzen.
Es gibt einige Variablen die ersetzt werden:
|
$f |
der Funktionsname |
|
$s |
der Name des Quellfiles |
|
$h |
der Name des Headerfiles in dem die Funktion deklariert wurde |
|
$r |
Funktionen die diese Funktion aufrufen. Wenn die aufrufende Funktion gefunden wurde wird hier ein Link eingefügt |
|
$c |
Funktionen die durch diese Funktion aufgerufen werdn. Wenn die aufgerufene Funktion gefunden wurde wird hier ein Link eingefügt |
|
$p |
Der Funktionprototyp der Funktion |
|
$dx |
Kommentare
die in das HTML-file übernommen werden sollen. Dabei steht "x" für
ein beliebiges Zeichen das als erstes nch demKommentar beginn steht (kein
Leerzeichen). Damit ist es möglich auch verschiedene Informationen aus den
Kommentaren in der HTML-Beschreibung zu separieren /*# dieser
Kommentar wird genommen //#auch das kommt mit in das HTML-file |
Wenn das File erstellt
wurde kann es natürlich weiter editiert werden, zum Beispiel durch Einfügen von
Struktogrammen und verbaler Beschreibung. Ein erneutes Erstellen überschreibt
solche Änderungen aber wieder.
Im Header des erstellten
HTML-Files (also vor der ersten Funktionsbeschreibung) können auch noch
Informationen aus die aus Kommentaren der jeweils einzelnen Dateien extrahiert
wurden gesammelt werden. Das könnten zum Beispiel Versionskennungen usw. sein.
Da es keine allgemein übliche oder
notwendige Schreibweise dafür gibt, habe ich versucht es so universell wie
möglich zu gestalten.
Was muß man tun:
Angenommen man man hat in jeder Datei einen solchen Dateikopf:
/******************************************************************************/
// CLASS: < ISDNPORT >
// CLASS ID:
/******************************************************************************/
// FILE NAME: isdnPort.h
// VERSION: 3.2.00
// FUNCTION: main function for anything
// REMARKS:
//----------------------------------------------------------------------------*/
// Copyright © 1999 */
/*----------------------------------------------------------------------------*/
// AUTHOR/S: Jens Altmann (TCD) */
//----------------------------------------------------------------------------*/
// CREATION DATE: 02.11.99
//----+------+---------------------------------------------+------------------*/
// VER| DATE | CHANGES | AUTHOR */
//----+------+---------------------------------------------+------------------*/
//
/******************************************************************************/
Nun hätte man gerne die
Informationen über Autor,Version und Erstellungsdatum
jeder
der einbezogenen Dateien in den Kopf der zu erstellenden HTML-Datei übernommen.
Man sucht sich im Quellfile
einen Kenner für die Information die man übernehmen möchte.
Also :
|
Autor |
|
AUTHOR/S: |
|
Version |
|
DATE: |
|
Erstellungsdatum |
|
VERSION: |
Dieser Merker darf keine
Trennzeichen (Leerzeichen,Tabs,Zeilenumbrüche) enthalten!
Für den Dateinamen und den Arbeitsbereich gibt es vordefinierte Merker:
|
Datei |
|
$f |
|
Arbeitsbereich |
|
$prj |
Man schreibt das Template.
Dazu ist es unbedingt wichtig den Bereich in dem diese Informationen stehen
sollen durch den Kommentar <!--prjinfo--> am Anfang und Ende einzugrenzen. Dieses Stück
HTML-code wird
dann für jede Datei kopiert und mit den entsprechenden Informationen gefüllt.
Die im Quellfile zu suchenden Merker werden im Template mit vorangestelltem $ definiert.
Also:
$VERSION:
$AUTHOR/S
$DATE:
Man speichert
ab und erstellt das HTML-File. JFE sucht zuerst nach dem Kommentarbereich. Wenn
dieser existiert werden all mit
$ markierten Worte gesucht. Wenn ein solches Wort gefunden wird, werden alle
Dateien nach diesem Wort (ohne $) durchsucht.
Wenn es in einer Datei innerhalb eines Kommentars gefunden wird, wird der
unmittelbar danachfolgende Text bis zu Zeilenende in
das Template anstelle des Merkers eingetragen.
Klingt ziemlich verwirrend. Am besten man sieht sich mal das Beispieltemplate und seinen Quelltext an.
Arbeitsbereiche sind eine
bequeme Einrichtung wenn man in mehreren Dateien arbeitet und nicht jedesmal
beim Starten alle Files wieder einzeln öffnen will.
In einem Arbeitsbereich werden alle wichtigen Einstellungen abgespeichert wie:
JFE verwaltet auch eine
Liste der zuletzt geöffneten Arbeitsbereiche. Ein Arbeitsbereich wird
automatisch beim Beenden
gespeichert.
Der Name eines
Arbeitsbereiches (Projektes)ist in einem Macro über die Variable $PRJ verwendbar.
Man kann sich auch eine Verknüpfung im Explorer einrichten, so das Projekte auch
direkt mit Doppelclick im Explorer
geöffnet werden können.
|
1. |
Der Text
soll so aussehen und man will vor dem Semicolon |
|
|
|
2. |
Den gewünschten Bereich markieren |
|
|
|
3. |
Kontextmenü
"Spalte ausfüllen" wählen und in dem |
|
|
|
4. |
"OK" Abhängig vom Text und der ALT-Taste ergibt sich folgendes Ergebnis: |
|
ohne ALT-Taste
|
|
mit gedrückter ALT-Taste
|
|
1. |
Markiere
den zu verschiebenden Bereich. |
|
|
|
|
|
|
2. |
Click auf
rechte Maustaste und wähle Einrücken. |
|
|
|
|
|
|
3. |
Verschiebe
mit der Maus (gedrückte linke Taste)die rote Linie |
|
Makros können das Leben
leichter machen! Es gibt bei JFE zwei Möglichkeiten Makros zu definieren
und zu benutzen.
Einmal können Makros als Textbausteine eingefügt
werden oder auch als Tastaturmakros die
Tastaturanschläge aufzeichnen.
JFE ermöglicht es bis
zu 20 beliebige Textbaustein-Makros aus einer
externen Datei zu laden.
Diese Datei muß "macro.txt" heißen und im gleichen Verzeichnis wie
"jfe.exe" stehen.
Macros werden zugänglich über das Kontextmenü.
Ein Macro kann ein beliebiges Stück Text sein und auch ersetzbare Variablen
enthalten.
Das Format um ein Macro zu definieren ist folgendes: (Beispiel)
|
$macro Switch |
||
|
switch( ) |
||
|
{ |
|
|
|
|
case: |
|
|
|
case: |
|
|
|
default: |
|
|
} |
|
|
|
$endmacro |
||
Ein Macro beginnt immer mit
der Anweisung $macro und endet mit $endmacro. Damit können
die Macros in der
Datei auseinander gehalten werden. Was dazwischen steht ist dann der Macrotext.
Der Name der nach $macro in der gleichen
Zeile folgt ist der Name unter dem das Macro im Kontextmenü erscheint.
Nun gibt es vordefinierte
Variablen die beim Eifügen eines Macros erst aktualisiert werden:
|
$dd |
Das aktuelle Datum im deutschen Format dd.mm.yy |
|
$de |
Das aktuelle Datum im englischen Format mm/dd/yy |
|
$FILE |
Der Filename ohne Pfad des aktuellen Dokumentes. |
|
$USER |
Der im Windows eingeloggte Username. |
|
$PATH |
Der komplette Pfadname des aktuellen Dokumentes. |
|
$we |
Der abgekürzte Wochentag in Deutsch. |
|
$wd |
Der abgekürzte Wochentag in Englisch. |
|
$PRJ |
Der Name der Arbeitsbereichs (Projekt). Ist kein Arbeitsbereich vorhanden wird die Variable nicht ersetzt. |
|
$t |
Die aktuelle Zeit im Format hh:mm. |
Diese Variablennamen können
in den Textmakros eingebaut sein und werden zum Zeitpunkt des Einfügens durch
ihre
Werte ersetzt.
Eine Spezialität sind aktualisierbare Makros. Was soll das sein? Normalerweise
werden Variablen beim Einfügen des Makros ersetzt
und damit ist der Text festgelegt. Nun wäre es manchmal wünschenswert das ein
Makro bei jedem Speichern einer Datei aktiualisiert würde.
Beispielsweise um immer die letzte Änderung einer Datei zu dokumentieren. Nun
ist ein Makro, einmal eingefügt ja nicht mehr als solches
zu erkennen. Man muss sich also ein Merkmal künstlich schaffen. Und das geht
so: (Beispiel)
$macro $LETZTE
AENDERUNG
: $dd /$t $USER
$endmacro
Dem Macronamen
wird ein '$' vorangestellt. BeimSpeichern wird der Text nach allen Makronamen die
mit $ beginnen durchsucht
und der Text um den Macrotextersatz verlängert.
Im Beispiel würde das bedeuten das wenn der Text den String "LETZTE AENDERUNG" enthält, dieser
(beispielsweise) durch:
LETZTE
AENDERUNG: 05.05.99 /20:23 altj ersetzt würde. Und das bei jedem Speichern.
Das Verhalten der Variablen beim Expandieren ist unterschiedlich. Die Variablen
die beim Expandieren eine unvorhersehbare Länge haben
überschreiben die nachfolgenden Leerzeichen (! nur solche). Die Variablen die
eine feste Länge haben(Zeit,Datum..) werden eingefügt und der
danach liegender Text nach hinten geschoben.
Tastaturmakros
müssen vor der Benutzung aufgezeichnet werden. Dazu startet man über das Menü:
"Bearbeiten-Macro aufzeichnen" den
Macrorekorder. Die Bedienung ist leicht verständlich. Nach dem Click auf den
roten Aufzeichnungsbutton werden alle Tastaturbetätigungen
und ausgewählte Kommandos aufgezeichnet. Nach Beendigung der Aufzeichnung
(Taste-dunkles Rechteck) kann das Makro als Datei mit
der Endung ".mcr" gespeichert werden. (Diese Datei ist binär und kann
nicht als ASCII -Text gelesen werden.) Gleichzeitig wird dem Benutzer
angeboten das Makro als neues Tool in der Toolleiste anzulegen. Benutzt wird es
dann auch wie ein solches. Ein Click auf den entsprechenden
Button startet das Makro, d.h. alle aufgezeichneten Tasten und Kommandos werden
an
der aktuellen Position !! des Cursors eingefügt
bzw. abgeartbeitet. Man muß sich also sehr genau überlegen was man erreichen
will.
Neben den Tastatureingaben werden auch noch folgende Kommandos aufgezeichnet:
|
Ausschneiden |
|
Kopieren |
|
Kopieren ++ |
|
Einfügen |
|
Zeile Löschen |
|
Suchen (einschließlich Suchtext und Suchflags) |
|
Suche passende Klammer |
|
Selektiere Klammerebene |
|
Großschreibung |
|
Kleinschreibung |
|
An Port senden |
|
Von Port empfangen |
|
Kapitälchen |
Ich selbst benutze Hotkeys
kaum aber es wurde immer wieder gewünscht. Da aber jeder eine andere
Tastaturbelegung
bevorzugt, kann sich nun jeder seine Tastaturbelegung selbst definieren. (Menü
Tastaturbelegung..).
Voreingestellt sind die folgenden Hotkeys.:
|
CTRL-C |
|
Kopieren |
|
CTRL-X |
|
Ausschneiden |
|
CTRL-V |
|
Einfügen |
|
CTRL-Z |
|
Rückgängig |
|
CTRL-I |
|
Markierten Bereich eine Spalte nach rechts einrücken |
|
CTRL-U |
|
Markierten Bereich eine Spalte nach links einrücken |
|
CTRL-B |
|
Markierten Block eine Spalte nach rechts einrücken |
|
CTRL-M |
|
Markierten Block eine Spalte nach links einrücken |
|
CTRL-F |
|
Such - Dialog öfnen |
|
CTRL-R |
|
Suchen/Ersetzen -Dialog öffnen |
|
F3 |
|
Weitersuchen |
|
CTRL-G |
|
Gehe zur Zeile.. |
|
CTRL-Y |
|
Lösche Zeile |
|
CTRL-F9 |
|
Tool starten |
|
F12 |
|
Lesezeichen setzen/löschen |
|
CTRL-P |
|
|
|
CTRL-N |
|
Neues Dokument |
|
CTRL-S |
|
Speichern |
|
CTRL-O |
|
Öffnen |
|
F11 |
|
Speichern und Beenden ohne zu fragen |
|
CTRL+F11 |
|
ohne Rückfrage Beenden ohne zu Speichern |
|
F6 |
|
nächstes Dokument |
JFE verfügt natürlich auch
über eine ausgebaute Druckfunktionalität. Im Gegensatz zu anderen Editoren kann
auch
ein farbiger Ausdruck erzeugt werden. Voraussetzung ist das das
Syntaxhilighting eingeschaltet wird. Über die Seitenansicht
kann das Layout kontrolliert werden. Der eingestellte Schriftfont wird auch für
den Ausdruck verwendet.
|
Um den
Druck individuellen Wünschen anzupassen ist dem Druckdialog
Es ist möglich auch nur
eine Auswahl von Zeilen des Dokumentes Zum Drucken kann unabhängig vom Bildsschirmfont eine eigene Schriftart gewählt werden. |
|
|
Anbindung von anderen Anwendungen über TCP-Ports
Der Toolbar zum Aufzeichnen
von Makros enthält zwei zusätzliche Buttons zum Versenden und Empfangen von
Text über
TCP-Ports. Damit ist es möglich externe Filter über Makros anzubinden.
Der Button "Sende zum Port" sendet den Inhalt der Zwischenablage an
das gewählte Serverport.
Der Button "Lesen vom Port" löscht die Zwischenablage, wartet auf
Daten vom eingestellten Port und kopiert in die Zwischenablage.