No emacs, muitas vezes tenho vários buffers de shell abertos e uso rename-buffer para controlá-los. Às vezes, fecho inadvertidamente o shell ao pressionar muitos ^Ds ou estou em um sistema que expira automaticamente os shells inativos. Existe uma maneira de iniciar um novo shell no mesmo buffer? Porque eu renomeei o buffer deconchadigitar Mx shell iniciará um shell em um novoconchabuffer, não o buffer atual.
Responder1
Em vez do shell Mx, execute o seguinte código emacs lisp usando M-:
(shell (current-buffer))
Responder2
Isso não é perfeito, mas você obtém quase tudo o que deseja. Coloque este código no seu .emacs
arquivo de inicialização:
(defun my-shell-mode-hook ()
"Added to shell-mode-hook. This function runs every time function shell
starts a shell."
(rename-buffer "My Shell" 'unique))
(add-hook 'shell-mode-hook 'my-shell-mode-hook)
Sinta-se à vontade para alterar a string "My Shell"
para outro nome. Se você fizer isso M-x shell RET
enquanto estiver no My Shell
buffer, o novo shell iniciará no mesmo buffer. Infelizmente, se você fizer isso em outro buffer, obterá um novo buffer chamado My Shell<2>
, o que não é tão bonito. Penso que o último efeito pode ser eliminado através deavisandofunction shell
, para que ele mude para buffer My Shell
antes de realmente executar a função real shell
.