Saya ingin tab seperti firefox tetapi untuk emacs.
Saya menemukan ini: http://emacswiki.org/emacs/TabBarMode
Tapi itu hanya menambah setiap buffer ( jendela dalam terminologi Emacs) sebuah bar yang menunjukkan buffer saat ini terbuka.
Saya ingin tab dapat menampung beberapa buffer ( windows di Emacs teminology), yang dapat saya bagi sesuai keinginan. Yaitu setiap tab harus sesuai dengan "keadaan jendela" (dalam arti window-state-get
).
Saya memiliki satu tab untuk tugas saya, satu lagi untuk kode, satu lagi untuk membaca web dll.
Apakah ini mungkin? Bisakah tabbar disesuaikan untuk melakukan ini?
[edit2]
Pertanyaan ini telah menarik lebih banyak perhatian daripada yang saya perkirakan. Sepertinya ada solusi, tetapi yang akan membutuhkan sedikit riset dan penyesuaian. Walaupun minggu ini / minggu depan agak sibuk untuk saya, saya akan menguraikan jawaban dan akan mencoba untuk membangun sesuatu yang berhasil dan kemudian saya akan mengedit pertanyaan ini untuk mencerminkan temuan saya. Silakan tunggu =)
[edit]
Semacam mirip dengan:
/programming/24157754/make-frames-in-emacs-gui-behaves-like-frames-in-terminal
Saya akan puas dengan beberapa frame dalam satu sesi GUI juga.
Jawaban:
Pisahkan buffer dalam kelompok
Mungkin dengan tabbar. Anda dapat menambahkan aturan ke buffer grup dalam grup. Berikut cuplikan dasar:
Aturan contoh:
Setelah Anda membuat aturan, Anda dapat menekan + atau - pada baris tab tabbar untuk beralih grup, dan juga ◀ dan ▶ untuk beralih di antara buffer. Atau cukup ikatkan pertahanan berikut:
dan berpindah di antara tab dan grup tab dengan keyboard.
Secara pribadi saya mengelompokkan tab, sehingga saya melihat apa yang terbuka, tetapi menavigasi dengan mereka
ido-switch-buffer
.Beralih di antara seperangkat aturan
Kita juga dapat mendefinisikan serangkaian aturan pengelompokan buffer dan siklus di antaranya. Berikut adalah contoh bersepeda antara dua set aturan pengelompokan buffer:
Ini beralih di antara
tabbar-buffer-groups-common
dantabbar-buffer-groups
pengelompokan defune tab.Urutkan buffer tabbar berdasarkan nama
Saya merasa bermanfaat untuk menyortir buffer tabbar berdasarkan nama. Berikut cara mendapatkannya:
sumber
ATTRIBUT: Pengelompokan buffer berdasarkan per frame adalah implementasi langsung dari konsep-konsep dan bagian-bagian tertentu dari kode yang dikembangkan / ditulis oleh Alp Aker di library frame-bufs: https://github.com/alpaker/Frame-Bufs
Berikut ini adalah contoh cara menggunakan perpustakaan
tabbar.el
dan grup tab / buffer secara dinamis berdasarkan per-frame dengan menambahkan tab / buffer denganC-c C-a
atau menghapus tab / buffer denganC-c C-n
. Hanya ada dua (2) kelompok - yang terkait dengan bingkai saat ini (yaitu,"A"
), dan TIDAK terkait dengan bingkai saat ini (yaitu,"N"
). Grup adalah frame-lokal, yang berarti bahwa setiap frame dapat memiliki pengelompokan sendiri. Pengelompokan khusus dapat diatur ulang denganC-c C-r
. Beralih antara grup terkait dan tidak terkait denganC-tab
. Beralih ke tab / buffer berikutnya dalam grup saat ini denganM-s-right
. Beralih ke tab / buffer sebelumnya di grup saat ini denganM-s-left
.Tab / buffer dapat ditambahkan atau dihapus secara pemrograman dengan
my-add-buffer
danmy-remove-buffer
. Untuk contoh cara membuka buffer tertentu dalam bingkai tertentu, silakan lihat utas terkait yang berjudul Cara mencegat file sebelum dibuka dan tentukan bingkai mana : /programming//a/18371427/2112489 Fungsimy-add-buffer
ini perlu dimasukkan di lokasi yang sesuai dari kode di tautan di atas jika pengguna memilih untuk mengimplementasikan fitur itu.Pengguna mungkin ingin membuat entri dalam kustom
mode-line-format
yang menampilkan nama grup tab saat ini di mode-line dengan memasukkan potongan berikut:(:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t))))
Kustomisasi mode-line lebih detail, bagaimanapun, berada di luar cakupan contoh ini.Fungsi
tabbar-add-tab
ini telah dimodifikasi untuk mengabjadkan tab / buffer.Fungsi
tabbar-line-tab
ini telah dimodifikasi untuk menyediakan empat (4) wajah berbeda tergantung pada situasinya. Jika tab / buffer dikaitkan dengan bingkai dan IS dipilih, maka gunakantabbar-selected-associated
wajah. Jika tab / penyangga dikaitkan dengan bingkai dan TIDAK dipilih, maka gunakantabbar-unselected-associated
wajah. Jika tab / buffer TIDAK terkait dengan bingkai dan IS dipilih, maka gunakantabbar-selected-unassociated
wajah. Jika tab / buffer TIDAK terkait dengan bingkai dan TIDAK dipilih, maka gunakantabbar-unselected-unassociated
wajah.Tangkapan layar berikut menggambarkan dua kemungkinan buffer / tab pengelompokan: (1) di sebelah kiri adalah pengelompokan dari buffer / tab yang dikaitkan dengan bingkai bernama
SYSTEM
[tab kuning dan putih], dengan huruf kapital "A" ditunjukkan dalam mode-line; dan (2) di sebelah kanan adalah pengelompokan buffer / tab yang TIDAK terkait dengan bingkai bernamaSYSTEM
[tab biru dan merah], dengan huruf kapital "N" yang ditunjukkan dalam mode-line.sumber
Pertimbangkan untuk memeriksa elscreen , meskipun itu sebenarnya bukan buffer grup.
Apa yang dilakukannya adalah mengelompokkan jendela dan menyediakan akses ke beberapa tata letak (tab) yang dapat Anda pindahkan dengan cepat. Alur kerja saya sering memiliki beberapa kode Ruby dan tes terkait di satu layar, sedangkan catatan todo dan Org saya ada di layar lain, dan mungkin buffer awal untuk penyusunan kueri SQL ada di layar ketiga. Ini memungkinkan saya untuk beralih antara tugas dan proyek dengan mudah, meskipun setiap layar menggunakan kumpulan buffer yang sama.
sumber
Bagaimana dengan plugin saya, centaur-tab? Ini memiliki banyak opsi konfigurasi, itu benar-benar fungsional, didukung oleh tema yang sangat populer seperti Kaolin Themes dan secara keseluruhan adalah paket yang terlihat sangat bagus dan estetika (sesuai dengan umpan balik pengguna). Ini tersedia dalam MELPA dan terlihat seperti ini:
sumber
Ini konfigurasi saya, untuk apa yang layak. Ini fitur:
mouse-2
untuk menutup, seperti di browser ,mouse-3
untuk membuka di jendela Emacs baru, seperti di i3 )M-left
& tab sakelar kanan, seperti pada TMux / Layar )moe-dark
konfigurasi " Tema Moe / " termasuk)*buffers*
dan "reguler")TabBar
Lampiran 1 - Tema Moe
Lampiran 2 - Beralih 2 buffer terakhir (KB makro)
sumber