Como posso executar o Emacs gráfico do Mac OSX no modo daemon?


24

Formato curto: desejo executar a versão do Mac OSX do Emacs encontrada em http://emacsformacosx.com/ como um daemon, com clientes gráficos e de texto conectados a ele conforme necessário.

Em detalhes, aqui está o fluxo de trabalho que eu quero:

  1. No login, execute /Applications/Emacs.app/Contents/MacOS/Emacs --daemonpara iniciar o emacs como um daemon. Eu já sei como fazer isso .

  2. Ao executar o emacs a partir de um terminal local, desejo Qualquer um destes:

    1. Se eu executar emacsem um prompt de comando local, abra um novo quadro com o arquivo selecionado.
    2. Se o número 1 não for possível, pelo menos se eu executar emacsclientna linha de comando, abra um novo quadro com o arquivo selecionado.
  3. Ao executar o emacs a partir de um terminal remoto, gostaria que um emacs em modo de texto iniciasse, conectado ao processo daemon.

  4. Se eu executar, Emacs.appreutilize o daemon emacs que está sendo executado em segundo plano, em vez de iniciar uma nova instância e abrir uma nova janela nele.

Até agora, sou capaz de realizar apenas os itens 1 e 2.2 acima, mas essas são as partes fáceis. # 3 e # 4 são as coisas mais necessárias para que isso funcione. Alguém sabe como realizar essas coisas?


1
Para outras pessoas que acham esta pergunta: você também pode M-x server-startusar um emacs iniciado sem --daemon no modo de servidor. Boas perguntas, BTW.
dmckee

1
... ou colocar (server-start)em seus .emacs para que ele começa quando você lançar emacsa
Doug Harris

Alguém pode explicar como fazer # 1? Você apenas o tornaria um item de login?
Charlie Flowers

Respostas:


15
  1. Você tem isso tratado
  2. Sim, você desejará usar o emacsclient. Para obter um novo quadro, adicione a opção -c. Eu tenho um alias para torná-lo mais rápido e dizer ao emacsclient para não esperar o servidor emacs retornar:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Eu não tenho certeza sobre isso. Inicio o Emacs uma vez e sempre carrego novos arquivos no emacs ou usando meu emalias.

Atualizar:

Confira esta dica, documentando como usar o Platypus para criar um wrapper de aplicativo em torno do emacsclient. Você pode usar "Abrir com ..." para iniciar usando o novo invólucro de aplicativo.


Sim, esse é o verdadeiro truque, não é? Porque o que eu quero é que todas as chamadas abertas do sistema operacional usem o emacs em execução, esteja eu operando dentro de um contexto de terminal ou GUI. Eu continuarei procurando.
Chris R

Encontrei um juiz para Platypus e atualizei minha resposta.
Doug Harris #

6
Isso está resolvido? Como você conseguiu o Emacs.app para se conectar ao daemon?
28811 milkypostman

Eu também quero saber a resposta à pergunta 4 :)
jkp

2

Sim, aqui está uma explicação bastante abrangente sobre como fazer isso muito bem. Eu tentei vários métodos para fazê-lo funcionar bem, mas não melhor do que o que eles descreveram aqui.

https://gist.github.com/304964

Felicidades!


1
O link está morto
Nisba

1

Para 4. coloque isso no seu .emacs:

(setq ns-pop-up-frames nil)

A solução de criar um Mac .app (com Platypus) não funciona porque o Mac não abre o mesmo aplicativo duas vezes.


1
Se você usar o "open -n", poderá abrir uma nova instância de um aplicativo, mesmo que ele já esteja em execução. Tente isso no terminal: open -n -a Emacs.app somefile.txt
Jörgen Lundberg

Sim, mas abre uma nova janela, que eu não quero
juanmirocks

Talvez eu esteja entendendo mal o que você deseja, mas se você não quiser criar uma nova janela, mas usar uma existente, pule o '-n'.
Jörgen Lundberg 04/04

Sim, não quero criar uma nova janela. open -a Emacs.appé certamente o que faço, mas para ser aberto no mesmo exemplo de instância / daemon de um emacs existente, preciso escrever (setq ns-pop-up-frames nil)no meu .emacscomo escrevi na minha resposta. Caso contrário, ele cria uma nova janela de qualquer maneira, com ou sem -n.
Juanmirocks
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.