Na função "shell", essa linha exibe o buffer do shell e quase sempre seu novo shell aberto no quadro aleatório. E eu tenho que trocar os buffers, é irritante.
...
(pop-to-buffer buffer)
...
Nos documentos diz:
Se essa janela estiver em um quadro gráfico diferente, esse quadro receberá um foco de entrada, se possível.
Não entendo como posso exibir buffer no quadro de destino, não sou bom o suficiente no elisp. Como eu posso fazer isso? Obrigado se alguém puder ajudar.
Respostas:
Estou assumindo que o pôster original significa direcionar a janela atualmente selecionada no mesmo quadro. Caso o pôster original deseje segmentar uma janela específica em um quadro diferente, consulte este thread relacionado para obter um exemplo complexo: /programming/18346785/how-to-intercept-a-file- antes-abre-e-decide-qual-quadro
Copiei a função
shell
interna e criei uma nova chamadashell-get-buffer-create
, que usa emwith-current-buffer ...
vez depop-to-buffer
. Essa nova função gera ou localiza o*shell*
buffer sem selecioná-lo em nenhuma janela.Para exibir o
*shell*
buffer na janela atualmente selecionada, use:ou
ou
Criei uma função personalizada chamada
my-display-buffer
que pode ser exibida em quatro direções - esquerda, direita, acima ou abaixo. Existem três possibilidades: (1) Se uma janela no quadro já exibe o buffer de destino, basta reutilizar a mesma janela. (2) Se já houver uma janela na direção especificada em relação à janela selecionada, exiba o buffer de destino na referida janela. (3) Se não houver janela na direção especificada, crie uma nessa direção e exiba o buffer de destino na referida janela.Uso da amostra :
ou
ou
ou
O Código :
E, aqui está um
eshell-get-buffer-create
que funciona da mesma forma que acima ...fonte
Não é uma resposta direta à sua pergunta, mas talvez seja uma solução para você.
Para instalar o pacote shell-pop da melpa ou melpa-stable. Em seguida, avalie (para teste na
*scratch*
viaC-x C-e
, posteriormente na sua.emacs
)Isso abre um shell na parte inferior do seu quadro, nesse caso ao pressionar ctrl-meta-ret. Repetir a sequência do teclado volta para onde você estava.
Consulte https://github.com/kyagi/shell-pop-el para obter detalhes.
fonte