2016-07-19 31 views
1

Wenn Sie Tools wie Org-Modus und Magit verwenden, zeigt der Modus manchmal Hilfemenüs an. Zum Beispiel zeigt der Export im org-Modus ein nettes Menü, das einzelne Schlüssel akzeptiert und dann einen Befehl ausführt. Wenn Sie in Magit die Statusansicht betrachten, werden Registerkarten zum Erweitern der Stufen- und Festschreibungsbereiche akzeptiert.Wie können Menü-/Hilfebildschirme in Emacs korrekt angezeigt werden?

Diese Bereiche, sowohl für Git als auch für Org, sind gut platziert, um einen Teil des Emacs-Rahmens aufzunehmen, der meistens praktisch ist. Wie wählt Emacs das?

Darüber hinaus sind diese Ansichten schreibgeschützt, bis der Benutzer im Fall von Magit und der Statusansicht die Tabulatortaste drückt. Gibt es eine bewährte Vorgehensweise beim Erstellen dieser Ansichten, die die Bearbeitung steuern, aber im Modus die Datei bearbeiten und alternativen Text anzeigen können?

Vielleicht ist die Antwort, werfen Sie einen Blick auf diese Funktion A, B und C. Was gut ist, ich lerne nur und experimentieren auf eigene Faust.

+2

Bitte schränken Sie Ihre Frage auf ein bestimmtes Problem ein, das eine begrenzte Anzahl richtiger Antworten enthält. Jedes Hilfefenster, das Sie in einer Vielzahl verschiedener Hauptmodi sehen, kann eine andere Methode zur Generierung und Anzeige haben, und es gibt keine allgemeine Antwort oder Best Practice - die Frage ist zu weit gefasst, als dass sie beantwortet werden könnte. – lawlist

+0

@lawlist Ich würde gerne - Schwierigkeiten haben, den besten Weg zu entscheiden, ohne es noch breiter zu machen. Zum Beispiel, wenn du einen neuen Modus machst, von dem du wusstest, dass du dich ähnlich wie Magit verhalten willst, und auch den Tab-Cycling des Org-Modus verwendest, wie würdest du anfangen? Ich weiß nicht wirklich wo ich anfangen soll.Ich fummle etwas im Dunkeln herum, bis ich es wert bin, es auf den Stack-Overflow zu setzen. – lucidquiet

+1

Eine Idee, die Sie vielleicht untersuchen möchten, ist "eng an Region", um an einer bestimmten Aufgabe zu arbeiten. Vielleicht möchten Sie auch einen 'indirekten Puffer' untersuchen (er wird zuerst mit 'narrow-to-region' gefüllt), der seinen eigenen Modus und seine eigenen Tastaturbelegungen haben kann, oder er kann den vorherigen Modus aktiv halten. Ich tue dies, wenn ich eine Aufgabe aus dem '* Org Agenda *' -Puffer oder aus der Master-Do-Datei bearbeite. Schau dir 'org-eng-to-subtree' an - ich benutze eine Variante davon mit' make-indirect-buffer'. Zum Beispiel hat meine Hauptaufgabe-Datei 'truncate-lines', während mein indirekter Puffer 'word-wrap' hat. – lawlist

Antwort

2

Magit insbesondere ist nicht die einfachste Einführung in Popup-Puffer in Emacs, aber es ist sicherlich anspruchsvoll und eine gute Lese. Finden magit-popup.el auf Ihrem Rechner, zum Beispiel M-xfind-FunktionRETmagit-Popup-Modus-Setup. Diese Funktion scheint mir ein guter Kandidat zu sein, um mit dem Lesen dieser Datei zu beginnen. Sie können das Makro magit-define-popup im Einsatz zum Beispiel in magit-push-popup in der Datei magit-remote.el

Am Ende sehen, kocht es auf einen neuen Puffer in einem neuen Fenster zu öffnen und ihm einen eigenen großen Modus geben, die all Schlüssel-Bindungen haben . Ein weiterer guter Kandidat ist die Familie temp-buffer-* Funktionen.

Hoffe, das gibt einige Hinweise, um mit dem Lesen zu beginnen.

+0

Ich denke, das ist die Art von Dingen, die ich suchte. Grundsätzlich denke ich, ich muss Magit so gut wie möglich durchlesen. Ich wollte einen neuen Puffer öffnen und einen benutzerdefinierten Modus (einen für die Aufgabe) einstellen sowie die Tastenbelegung anpassen. Aus irgendeinem Grund dachte ich nicht wirklich, dass ich mehr als einen Modus brauche, aber es sieht so aus, als ob magit mehr als einen Modus benutzt. – lucidquiet

1

Eine einfache Möglichkeit, Menüs/Hilfe-Bildschirme à la Magit und org-Modus zu zeigen, ist mit Hydras:

Es ist eine kurze elisp Methode ist zu schreiben und es wird Ihnen ein Menü wie org-Modus geben. Zum Beispiel:

(defhydra hydra-zoom (global-map "<f2>") 
"zoom" 
    ("g" text-scale-increase "in") 
    ("l" text-scale-decrease "out")) 

ps: es ist nicht das, was org-Modus und magit Verwendung. Magits System war bis vor kurzem nicht wiederverwendbar und ich weiß nicht, wie es mit Hydra verglichen wird. Eine nette Eigenschaft von Hydras ist, dass Sie sagen können, dass es nach einem Tastendruck nicht verschwindet, so dass Sie viele Tasten hintereinander drücken können.