Gostaria de guias como o Firefox, mas para o emacs.
Encontrei o seguinte: http://emacswiki.org/emacs/TabBarMode
Mas basta adicionar a cada buffer ( janela na terminologia do Emacs) uma barra que mostra os buffers atualmente abertos.
Eu gostaria que uma guia pudesse armazenar vários buffers ( janelas no Emacs teminology), que eu posso dividir conforme desejado. Ou seja, cada guia deve corresponder a um "estado da janela" (no sentido de window-state-get
).
Eu teria uma guia para minhas tarefas, outra para código, outra para leitura na web etc.
Isso é possível? A tabbar pode ser adaptada para fazer isso?
[edit2]
Esta questão atraiu mais atenção do que eu previa. Parece que existe uma solução, mas que exigiria um pouco de pesquisa e ajustes. Embora esta / a próxima semana esteja um pouco ocupada para mim, analisarei as respostas e tentarei criar algo que funcione. Depois, editarei esta pergunta para refletir minhas descobertas. Aguarde =)
[edit] Mais ou menos
como:
/programming/24157754/make-frames-in-emacs-gui-behaves-like-frames-in-terminal
Gostaria de resolver com vários quadros em uma única sessão GUI também.
Respostas:
Dividir buffers em grupos
É possível com a barra de tabulação. Você pode adicionar regras para agrupar buffers em grupos. Aqui está um trecho básico:
Regras de exemplo:
Depois de compor as regras, você pode pressionar + ou - na linha de guias da barra de guias para alternar entre grupos, e também ◀ e ▶ para alternar entre buffers. Ou apenas vincule os seguintes antônimos:
e mova-se entre guias e grupos de guias com o teclado.
Pessoalmente, agrupo guias, para ver o que está aberto, mas as navego com elas
ido-switch-buffer
.Alternar entre o conjunto de regras
Também é possível definir um conjunto diferente de regras de agrupamento de buffer e alternar entre elas. Aqui está um exemplo de alternância entre dois conjuntos de regras de agrupamento de buffer:
Isso alterna entre
tabbar-buffer-groups-common
etabbar-buffer-groups
desativa o agrupamento de guias.Classificar buffers da barra de guias por nome
Acho útil classificar os buffers da barra de tabulação por nome. Veja como obtê-lo:
fonte
ATRIBUTO: O agrupamento de buffers por quadro é uma implementação direta dos conceitos e partes selecionadas de código desenvolvidas / escritas por Alp Aker nos quadros-bufs da biblioteca: https://github.com/alpaker/Frame-Bufs
A seguir, é apresentado um exemplo de como usar a biblioteca
tabbar.el
e agrupar abas / buffers dinamicamente em cada quadro, adicionando abas / buffersC-c C-a
ou removendo abas / buffersC-c C-n
. Existem apenas dois (2) grupos - associados ao quadro atual (ou seja,"A"
) e NÃO associados ao quadro atual (ou seja"N"
). Os grupos são locais do quadro, o que significa que cada quadro pode ter seu próprio agrupamento. O agrupamento personalizado pode ser redefinido comC-c C-r
. Alterne entre grupos associados e não associados comC-tab
. Alterne para a próxima guia / buffer no grupo atual comM-s-right
. Alterne para a guia / buffer anterior no grupo atual comM-s-left
.Guias / buffers podem ser adicionados ou removidos programaticamente com
my-add-buffer
emy-remove-buffer
. Para obter um exemplo de como abrir certos buffers em quadros selecionados, consulte o thread relacionado intitulado Como interceptar um arquivo antes de abrir e decidir qual quadro : /programming//a/18371427/2112489 A funçãomy-add-buffer
precisaria ser incorporado nos locais apropriados do código no link acima, se um usuário optar por implementar esse recurso.O usuário pode criar uma entrada em um costume
mode-line-format
que exiba o nome do grupo de guias atual na linha de modo, incorporando o seguinte trecho:(:eval (when tabbar-mode (format "%s" (tabbar-current-tabset t))))
Personalizar a linha de modo com mais detalhes, no entanto, está além do escopo deste exemplo.A função
tabbar-add-tab
foi modificada para alfabetizar as guias / buffers.A função
tabbar-line-tab
foi modificada para fornecer quatro (4) faces diferentes, dependendo da situação. Se a guia / buffer estiver associada ao quadro e IS selecionada, usetabbar-selected-associated
face. Se a guia / buffer estiver associada ao quadro e NÃO selecionada, usetabbar-unselected-associated
face. Se a guia / buffer NÃO estiver associada ao quadro e for selecionada, usetabbar-selected-unassociated
face. Se a guia / buffer NÃO estiver associada ao quadro e NÃO estiver selecionada, use atabbar-unselected-unassociated
face.A captura de tela a seguir mostra os dois possíveis agrupamentos de buffer / guia: (1) à esquerda, há um agrupamento dos buffers / guias associados ao quadro denominado
SYSTEM
[guias amarelo e branco], com a letra maiúscula "A" indicada na linha de modo; e (2) à direita, há um agrupamento dos buffers / guias NÃO associados ao quadro denominadoSYSTEM
[guias azul e vermelho], com uma letra maiúscula "N" indicada na linha de modo.fonte
Considere verificar o elscreen , embora ele não agrupe buffers.
O que ele faz é agrupar janelas e fornecer acesso a vários layouts (guias) que você pode mover rapidamente. Meu fluxo de trabalho geralmente possui código Ruby e testes associados em uma tela, enquanto minhas notas de todo e organização estão em outra, e talvez um buffer temporário para a elaboração de consultas SQL esteja em um terceiro. Isso me permite alternar facilmente entre tarefas e projetos, mesmo que cada tela se baseie no mesmo conjunto de buffers.
fonte
E o meu plugin, centaur-tabs? Ele tem muitas opções de configuração, é realmente funcional, é suportado por temas muito populares, como o Kaolin Themes e, em geral, é um pacote estético e muito bonito (de acordo com o feedback do usuário). Está disponível no MELPA e fica assim:
fonte
Aqui está a minha configuração, para o que vale a pena. Possui:
mouse-2
para fechar, como nos navegadores ,mouse-3
para abrir em uma nova janela do Emacs, como no i3 )M-left
e guias da chave direita, como no TMux / Screen )moe-dark
configuração "Moe theme / " incluída)*buffers*
e "regular")Barra de abas
Anexo 1 - Tema Moe
Anexo 2 - Alterne os 2 últimos buffers (macro KB)
fonte