No Mac, como abrir um arquivo da linha de comando e mostrá-lo em uma janela existente do Emacs?

3

Como abrir um arquivo a partir da linha de comando e exibi-lo em uma das janelas existentes no quadro existente, caso contrário, em uma nova janela em um novo quadro? O comportamento padrão é que é aberto em um novo quadro. Estou usando

GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0) of 2012-01-29 on beta.macosforge.org

Editar 1

Eu não prestei atenção suficiente à minha definição de aliases. Estou usando

alias emacs=open -a /Applications/Macports/Emacs.app

no meu .bashrc . Com esta configuração, se houver um quadro do Emacs existente que abri anteriormente, quando um novo emacs for executado a partir da linha de comando ( $ emacs foobar.txt ), ele abrirá um novo quadro e carregará .emacs para ele e, em seguida, exibirá o arquivo uma das janelas do novo quadro. (Minha configuração .emacs divide automaticamente o quadro em duas janelas.)

    
por Computist 25.04.2012 / 00:30

2 respostas

2

Você não especifica exatamente como está abrindo um arquivo a partir da linha de comando, mas o comportamento padrão para emacsclient é, na verdade, o oposto: ele reutiliza um quadro. Na documentação emacsclient em gnu.org , a opção -c é usada para obter o comportamento que você parece ter por padrão.

-c Create a new graphical frame, instead of using an existing Emacs frame. Emacs 23 can create a graphical frame even if it was started in a text-only terminal, provided it is able to connect to a graphical display. If no graphical display is available, Emacs creates a new text-only terminal frame (see Frames). If you omit a filename argument while supplying the ‘-c’ option, the new frame displays the ‘scratch’ buffer (see Buffers).

Posso confirmar que é assim que funciona no meu sistema, que é de poucas rotações: GNU Emacs 23.2.1 (x86_64-apple-darwin, NS apple-appkit-1038.29) of 2010-05-08 on black.local"

Eu verificaria se você está usando o emacsclient que acompanha seu emacs e se não está enviando inadvertidamente -c .

    
por 25.04.2012 / 08:10
3

Eu uso isso:

emacs() {
/Applications/MacPorts/Emacs.app/Contents/MacOS/bin/emacsclient --alternate-editor=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs $1 &
}

Ele usa o emacsclient para abrir o arquivo que você especificou - se ele não encontrar um servidor Emacs existente, ele abrirá um novo.

Em .emacs, faça

(server-start) 

para que iniciar o emacs também inicie um servidor.

    
por 10.09.2013 / 08:45