Ich möchte Tabs wie Firefox, aber für Emacs.
Ich habe folgendes gefunden: http://emacswiki.org/emacs/TabBarMode
Aber es wird nur zu jedem Puffer ( Fenster) hinzugefügt in der Emacs-Terminologie) wird jedoch nur eine Leiste in der die aktuell geöffneten Puffer angezeigt werden.
Ich möchte, dass ein Tab mehrere Puffer ( Fenster in der Emacs-Teminologie) enthält, die ich nach Wunsch aufteilen kann. Dh jeder Reiter sollte einem "Fensterzustand" entsprechen (im Sinne von window-state-get
).
Ich hätte eine Registerkarte für meine Aufgaben, eine andere für Code, eine andere zum Lesen im Internet usw.
Ist das möglich? Kann die Tab-Leiste dafür angepasst werden?
[edit2]
Diese Frage hat mehr Aufmerksamkeit auf sich gezogen als ich erwartet hatte. Es sieht so aus, als gäbe es eine Lösung, die jedoch ein wenig Nachforschungen und Optimierungen erfordert. Während diese / nächste Woche ein bisschen beschäftigt für mich ist, werde ich die Antworten durchgehen und versuchen, etwas zu bauen, das funktioniert, und dann werde ich diese Frage bearbeiten, um meine Ergebnisse widerzuspiegeln. Bitte warten =)
[edit]
Ähnlich wie:
/programming/24157754/make-frames-in-emacs-gui-behaves-like-frames-in-terminal
Ich würde mich auch mit mehreren Frames in einer einzigen GUI-Sitzung begnügen.
Antworten:
Puffer in Gruppen aufteilen
Dies ist mit der Tabbar möglich. Sie können Gruppenpuffern in Gruppen Regeln hinzufügen. Hier ist ein grundlegender Ausschnitt:
Beispielregeln:
Sobald Sie die Regeln erstellt haben, können Sie auf der Tab-Leiste auf + oder - drücken, um die Gruppen umzuschalten, und auch auf ◀ und ▶, um zwischen den Puffern zu wechseln. Oder binden Sie einfach die folgenden Defuns:
und mit der Tastatur zwischen Registerkarten und Registerkartengruppen wechseln.
Persönlich gruppiere ich Registerkarten, damit ich sehe, was geöffnet ist, navigiere sie aber mit
ido-switch-buffer
.Zwischen Regeln wechseln
Man kann auch verschiedene Sätze von Puffergruppierungsregeln definieren und zwischen diesen wechseln. Hier ist ein Beispiel für das Wechseln zwischen zwei Gruppen von Puffergruppierungsregeln:
Dies schaltet zwischen den Defuns
tabbar-buffer-groups-common
undtabbar-buffer-groups
Tab-Gruppierungen um.Sortieren Sie die Registerkartenpuffer nach Namen
Ich finde es vorteilhaft, Tabbar-Puffer nach Namen zu sortieren. So bekommen Sie es:
quelle
ATTRIBUT: Die Gruppierung von Puffern auf Frame-Basis ist eine direkte Implementierung der von Alp Aker entwickelten / geschriebenen Konzepte und ausgewählten Codeteile in der Bibliothek frame-bufs: https://github.com/alpaker/Frame-Bufs
Im Folgenden finden Sie ein Beispiel für die
tabbar.el
dynamische Verwendung der Bibliothek und der Gruppierung von Registerkarten / Puffern pro Frame, indem entweder Registerkarten / Puffern hinzugefügtC-c C-a
oder Registerkarten / Puffern entfernt werdenC-c C-n
. Es gibt nur zwei (2) Gruppen - die dem aktuellen Frame (dh"A"
) und NICHT dem aktuellen Frame (dh"N"
) zugeordnet sind. Die Gruppen sind rahmenlokal, was bedeutet, dass jeder Rahmen eine eigene Gruppierung haben kann. Die benutzerdefinierte Gruppierung kann mit zurückgesetzt werdenC-c C-r
. Wechseln zwischen assoziierten und nicht assoziierten Gruppen mitC-tab
. Mit zum nächsten Tab / Puffer in der aktuellen Gruppe wechselnM-s-right
. Mit zum vorherigen Tab / Puffer in der aktuellen Gruppe wechselnM-s-left
.Tabs / Puffer können mit
my-add-buffer
und programmgesteuert hinzugefügt oder entfernt werdenmy-remove-buffer
. Ein Beispiel zum Öffnen bestimmter Puffer in ausgewählten Frames finden Sie in dem verwandten Thread mit dem Titel Abfangen einer Datei vor dem Öffnen und Entscheiden, welcher Frame geöffnet werden soll : /programming//a/18371427/2112489 Die Funktionmy-add-buffer
müsste an den entsprechenden Stellen des Codes in den obigen Link eingefügt werden, wenn ein Benutzer diese Funktion implementieren möchte.Der Benutzer möchte möglicherweise einen Eintrag in einem benutzerdefinierten
mode-line-format
Format erstellen, in dem der Name der aktuellen Registerkartengruppe in der Moduszeile angezeigt wird, indem das folgende Snippet eingefügt wird: Eine(:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t))))
detailliertere Anpassung der Moduszeile würde den Rahmen dieses Beispiels jedoch sprengen.Die Funktion
tabbar-add-tab
wurde geändert, um die Registerkarten / Puffer zu alphabetisieren.Die Funktion
tabbar-line-tab
wurde so geändert, dass je nach Situation vier (4) verschiedene Gesichter zur Verfügung stehen. Wenn die Registerkarte / der Puffer mit dem Frame verknüpft ist und ausgewählt ist, verwenden Sietabbar-selected-associated
face. Wenn die Registerkarte / der Puffer mit dem Frame verknüpft und NICHT ausgewählt ist, verwenden Sietabbar-unselected-associated
face. Wenn der Tabulator / Puffer NICHT mit dem Frame verknüpft ist und ausgewählt ist, verwenden Sietabbar-selected-unassociated
face. Wenn der Tabulator / Puffer NICHT mit dem Frame verknüpft und NICHT ausgewählt ist, verwenden Sietabbar-unselected-unassociated
face.Der folgende Screenshot zeigt die zwei möglichen Puffer- / Registerkartengruppierungen: (1) Auf der linken Seite befindet sich eine Gruppierung der Puffer / Registerkarten, die dem Rahmen mit dem Namen
SYSTEM
[gelbe und weiße Registerkarten] zugeordnet sind Mode-Line; und (2) auf der rechten Seite ist eine Gruppierung der Puffer / Tabs, die NICHT dem Rahmen mit dem NamenSYSTEM
[blaue und rote Tabs] zugeordnet sind, wobei ein Großbuchstabe "N" in der Moduszeile angegeben ist.quelle
Betrachten Sie das Auschecken von elscreen , obwohl es Puffer nicht wirklich gruppiert.
Es gruppiert Fenster und bietet Zugriff auf mehrere Layouts (Registerkarten), zwischen denen Sie schnell wechseln können. In meinem Workflow befinden sich häufig Ruby-Code und zugehörige Tests auf einem Bildschirm, während sich meine Aufgaben- und Organisationsnotizen auf einem anderen befinden und sich in einem dritten möglicherweise ein Arbeitspuffer zum Erstellen von SQL-Abfragen befindet. Auf diese Weise kann ich problemlos zwischen Aufgaben und Projekten wechseln, obwohl sich jeder Bildschirm auf denselben Pufferpool stützt.
quelle
Wie wäre es mit meinem Plugin, Centaur-Tabs? Es hat viele Konfigurationsoptionen, ist sehr funktional, wird von sehr beliebten Themen wie Kaolin-Themen unterstützt und ist insgesamt ein wirklich gut aussehendes und ästhetisches Paket (je nach Feedback des Benutzers). Es ist in MELPA verfügbar und sieht folgendermaßen aus:
quelle
Hier ist meine Konfiguration, für was es sich lohnt. Es verfügt über:
mouse-2
zum Schließen, wie in Browsern ,mouse-3
zum Öffnen in einem neuen Emacs-Fenster, wie in i3 )M-left
& rechte Schalter-Tabs, wie in TMux / Screen )moe-dark
" config enthalten)*buffers*
und "normal")Tab-Leiste
Anhang 1 - Thema Moe
Anhang 2 - Die letzten 2 Puffer umschalten (KB-Makro)
quelle