Dobragem de código no Emacs
Às vezes, quero dobrar um bloco de texto. No Vim, você tem dobragem fácil, sem penugem. Sem adicionar caracteres especiais como "marcadores" ou regex específico, como {{{
. Gostaria de selecionar uma região e dobrá-la, sem mexer com a estrutura.
Ao olhar em volta, parece que já havia perguntas sobre a dobragem de código no Emacs. Alguém disse que "não havia solução perfeita". Por exemplo, criei um clipe de dobragem de código simples no Vim:
Vim dobrável
+ Bastante simples, selecione uma região e dobre-a.
+ É persistente. Quando você mata o buffer / fecha o Vim. E reabra o arquivo, as dobras ainda estão lá.
+ Você obtém uma barra de destaque para ver facilmente o que está dobrado.
Existem muitas outras configurações dobráveis para o Vim. Estou feliz com o Emacs, mas é uma coisa que sinto falta. Outras alternativas que eu tentei, por exemplo, HideShow:
HideShow
Alternativa do mal com hide-show minor mode
. Achei inutilizável:
- Não consigo selecionar uma região e dobrá-la. Dobra em blocos de código.
- Não há bar ou algo do tipo, para atendê-lo, está dobrado. Você pode facilmente perder isso.
- Não é persistente. Se você reabrir o arquivo, as dobras desapareceram.
Há outro pacote, dobre este :
Dobre isso
- É uma alternativa bonita. No entanto, ele mexe com o recuo, porque o texto sob a dobra é colocado próximo à dobra ... (?).
- É capaz de selecionar visualmente a região e dobrá-la. Mas isso acaba com a situação, então a visão geral fica confusa. Não é muito útil.
- Não existe uma barra higlihgting ou algo assim, para atendê-lo é dobrado. Você pode facilmente perder isso.
Qual é o problema?
Gostaria de replicar como o Vim faz fold. Mas quando eu procurei, parece que é muito difícil fazer isso no Emacs. Então, eu me pergunto se há algo no emacs ou em sua arquitetura que dificulta a replicação disso? Quais são os limites?
fonte
Respostas:
Experimente
vimish-fold
.Recursos
pilhas incluídas: ativar o modo secundário, vincular alguns comandos e tudo funcionará;
funciona nas regiões que você seleciona;
é persistente: quando você fecha o arquivo, suas dobras não desaparecem;
além de persistente, é dimensionável, você pode trabalhar em centenas de arquivos com muitas dobras sem efeitos adversos;
é óbvio que partes do texto são dobradas;
não quebra o recuo ou algo assim;
pode redobrar apenas dobras desdobradas (oh, que coisa);
para os fãs do
avy
pacote: você podeavy
dobrar o texto com um número mínimo de pressionamentos de tecla!Uso
Crie uma ligação para algumas / todas estas funções:
vimish-fold
- dobragem básica da região selecionada;vimish-fold-unfold
- você realmente não precisa vincular isso, use apenas C-gquando point for colocado no cabeçalho que representa o texto dobrado;vimish-fold-unfold-all
- no entanto, isso pode ser útil;vimish-fold-refold
- sim, você pode dobrá-lo para trás;vimish-fold-avy
- useavy
para dobrar seu texto!Você pode ativar
vimish-fold-mode
seletivamente os modos em que deseja ter dobras persistentes ou simplesmente ativá-lo em qualquer lugar:fonte
menu v f
→vimish-fold
,menu v a
→vimish-fold-avy
,menu v u
→vimish-fold-unfold-all
,menu v v
→vimish-fold-refold
. A maioria dos meus atalhos de teclado são assim, esta é a minha configuração .