Version 4.3.0 « ◉ » Kapitelende

Version 5.0.0 & 5.0.5

Aktualisiert am 23.11.2023 Lesedauer ~5:40 Min.

Geändertes Programmverhalten

  1. Konfigurationsschalter

    Der Status der Schalter Umgebungsautomatik, Keine Speichern-Dialoge und Kein Medien-FTP-Upload wird beim nächsten Start wieder hergestellt.

  2. Fensterverhalten

    Bei der Rückkehr in  OSE  aus einem anderen Programmfenster mit einem Mausklick in den Text konnte es zu unerwünschten Blockmarkierungen kommen, die mit dem Losschreiben überschrieben werden konntne.

    Das lag an einigen Automatismen beim Fensterwechsel (Cursor-Zentrierung, automatisches Speichern des Textes und der Umgebung, Registrieren von externen Änderungen beim wieder Eintreten). Die Prozesse dafür wurden komplett überarbeitet, womit dieses unmotivierte Blockmarkieren verhindert wird.

    Markierte Blöcke werden bei externen Änderungen dahinter korrekt restauriert, davor verschieben sie sich allerdings relativ zum zusätzlichen Text.

  3. Oberfläche und Programmstart

    Die Abläufe beim Programmstart wurden überarbeitet.

    • Das Programm startet jetzt signifikant schneller, wenn die Umgebungsautomatik aktiv ist. Der Dialog dafür wurde entfernt.
    • Bei Wechsel der aktiven Umgebung und beim Speichern/Exportieren ohne Dialoge, wird die Aktion in der Statuszeile für ca. 5 Sekunden mit einem Pfadhinweise quittiert. Währenddessen wird zusätzlich als „Hinweislampe“ die Sitzungsdauer mit der Farbe der Wortliste hervorgehoben.
    • Die Kopfleiste verwendet jetzt den Standard-Systemfont in Standardschrift, bisher war das ein fest vergebener Font, der den Bereich meistens zu stark hervorgehoben hat.
    • Es wurden einige neue Designs hinzugefügt.

    Beim ersten Programmstart werden Grundkonfigurationen für die neuen Designs in die Programm-Konfiguration geschrieben. Diese können allerdings erst nach einem erneuten Start verwendet werden.

  4. Editor-Variablen

    Die Editor-Variablen werden in zwei getrennten Prozessen verarbeitet:

    • Die Lesezeiten werden jetzt explizit nach dem Präprozessor-Funktionen ersetzt, damit ggf. eingefügtes Markdown berücksichtigt wird.

      Die Variablen haben nun unahbängig vom „Worte zählen“ im Editor immer einen gültigen Wert für den zur Konvertierung verwendeten Markdown-Text, ignorieren aber weiterhin über Module oder Postprozessor-Funktionen eingefügten Inhalt.
    Bitte beachten:

    Soll die Lesezeit im Layout ausgegeben werden, ist weiterhin eine Yaml-Variable erforderlich, mit der sie dort zur Verfügung steht.

    • Die übrigen Variablen und Parameter werden vor dem Postprozessor-Funktionen im bis dahin erzeugten HTML-Zwischenergebnis ersetzt, damit sie dort ggf. zur Steuerung verwendet werden können.

    Diese Änderung ist grundsätzlich abwärtskompatibel. Theoretisch könnte sich durch bisher ignorierte Verwendung dieser Variablen innerhalb von Moduldefinitionen eine veränderte Ausgabe ergeben.

  5. Listen

    Für Aufzählungen erfolgt die Prüfung des Listenformates nun „strikt“. Es verhindert z.B. fehlerhafte Interpretationen von einem Datum am Absatzanfang:

    ^[\t|\s]*⟨⟨⟨⟨[0-9]+⟩|⟨[A-Z]+⟩|⟨[a-z]+⟩⟩[\.⟩]\s⟩|⟨-\s⟩|⟨\s⟩|⟨*\s⟩ [text]
    
    1. Am Absatzanfang können Tabs und Leerzeichen für die Hierarchietiefe verwendet werden
    2. Eine Hierarchie wird durch den ersten Listeneintrag bestimmt.
    3. Für „geordnete Listen„ sind zulässig
      • Zahlen (0-999), Zahl = Startwert
      • Großbuchstaben (A-ZZZ), Buchstabe = Startwert außer I = Römische Zahlen
      • Kleinbuchstaben (a-zzz), Buchstabe = Startwert außer i = Römische Zahlen
    4. Geordnete Listen müssen wahlweise mit Punkt oder schließender, geschweifter Klammer1 abgeschlossen werden.
      1. Für „ungeordnete Listen“ gültig sind
      2. Plus, Minus, Mal-Zeichen
    5. Allen Aufzählungen muss (mindestens) ein Leerzeichen folgen
  6. Externe Bearbeitung

    Statt einem Vergleich des Zeitstempels bei Verlassen und Aktivieren von  OSE  werden externe Änderungen an der Arbeitsdatei mit einer Prüfsumme erkannt.

    Es wird versucht, einen markierten Block bei der Rückkehr zu restaurieren. Bei Änderungen davor wird er allerdings entsprechend der Einfügung verschoben. Änderungen dahinter stellen ihn wieder korrekt her. Änderungen im Block selbst verkürzen die Markierung entsprechend.

    Dieses „bedingt vorhersehbare“ Verhalten des Blocks sorgt dafür, dass zumindest „in etwa“ die Position wieder hergestellt wird, die beim Verlassen zentriert war.

  7. Pomodoro-Timer

    Bisher wurde der Pomodoro-Timer 🍅 von Datei-Aktionen (Laden, Neu) zurückgesetzt und ggf. beim Weiterarbeiten nach einem Programmstart fortgesetzt. Jetzt wird der Pomodoro-Timer grundsätzlich mit dem Programm gestartet. Die Zeitabschnitte werden auf die aktuelle Arbeitszeit im Editor angewandt. Ein „Neustart“ des Pomodoro-Timer kann mit setzten der Vorgabezeit („0“) erzwungen werden.

    Zu Beginn einer Pomodoro-Pause erfolgt (bei eingeschalteten Lautsprechern) ein dezenter akustischer Hinweis.

  8. Projekt generieren

    Damit die neue Editor-Variable „%%%BREADCRUMB%%%“ verlässlich funktionieren kann, werden bei Aufruf von Projekt neu generieren zuerst alle Index-Dateien des Projekts und anschließend die übrigen Dateien erzeugt.

  9. Funktion choice

    Damit „choice“-generierte Überschriften korrekt in Inhaltsverzeichnissen (TOC) angezeigt und verknüpft werden, wurde die Notation von choice erweitert. Damit kann ein „HTML-Rumpf“ erzeugt werden. Für eine korrekte Interpretation muss choice der einzige Eintrag im Absatz sein und in <…> stehen. Der Parser interpretiert den so eingeschlossenen Absatz als „Code“, der durchgereiht wird. Die Funktion ergänzt diese Zeichen zu einer vollständigen Überschrift. Die Hierarchie wird über die Zahlen 1..6 an erster Stelle der Zuordnung bestimmt.

    Aus

    <­ choice 4headings : Fallback | Als Überschrift ­>
    

    wird

    <h4 id="als-ueberschrift">Als Überschrift</h4>
    

    Die ID entspricht dem Inhalt. Vorher war die ID kryptisch und ein Anspringen über ein choice im Text deshalb unmöglich.

  10. Projektquerverweise

    Für Projektquerverweise öffnet sich jetzt immer ein Eingabefeld für den Suchbegriff. Statt Dialog ist es ein Drop-Bereich oben. Ein markierter Begriff wird übernommen und kann dort für die Suche angepasst werden, d.h. der bisher für die Suche verwendete markierte Text kann überschrieben werden. Das ermöglicht eine Anpassung der Suche, statt nach dem Einfügen der Verknüpfung die Anpassung des verlinkten Textes.

  11. Softbreak

    Die Unterstützung von „Softbreaks“ („<br/>“) wurde überarbeitet. Es werden zwei Varianten unterstützt:

    • Ein „Backslash („\“) am Zeilenende
    • und „<br/>“ bzw. <br> am Zeilenende

    Die bei diversen Markdown-Dialekten unterstützen Variante der zwei Leerzeichen am Absatzende wurde verworfen: Ein „unsichtbares“ Format-Zeichen widerspricht m.E. dem grundlegenden Ansatz von Markdown.

    Das kann bei bestehenden Dokumenten Seiteneffekte hervorrufen.

  12. Archiv-Funktionen

    Die globalen Archive (Programm einpacken, Alles einpacken) werden nun mit einem „Stundenindex“ erzeugt. Innerhalb einer (Uhrzeit-)Stunde werden damit erzeugte Archive automatisch aktualisiert, danach wird ein neues erzeugt.

    Die Archive werden jetzt im eingestellten Backup-Pfad abgelegt. Ist keiner definiert (also der Default gültig), wird versucht, das Archiv neben der Arbeitsumgebung abzulegen. Das verhindert das Aufblähen der Archive mit bereits bestehenden.

    Projekt- und Site-Archive haben jetzt ebenfalls diese Namensvergabe. Das ermöglicht ein sehr bequemes Archivieren des Projektstatus vor und nach Änderungen.

    Die Versionierung der Site-Archive ermöglicht ggf. das schnelle zurücksetzen umfangreicher Änderungen auf dem Server.

  13. Wrapper-Funktion

    Statt der Pandoc-Notation wird jetzt die  OSE -Abschnittsnotation verwendet, die einen Kommentar am Ende des Abschnitts zulässt. Beim Einfügen wird automatisch der gewählte Wrapper als Schlusskommentar eingefügt, was Verschachtelungen besser lesbar macht.

  14. Funktion ID/Dateiname

    Bei der ID-Generierung werden jetzt Fußnoten oder Module aus dem Ausgangstext entfernt.

    Dieses Änderung kann bestehende Querverweise innerhalb von Seiten oder in Seiten referenzierende Links zerstören, die bisher mit dem ersten Auftreten einer rechteckigen Klammer (egal ob „[“ oder „]“) beendet wurden.

    Dieser möglichen Inkompatiblität steht eine sicherere Generierung von unterschiedlichen, ansonsten identischen Referenzen entgegen:

    ### Das [Trüffelschwein]⟨/info/trueffelschwein⟩
    ### Das [Rasenschaf]⟨info/rasenschaf⟩
    
    Bisher wurde daraus:
    <H3 id="das" tabindex="0"><a href="/info/trueffelschwein">Das Trüffelschwein</a></H3>
    <H3 id="das" tabindex="0"><a href="info/rasenschaf">Das Rasenschaf</a></H3>
    

    Beide Überschriften haben den gleichen ID.

    Jetzt wird daraus:
    <H3 id="das-trueffelschwein" tabindex="0">Das <a href="/info/trueffelschwein">Trüffelschwein</a></H3>
    <H3 id="das-rasenschaf" tabindex="0">Das <a href="info/rasenschaf">Rasenschaf</a></H3>
    

    Jede Überschrift hat einen eindeutigen ID.

