Chciałbym zakładek takich jak Firefox, ale dla Emacsa.
Znalazłem to: http://emacswiki.org/emacs/TabBarMode
Ale po prostu dodaje do każdego bufora ( okno w terminologii Emacsa) pasek, który pokazuje aktualnie otwarte bufory.
Chciałbym, aby karta mogła pomieścić wiele buforów ( okna w teminologii Emacsa), które mogę dowolnie podzielić. Tj. Każda zakładka powinna odpowiadać „stanowi okna” (w sensie window-state-get
).
Miałbym jedną kartę do moich zadań, drugą do kodu, drugą do czytania w Internecie itp.
czy to możliwe? Czy pasek narzędzi można tak dostosować?
[edit2]
To pytanie przyciągnęło więcej uwagi, niż się spodziewałem. Wygląda na to, że istnieje rozwiązanie, ale takie, które wymagałoby trochę badań i modyfikacji. Podczas gdy ten / następny tydzień jest dla mnie trochę zajęty, przeanalizuję odpowiedzi i spróbuję zbudować coś, co działa, a następnie zmodyfikuję to pytanie, aby odzwierciedlić moje ustalenia. Proszę czekać =)
[edytuj]
Podobne do:
/programming/24157754/make-frames-in-emacs-gui-behaves-like-frames-in-terminal
Osadziłbym także wiele ramek w jednej sesji GUI.
Odpowiedzi:
Podziel bufory na grupy
Jest to możliwe dzięki tabulatorowi. Możesz dodać reguły do buforów grupowych w grupach. Oto podstawowy fragment kodu:
Przykładowe zasady:
Po skomponowaniu reguł możesz nacisnąć + lub - na linii tabulatora na pasku kart, aby przełączać grupy, a także ◀ i ▶, aby przełączać między buforami. Lub po prostu powiąż następujące defuns:
i poruszaj się między kartami i grupami kart za pomocą klawiatury.
Osobiście grupuję karty, aby zobaczyć, co jest otwarte, ale nawigować nimi
ido-switch-buffer
.Przełączaj między zestawem reguł
Można również zdefiniować inny zestaw reguł grupowania buforów i przełączać między nimi. Oto przykład przełączania między dwoma zestawami reguł grupowania buforów:
To przełącza pomiędzy
tabbar-buffer-groups-common
itabbar-buffer-groups
grupowaniem kart odrzuca.Sortuj bufory tabulatorów według nazw
Uważam, że warto sortować bufory tabulatorów według nazw. Oto jak to zdobyć:
źródło
ATRYBUT: Grupowanie buforów na podstawie ramki jest bezpośrednią implementacją pojęć i wybranych części kodu opracowanych / napisanych przez Alp Aker w bibliotece frame-bufs: https://github.com/alpaker/Frame-Bufs
Poniżej znajduje się przykład
tabbar.el
dynamicznego używania tabulatorów / buforów w bibliotece i grupowania dla poszczególnych klatek poprzez dodawanie tabulatorów / buforów za pomocąC-c C-a
lub usuwanie tabulatorów / buforów za pomocąC-c C-n
. Istnieją tylko dwie (2) grupy - powiązane z bieżącą ramką (tj."A"
) I NIE powiązane z bieżącą ramką (tj"N"
.). Grupy są lokalne dla ramki, co oznacza, że każda ramka może mieć własne grupowanie. Grupowanie niestandardowe można zresetować za pomocąC-c C-r
. Przełączaj między grupami powiązanymi i niepowiązanymi zC-tab
. Przejdź do następnej karty / bufora w bieżącej grupie za pomocąM-s-right
. Przejdź do poprzedniej karty / bufora w bieżącej grupie za pomocąM-s-left
.Tab / bufory można dodawać lub usuwać programowo za pomocą
my-add-buffer
imy-remove-buffer
. Aby zobaczyć przykład otwierania niektórych buforów w wybranych ramkach, zobacz powiązany wątek zatytułowany Jak przechwycić plik przed jego otwarciem i zdecydować, która ramka : /programming//a/18371427/2112489 Funkcjamy-add-buffer
musiałaby być umieszczane w odpowiednich miejscach kodu w powyższym linku, jeśli użytkownik zdecyduje się na wdrożenie tej funkcji.Użytkownik może chcieć utworzyć wpis w niestandardowym,
mode-line-format
który wyświetla nazwę bieżącej grupy kart w wierszu trybu, dołączając następujący fragment:(:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t))))
Dostosowanie wiersza trybu bardziej szczegółowo, jednak wykracza poza zakres tego przykładu.Funkcja
tabbar-add-tab
została zmodyfikowana, aby alfabetycznie zakładki / bufory.Funkcja
tabbar-line-tab
została zmodyfikowana, aby zapewnić cztery (4) różne twarze w zależności od sytuacji. Jeśli tab / bufor jest powiązany z ramką i jest wybrany, użyjtabbar-selected-associated
twarzy. Jeśli tab / bufor jest powiązany z ramką i NIE jest wybrany, użyjtabbar-unselected-associated
twarzy. Jeśli tab / bufor NIE jest powiązany z ramką i jest zaznaczony, użyjtabbar-selected-unassociated
twarzy. Jeśli tab / bufor NIE jest powiązany z ramką i NIE jest wybrany, użyjtabbar-unselected-unassociated
twarzy.Poniższy zrzut ekranu przedstawia dwie możliwe grupy buforów / tabulatorów: (1) po lewej stronie znajduje się grupa buforów / tabulatorów powiązanych z ramką o nazwie
SYSTEM
[żółte i białe tabulatory], z wielką literą „A” wskazaną w linia trybu; i (2) po prawej stronie znajduje się grupa buforów / zakładek, które NIE są powiązane z ramką o nazwieSYSTEM
[niebieskie i czerwone zakładki], z wielką literą „N” wskazaną w linii trybu.źródło
Zastanów się nad sprawdzeniem elscreen , chociaż tak naprawdę nie grupuje on buforów.
Grupuje okna i zapewnia dostęp do wielu układów (kart), między którymi można szybko się poruszać. Mój przepływ pracy często zawiera kod Ruby i powiązane testy na jednym ekranie, podczas gdy moje notatki do zrobienia i organizacji znajdują się na innym, a być może bufor do rysowania zapytań SQL znajduje się na trzecim. Pozwala mi to łatwo przeskakiwać między zadaniami i projektami, mimo że każdy ekran korzysta z tej samej puli buforów.
źródło
Co powiesz na moją wtyczkę, centaur-tabs? Ma wiele opcji konfiguracji, jest naprawdę funkcjonalny, jest obsługiwany przez bardzo popularne motywy, takie jak Motywy Kaolin, a ogólnie jest to naprawdę ładnie wyglądający i estetyczny pakiet (zgodnie z opiniami użytkowników). Jest dostępny w MELPA i wygląda następująco:
źródło
Oto moja konfiguracja, za co warto. Zawiera:
mouse-2
aby zamknąć, jak w przeglądarkach ,mouse-3
otworzyć się w nowym oknie Emacsa, jak w i3 )M-left
i prawe karty przełączników, jak w TMux / Screen )moe-dark
konfiguracją „ Motyw Moe / ” w zestawie)*buffers*
i „zwykłe”)TabBar
Załącznik 1 - Temat Moe
Załącznik 2 - Przełącz ostatnie 2 bufory (makro KB)
źródło