Posso ter uma instância do emacs “singleton”?

6

Em outras palavras, posso iniciar o emacs uma vez, e sempre que digito o emacs no terminal, ele é aberto como um buffer na minha instância existente do emacs?

    
por Alex 18.03.2011 / 16:49

2 respostas

5

Sim.

Como você faz isso depende do SO e da versão do emacs (XEmacs, GNU emacs) que você está executando. Um bom lugar para começar é olhar para GnuClient e EmacsClient .

    
por 18.03.2011 / 17:28
5

[rant] Este é outro desses recursos que é fácil de usar e ativado por padrão em muitos outros editores, mas prova ser bastante difícil no Emacs. [/ rant]

De qualquer forma, aqui está como eu fiz isso. Primeiro, como o jwernerny mencionou, o EmacsClient faz o truque. Tudo o que você precisa fazer para editar foo.txt é

emacsclient --alternate-editor='' foo.txt

Este comando tentará se conectar a um servidor Emacs em execução. Se não houver servidor, ele iniciará um. Em seguida, ele se conectará ao servidor e instruirá a abertura do arquivo especificado.

O servidor é executado como um daemon (processo em segundo plano). Se você executar ps x | grep emacs , verá um processo com a linha de comando emacs --daemon . O problema que tive foi que o Emacs só roda em um terminal se você fizer assim, então se você quer rodá-lo em uma janela gráfica, continue lendo ... (e mate o processo do daemon primeiro)

Veja o que eu adicionei ao meu .bashrc:

alias e='emacsclient --no-wait --alternate-editor ~/.emacs.d/start.sh'

e o conteúdo de ~/.emacs.d/start.sh são:

#!/bin/sh
emacs --eval '(server-start)' $* &

O e alias pode ser usado para abrir um arquivo, seja iniciando uma nova instância do Emacs (com um servidor), ou usando um existente.

Para um comando de editor que espera até que você termine com o arquivo (bom para commits do Git, etc), remova a opção --no-wait . Eu faço isso no meu .bashrc:

export EDITOR='emacsclient --alternate-editor ~/.emacs.d/start.sh'

Use C-x # quando terminar de editar o arquivo. O bom e velho C-x k vai fazer a pergunta irritante "O Buffer foo.txt ainda tem clientes; mate-o?"

    
por 28.04.2011 / 22:36

Tags