Quando abro um REPL usando C-c C-l
, a janela que ele cria parece especial (fundo mais escuro, sai do processo quando fechado, ...).
Também parece sempre dividir minha tela horizontalmente, o que às vezes é útil, às vezes irritante. Não sabendo o suficiente sobre o emacs, não consigo encontrar uma maneira de mover esta janela para o lado direito.
Consegui colocá-lo em outro quadro usando os comandos switch-buffer, mas não consigo fechar o original porque ele mata o processo e todos os quadros que contêm o buffer.
Você poderia me dar dicas de como lidar com esse buffer especial e como ele é exibido? :(
Obrigado!
Hmm, há muitas peças móveis aqui. Não tenho certeza do que você vinculou C-c C-l
. Se você não estiver usando o comando +eval/repl
para iniciar o repl de um modo, o Doom tratará o buffer repl como um buffer especial comum.
Nesse caso, as duas variáveis relevantes são shackle-default-alignment
e shackle-rules
, que dizem ao Emacs como lidar com janelas que atendem a certos critérios.
No final de shackle-rules
existem duas regras gerais:
(set! :popup
'("^\\*" :regexp t :noselect t :autokill t)
'("^ \\*" :regexp t :size 12 :noselect t :autokill t :autoclose t))))
Os dois problemas aqui são :autokill t
(que garante que um buffer e seus processos associados sejam eliminados juntos) e como não há :align
especificado, ele recorre a shackle-default-alignment
, cujo padrão é 'below
.
Então, como podemos consertar isso?
Aqui estão três maneiras:
Basta especificar uma regra de substituição para sua resposta em particular:
(set! :popup "*my-repl-buffer*" :align 'left :noesc t)
Veja M-x doom/describe-setting RET :popup
para detalhes.
Habilite o modo menor +eval-repl-mode
em sua resposta:
(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Você encontrará essa regra pop-up em modules / feature / eval / config.el :
(set! :popup
'(:custom (lambda (b &rest _) (buffer-local-value '+eval-repl-mode b)))
:size 16 :noesc t)
Vincule C-c C-l
a +eval/repl
e use-o para invocar seu repl. A maioria dos modos tem padrões razoáveis. Se não estiver abrindo o repl que você deseja, você pode alterar a associação do modo principal-> repl com a configuração :repl
, por exemplo
(set! :repl 'python-mode #'+python/repl)
A função: repl deseja deve retornar um buffer contendo o repl.
Espero que ajude!
Ah, esqueci de mencionar: atualmente não há como mover uma janela pop-up ao vivo (nunca precisei). Isso é algo que tentarei consertar.
Essa parece toda a ajuda de que eu precisava!
Para ser mais específico, eu estava falando sobre o intero
REPL, iniciado por um comando chamado intero-repl-load
. Não sei quais mecanismos ele usa então.
Acabei indo com:
(set! :popup "^\\*intero:" :regexp t :align 'right :size 80)
no meu modules/private/ptival/init.el
, funcionou perfeitamente!
Obrigado por me explicar tudo isso! Eu não acho que eu teria descoberto isso sozinho em um período de tempo razoável! 👍
Comentários muito úteis
Hmm, há muitas peças móveis aqui. Não tenho certeza do que você vinculou
C-c C-l
. Se você não estiver usando o comando+eval/repl
para iniciar o repl de um modo, o Doom tratará o buffer repl como um buffer especial comum.Nesse caso, as duas variáveis relevantes são
shackle-default-alignment
eshackle-rules
, que dizem ao Emacs como lidar com janelas que atendem a certos critérios.No final de
shackle-rules
existem duas regras gerais:Os dois problemas aqui são
:autokill t
(que garante que um buffer e seus processos associados sejam eliminados juntos) e como não há:align
especificado, ele recorre ashackle-default-alignment
, cujo padrão é'below
.Então, como podemos consertar isso?
Aqui estão três maneiras:
Basta especificar uma regra de substituição para sua resposta em particular:
Veja
M-x doom/describe-setting RET :popup
para detalhes.Habilite o modo menor
+eval-repl-mode
em sua resposta:(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Você encontrará essa regra pop-up em modules / feature / eval / config.el :
Vincule
C-c C-l
a+eval/repl
e use-o para invocar seu repl. A maioria dos modos tem padrões razoáveis. Se não estiver abrindo o repl que você deseja, você pode alterar a associação do modo principal-> repl com a configuração:repl
, por exemplo(set! :repl 'python-mode #'+python/repl)
A função: repl deseja deve retornar um buffer contendo o repl.
Espero que ajude!