2019-05-14T19:56:29+02:00

Medusa - Die Mutter aller Hydras

Alle Hydras in einer Datei bündeln, um sie besser zu pflegen. Mit Kontextsensibilität

Medusa

Eines der Probleme aller Texteditoren ist, das sie eigentlich zwei verschiedene Funktionen miteinander vereinbaren müssen, die Erfassung von Text, und die Bearbeitung von Text. Das wir uns nur selten bewusst sind wie verschieden diese beiden Aufgaben sind, ist auch Teil des Problems. Unser Verstand neigt dazu nahtlos zwischen diesen beiden Aufgaben hin und her zu wechseln.

Wir schreiben einen Satz, und noch während wir ihn erfassen, bemerken wir, dass nach dem letzten Wort wohl besser ein Komma gewesen wäre, und der der ganze Absatz vielleicht sowieso besser als Zitat Teil der Einleitung gewesen wäre.

Diese Art zu arbeiten macht es notwendig jederzeit leicht zwischen der Erfassung und der Bearbeitung von Text umschalten zu müssen. Im wesentlichen haben sich dabei 3 Ansätze durchgesetzt. Allen gemein ist, das sich oft die einfachen Funktionen auf eigenen Tasten (Delete, Tab, PageUp, etc…) wieder finden. Fur die komplizierteren Fälle sind üblich:

  1. Die Menusteuerung (z.b. Word) mit dem Problem das man fü die Mausbedienung dann mit einer Hand zwischen Maus und Tastatur hin- und herwechseln muss.
  2. Eine Mehrfachbelegung der Tasten via ALT, CTRL, META, SUPER oder HYPER Tasten. Das ist das Gebiet auf dem Emacs zu Hause ist.
  3. Ein Leaderkey, also eine Taste die in normalem Text nicht vorkommt, und daher zum Umschalten in den Bearbeitungsmodus dient. Dies ist die Domäne von VIM

Spacemacs und der Leaderkey

Genau wie ich halten auch die Macher von Spacemacs die Idee mit dem Leaderkey, für den Weg den sie gerne gehen wollen. Sie haben daher das Konzept so weit es ging übernommen und als Konfiguration über ein vorhandenes Emacs gestülpt. Der Charme besteht darin, dass dadurch keine der üblichen Funktionen in Emacs beeinflusst wird und nun beide Arten der Bedienung nebeneinander existieren können. Was dabei in meinen Augen leider verloren gegangen ist, ist der systematischere Aufbau der Funktionen wie sie Emacs üblicherweise mitbringt. Die von Spacemacs ausgelieferten Hydras (eine Art visuelle Menüführung) scheinen in meinem Kopf nur selten sinnvoll, oder leicht zu merken

Thing at point

So erscheint z.B. immer die gleiche Hydra, wenn ich den Leaderkey drücke, dabei lassen sich in Emacs unzählige Bedienmodi auswählen, die jeweils völlig unterschiedliche Möglichkeiten der Interaktion erfordern.

In einem Blogeinrtag von Derek Feichtinger habe ich neulich eine sehr elegante Lösung gefunden, die nicht nur fü die einzelnen Modi verschiedene Hydra zur Verfügung stellen kann, sonder auch noch in der Lage ist, in dem sehr beliebten Org Mode festzustellen ob sich der Cursor auf einem Objekt (wie z.B. einem Link oder einer Tabelle) befindet, und dann eine Hydra speziell für dieses Objekt aufzurufen.

Fallback

Das elegante an dieser Lösung ist, das sie zum einen sehr leicht zu erweitern ist, und zum anderen auch die Möglichkeit besteht weiterhin eine Standard-Hydra aufzurufen, wenn keiner der besonderen Fälle vorliegt.

Das bietet gerade auch in der Kombination der verschiedenen Hydras ungeahnte Möglichkeiten. Mein Leaderkey ist zum Beispiel die <menu> Taste, die normalerweise rechts der Leertaste zu finden ist, und bei Windows das Kontextmenü aufruft. Unter Linux hatte die bei mir sowieso noch nie eine sinnvolle Funktion

In jeder einzelnen Hydra belege ich wiederum die <menu> Taste mit der am häufigsten benutzten Funktion. Dadurch kann ich mit dem zweimaligen drücken der Menu Taste z.B. im Org Mode das geiche tun, was sonst Ctrl-C Ctrl-C tut, während im Ledger Mode eine neue Buchung angelegt wird.

Auch hier funktionieren, wie bei der Spacemacs Lösung, weiterhin alle eingebauten Emacs Tasten weiterhin wie gewohnt, Ich habe mittlerweile alle Hydras, die ich bisher so erstellt habe in das Medusa Projekt integriert, die Sourcen finden sich hier.