Neue Funktionen

  1. Änderungsmarkierungen

    Neben der Zeilennummerierung markieren Farbbalken veränderte Zeilen seit dem Laden der Datei. Die Farben zeigen vier verschiedene Stati an:

    • gelb: Diese Zeile ist neu oder wurde geändert
    • grün: Diese Änderung wurde gespeichert.
    • orange: Eine gespeicherte Änderung wurde erneut geändert.
    • blau: Diese geänderte, womöglich zwischenztilich auch gespeicherte Zeile entspricht der ursprünglich geladenen (nach „Undo-Schritten“). Wird nun gespeichert, ist diese Zeile deshalb ohne Marke.

    Dieser Farben gelten für alle Designs gleich.

    Bei der Rückkehr in den Editor nach externer Bearbeitung gelten alle Zeilen als verändert.

  2. Code-Zeilen

    Es kann ein beliebiger Codeblock in die Ausgabe transferiert werden:

    <?code
     wird 1:1 „durchgereicht“
    ?>
    

    Im Gegensatz zu Kommentar- und PHP-Sequenz wird die Umklammerung (<?code … ?>) entfernt und nur alleinstehend in einem Absatz erkannt. Für die Verwendung innerhalb eines Absatzes — soweit überhaupt erforderlich — hilft eine Funktion aus.

  3. Krümelpfad

    Mit der neuen Editor-Variablen „%%%BREADCRUMB%%%“ lässt sich das Anlegen eines Krümelpfades automatisieren.

    OffSiteEdit-Online HilfeEntwicklungshistorieVersion 5.0.0 & 5.0.5

  4. Aufzählungsautomatik

    Alle Formen von Listen werden nun automatisch eingezogen und fortgesetzt bzw. beendet. Maßgeblich für die Fortsetzung ist der vorhergehende Absatz. Das Fortsetzen nach einem Absatz ohne Inhalt (nur Aufzählungszeichen) rückt die Aufzählung aus oder löscht sie, wenn die höchste Ebene erreicht ist.

    Es findet kein „Hochzählen“ in Aufzählungen statt. Das gerät bei Nacharbeiten schnell durcheinander und spielt – abgesehen vom Startwert am Anfang – sowieso keine Rolle, denn was vor einem Eintrag steht, entscheidet der Browser über den <ol> Tag und die Anzahl der nachfolgenden <li>-Tags.

  5. Neue Sortieroptionen

    Für Absätze steht neben A…Z und Z…A zusätzlich A11.…A101 und A101…A11 zur Verfügung. Die neuen Funktionen sortieren Zahlen „natürlich“ in Textzeilen. Den Unterschied zeigt eine Gegenüberstellung.

    Die Tastenbefehle für A…Z / Z…A wurden entfernt, da für die neuen Funktionen die Tastenbefehle knapp werden. Der Aufruf kann über die Shortcuts für das Menü („untertrichene Buchstaben“ bei Druck auf ALT) mit der Tastatur erreicht werden.

  6. Export sperren

    Bei der vollständigen Neuerstellung der Export-Dateien können Ordner von der Erzeugung ausgeschlossen werden. Dafür muss der Ordner-Name lediglich mit „-“ beginnen.

    Detaillierte Funkionshinweise hierzu befinden sich im Abschnitt „ Aufräumen - Gesperrte Verzeichnisse

  7. Präprozessor-Funktionen

    Bisher wurden Funktionen ausschließlich nach der Zusamenführung des Layouts mit der generierten HTML-Datei im damit erzeugten Code abgearbeitet. Für das Einbetten von Verzeichnissen oder Dateien war dafür Voraussetzung, dass diese als fertiger Code vorliegen müssen. Bei der Neugenerierung von Websites erfordert Umsicht: Die eingefügten Daten müssen vor der einfügenden Datei erzeugt worden sein.

    Mit den neu eingeführten Präprozessor-Funktionen lässt sich das erheblich einfacher gestalten: Diese Funktionen fügen Markdown-Dateien in den Markdown-Code ein. Deshalb ist eine Verwendung in Template wirkungslos.

    Drei neuen Funktionen referenzieren Markdown-Dateien des aktuellen Projekts und fügen sie vor dem Parsen in die aktuelle Markdown-Datei ein.

    Neu:

    • mdfile
      Bettet eine Markdown-Datei ein.
    • mddir
      Bettet alle Markdown-Dateien eines Verzeichnisses ein.
    • mdtoc
      Verlinkt alle Dateien eines Verzeichnisses als frei sortierbare Liste.

    Die neuen Funktionen sind im Abschnitt Funktionen - Präprozessor beschrieben.

  8. Projekt-Upload

    Alle Dateien des aktuellen Projekts mit dem Standard-Zieltyp können in einem Zug auf den Server geladen werden.

    Bitte die Hinweise bei der Funktionsbeschreibung beachten!

  9. Auto „0“

    Beim Speichern einer Quelldatei wird automatisch die „Arbeitsmarke 0“ gesetzt. Wird diese Datei wieder geladen, positioniert sich der Cursor am Absatz, der zuletzt bearbeitet wurde.

    Dieses Verhalten ist standardmäßig aktiviert. Der Status wird projektbezogen gespeichert. Wird der Schalter Einfügen → Arbeitsmarke → Auto „0“ betätigt, wird der anschließend geltende Status in die Projektkonfiguration der aktuellen Arbeitsdatei geschrieben und beim Laden weiterer Projekt-Dateien so gesetzt.

  10. Strukturprüfung

    Beim Export wird die Struktur der Markdown-Datei überprüft:

    • Gibt es unpaarige runde Klammern () ?
      Das können unvollständige Funktionen, Hyperlinks oder Doppelklammerblöcke auslösen. Zwangsläufig fehlerhaft sind Aufzählungen mit „)“.
      ??( Damit dieser Fehler gefangen ↑ wird
    • Gibt es unpaarige rechteckige Klammern [] ?
      Das kann eine fehlerhafte Modul-Notation sein.
    • Gibt es unpaarige Pandoc-Blöcke ::: … ::: ?

    Hierfür werden Meldungen ausgegeben, die ignoriert oder verfolgt werden können: Die Ausgabe wird fortgesetzt.

    Zum Abbruch der Verarbeitung führen allerdings unpaarige Funktionsblöcke $$$…$$$: Das könnte zu einer Endlos-Schleife führen.

  11. Bei weiteren Protokoll-erzeugenden Operationen werden Prozess-Zeiten ermittelt und im Protokoll ausgegeben.

Bugfix

  1. Beim Wechseln der Datei über die Historie (Datei → Vorherige → …) fand keine Prüfung der aktiven Umgebung statt. Das ist jetzt der Fall.
  2. Die eingepackten Umgebungen (Programm, „alles“) werden jetzt stundenweise in den Archiv- statt den Programmpfad geschrieben. Das verhindert das exponentielle Wachsen der Archive und ermöglicht ein Problemloses Archivieren „morgens und abends“.
  3. Wurden mehrere Aktionen nacheinander ausgeführt, bei denen ein Protokollfenster geöffnet war, wurden Warnhinweise in das Protokoll umgeleitet und ohne Nachfrage bestätigt.
  4. F3 provoziert keine Fehlermeldung mehr, wenn es (versehentlich) gedrückt wird, obwohl der Fokus sich außerhalb des Arbeitstextes befindet.
  5. Der Einfüge-Cursor befindet sich jetzt unabhängig von der Länge des Links und dem Umbruch im Editor in den Hochkommata für den „Labeltext“
  6. Beim FTP-Upload werden von Seitenlinks angehängte Anker entfernt. Das verhindert eine Fehlermeldung von sehr wohl vorhandenen Dateien, die dann hochgeladen werden können.
  7. Beim Anlegen eines Dummys mit Extender wurde der Projektdefault ohne . angehängt.
  8. Tastebenfehle bereinigt:
    • Projekt einpacken war identisch mit Projekt archivieren, hat jetzt eindeutigen Befehl STRG SHIFT ALT F4
    • Die Projektaktionen aufräumen, generieren können nur noch über die Menü-Shortcuts angesprochen werden
  9. Die Online-Dokumentation wurde an diversen Stellen nachgeführt.
  10. Alle Textausgaben wurden optimiert und angeglichen, damit Gleichartiges gleichartig präsentiert wird. Das verändert einige Ausgaben (hoffentlich) zum Besseren.
  11. Befindet sich der Cursor in der ersten Zeile (Startmarke des Yaml-Headers) werden Arbeitsmarken in die Zeile darunter gesetzt. Das vermeidet Fehlermeldungen wg. eines defekten Headers.

1Das ist kein Markdown-Standard, doch es wird u.a. von Joplin und Typora unterstützt.

Version 4.3.0 « ◉ » Kapitelende