Me gustaría pestañas como Firefox pero para emacs.
Encontré esto: http://emacswiki.org/emacs/TabBarMode
Pero solo agrega a cada búfer ( ventana en la terminología de Emacs) una barra que muestra los búferes abiertos actualmente.
Me gustaría que una pestaña pudiera contener múltiples buffers ( ventanas en la teminología de Emacs), que puedo dividir según lo desee. Es decir, cada pestaña debe corresponder a un "estado de ventana" (en el sentido de window-state-get
).
Tendría una pestaña para mis tareas, otra para el código, otra para leer en la web, etc.
es posible? ¿Se puede adaptar el tabbar para hacer esto?
[edit2]
Esta pregunta ha atraído más atención de lo que esperaba. Parece que hay una solución, pero que requeriría un poco de investigación y ajustes. Si bien esta semana próxima está un poco ocupada para mí, analizaré las respuestas e intentaré crear algo que funcione y luego editaré esta pregunta para reflejar mis hallazgos. Por favor espera =)
[editar] Más o menos
similar a:
/programming/24157754/make-frames-in-emacs-gui-behaves-like-frames-in-terminal
También me conformaría con múltiples marcos en una sola sesión de GUI.
Respuestas:
Split buffers en grupos
Es posible con tabbar. Puede agregar reglas para agrupar buffers en grupos. Aquí hay un fragmento básico:
Reglas de ejemplo:
Una vez que compuso las reglas, puede presionar + o - en la línea de pestañas de la barra de pestañas para alternar grupos, y también ◀ y ▶ para cambiar entre buffers. O simplemente une los siguientes defuns:
y moverse entre pestañas y grupos de pestañas con el teclado.
Personalmente, agrupo las pestañas para ver lo que está abierto, pero navegar con ellas
ido-switch-buffer
.Cambiar entre un conjunto de reglas
También se puede definir un conjunto diferente de reglas de agrupación de búfer y alternar entre ellas. Aquí hay un ejemplo de ciclo entre dos conjuntos de reglas de agrupación de búfer:
Esto alterna entre
tabbar-buffer-groups-common
y latabbar-buffer-groups
agrupación de tabulaciones defuns.Ordenar los búferes de tabbar por nombre
Me resulta beneficioso ordenar los búferes de tabbar por nombre. Aquí se explica cómo obtenerlo:
fuente
ATRIBUTO: La agrupación de buffers por cuadro es una implementación directa de los conceptos y porciones selectas de código desarrolladas / escritas por Alp Aker en la biblioteca frame-bufs: https://github.com/alpaker/Frame-Bufs
El siguiente es un ejemplo de cómo usar la biblioteca
tabbar.el
y agrupar pestañas / buffers dinámicamente por cuadro agregando pestañas / buffers conC-c C-a
o eliminando pestañas / buffers conC-c C-n
. Solo hay dos (2) grupos: asociados con el cuadro actual (es decir"A"
) y NO asociados con el cuadro actual (es decir"N"
). Los grupos son marco local, lo que significa que cada marco puede tener su propia agrupación. La agrupación personalizada se puede restablecer conC-c C-r
. Cambiar entre grupos asociados y no asociados conC-tab
. Cambie a la siguiente pestaña / búfer en el grupo actual conM-s-right
. Cambie a la pestaña / búfer anterior en el grupo actual conM-s-left
.Las pestañas / buffers se pueden agregar o quitar mediante programación con
my-add-buffer
ymy-remove-buffer
. Para ver un ejemplo de cómo abrir ciertos búferes en marcos seleccionados, consulte el hilo relacionado titulado Cómo interceptar un archivo antes de abrirlo y decidir qué marco : /programming//a/18371427/2112489 La funciónmy-add-buffer
necesitaría incorporarse en las ubicaciones apropiadas del código en el enlace anterior si un usuario elige implementar esa característica.El usuario puede desear crear una entrada en una costumbre
mode-line-format
que muestre el nombre del grupo de pestañas actual en la línea de modo incorporando el siguiente fragmento:(:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t))))
Personalizar la línea de modo con más detalle, sin embargo, está más allá del alcance de este ejemplo.La función
tabbar-add-tab
se ha modificado para alfabetizar las pestañas / buffers.La función
tabbar-line-tab
se ha modificado para proporcionar cuatro (4) caras diferentes según la situación. Si la pestaña / búfer está asociada con el marco y se selecciona IS, entonces usetabbar-selected-associated
face. Si la pestaña / búfer está asociada con el marco y NO está seleccionada, utilice latabbar-unselected-associated
cara. Si la pestaña / búfer NO está asociada con el marco y se selecciona IS, entonces use latabbar-selected-unassociated
cara. Si la pestaña / búfer NO está asociada con el marco y NO está seleccionada, entonces use latabbar-unselected-unassociated
cara.La siguiente captura de pantalla muestra las dos posibles agrupaciones de búferes / pestañas: (1) a la izquierda hay una agrupación de los búferes / pestañas que están asociados con el marco denominado
SYSTEM
[pestañas amarillas y blancas], con la letra mayúscula "A" indicada en el línea de modo; y (2) a la derecha hay una agrupación de los búferes / pestañas que NO están asociados con el cuadro denominadoSYSTEM
[pestañas azules y rojas], con una letra mayúscula "N" indicada en la línea de modo.fuente
Considere revisar elscreen , aunque en realidad no agrupa los buffers.
Lo que hace es agrupar ventanas y proporcionar acceso a múltiples diseños (pestañas) entre los que puede moverse rápidamente. Mi flujo de trabajo a menudo tiene un código Ruby y pruebas asociadas en una pantalla, mientras que mis notas de tarea y Org están en otra, y tal vez un búfer de memoria virtual para redactar consultas SQL está en una tercera. Esto me permite saltar fácilmente entre tareas y proyectos, a pesar de que cada pantalla se basa en el mismo grupo de buffers.
fuente
¿Qué tal mi plugin, centaur-tabs? Tiene muchas opciones de configuración, es realmente funcional, es compatible con temas muy populares como Kaolin Themes y, en general, es un paquete muy atractivo y estético (según los comentarios del usuario). Está disponible en MELPA y se ve así:
fuente
Aquí está mi configuración, por lo que vale. Cuenta con:
mouse-2
para cerrar, como en los navegadores ,mouse-3
para abrir en una nueva ventana de Emacs, como en i3 )M-left
y pestañas del interruptor derecho, como en TMux / Screen )moe-dark
configuración " Tema Moe / " incluida)*buffers*
y "regular")Barra de pestañas
Anexo 1 - Tema Moe
Anexo 2: alternar los 2 últimos búferes (macro KB)
fuente