reiniciando o processo shell no buffer

reiniciando o processo shell no buffer

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 .emacsarquivo 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 RETenquanto estiver no My Shellbuffer, 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 Shellantes de realmente executar a função real shell.

informação relacionada