Como posso usar o emacs com git dentro do terminal?

9

Eu costumava git config --global core.editor emacsdefinir meu editor de git como emacs, mas quando faço isso e comprometo algo, o editor abre uma nova janela em vez de abrir o emacs dentro do terminal. Eu quero usar o emacs como se -nw fosse dado a ele, mas escrever isso -> git config --global core.editor emacs -nwnão é a solução.

Eu preciso usar o git básico por enquanto.

Lib101
fonte
2
Você conhece magit? Faz com que a operação básica do git seja fácil no Emacs. magit.vc
Tyler
2
Sim. Não pode usá-lo por enquanto. Depois que a aula terminar, eu vou subir de nível.
Lib101 29/03/16
Você deve descrever o que acontece quando adiciona "-nw" em vez de simplesmente afirmar que "não é a solução". Funciona para mim, quando o comando é escapado corretamente.
asjo 29/03

Respostas:

19

Quando você executa git config --global core.editor emacs -nw, seu shell divide a linha de comando em palavras antes de chamar o git. Assim, o Git vê "emacs -nw" como dois argumentos separados. Ele precisa apenas de um para colocar no arquivo de configuração, para que o outro seja ignorado. (Na verdade, isso é mentira, mas você pode verificar a página de manual para obter detalhes.) Você pode colocar aspas em torno de uma série de palavras para dizer ao seu shell para não desmembrá-las: git config --global core.editor "emacs -nw"dará ao "emacs -nw" git como um argumento único que fará o que você quiser.

db48x
fonte
2

Você não especifica o que há de errado em abrir uma nova janela do GUI emacs. Se o problema for o longo tempo de inicialização, considere usar o emacsclient como seu editor. Em poucas palavras, você executa (server-start)o arquivo init do emacs e mantém o emacs da GUI normal aberto, e então diz ao git para usar um editor chamado emacsclient. O que acontece é que o arquivo editado aparece em um novo buffer no seu emacs em execução. Depois de terminar, você pressiona C-x #para finalizar a sessão do emacsclient e, em seguida, o git (ou outro processo de shell que iniciou o editor) sabe que o editor "emacsclient" termina o arquivo e continua com ele. ("emacsclient" também é uma palavra, por isso também resolve seu problema imediato)

Mesmo quando a edição precisa ser feita na janela do terminal, você pode executar emacsclient -nwe eliminar o longo tempo de inicialização. Existem mais possibilidades, man emacsclienté uma boa leitura.

Ury Marshak
fonte
11
(teria sido melhor como um comentário sobre a resposta acima, mas não tem permissão para postar comentários)
Ury Marshak
Eu estive procurando por toda parte para este, totalmente feliz é uma resposta :)
AER