Como o emacsclient pode lidar com o longo tempo de carregamento de pacotes de forma adequada, eu realmente quero manter pelo menos um processo emacs e, na maioria das vezes, apenas um processo emacs , aberto como um processo em segundo plano e ocultando melhor a GUI.
No momento, eu defini a seguinte função no .bashrc:
emc ()
{
if [[ $# -eq 0 ]]; then
emacs --eval "(suspend-frame)" &
return
fi
args=($*);
setsid emacsclient -c -e "(find-file \"${args[*]}\")"
}
E também tenha a seguinte linha em .bashrc:
emc
Então, toda vez que eu abrir um shell, acabarei tendo um novo processo emacs.
O problema é que terei muitos processos adicionais desnecessários do emacs depois de abrir muitas conchas. No entanto, só quero manter um único processo do emacs desde a inicialização, para ocultar melhor a GUI .
emacsclient
gui
falso-colecionáveis
fonte
fonte
emacs --eval "(suspend-frame)"
e nãoemacs --daemon
( emacswiki.org/emacs/EmacsAsDaemon ). Existe uma razão para você optar por não chamar o emacs como um daemon? Você pode usar algo parecidopgrep -U `whoami` emacs || emacs --daemon &
para garantir que esteja em execução.Respostas:
Eu faço isso iniciando um daemon emacs quando faço login. O local onde você coloca esse comando depende do seu gerenciador de área de trabalho. Eu uso
i3
, que está configurado para executar um script no logon que inclui o seguinte:Com isso, o emacs está sempre em execução em segundo plano, e abro um novo cliente com
emacsclient -c -n
, vinculado a uma conveniente combinação de teclas no gerenciador de janelas. Se você estiver trabalhando em um terminal, você só precisa de um apelido simples comoalias emc='emacsclient'
, possivelmente com-n
,-c
ou-t
argumentos, dependendo de como você usá-lo.Confira as opções para o emacsclient no manual: ( (emacs) emacsclient Options , acessível no Emacs por
C-h r m emacsclient options <enter>
). Você pode usar o-a
sinalizador para iniciar automaticamente um daemon emacs, se ele já não estiver em execução,-c
ou-t
abrir um novo quadro ou cliente de terminal, em vez de reutilizar um existente (na mesma sessão):fonte
Se você estiver usando um sistema operacional que usa o gerenciador de serviços systemd (que atualmente inclui a maioria das distribuições GNU / Linux), a melhor solução pode ser usar o systemd para iniciar o daemon Emacs na inicialização. Você pode fazer isso criando um arquivo
$HOME/.config/systemd/user/emacs.service
com o seguinte conteúdo:Então você deve iniciar o serviço e configurá-lo para iniciar automaticamente para todas as futuras botas:
Agora você pode usar
emacsclient
como de costume. Se você normalmente executá-lo com os-n
,-c
ou-t
opções, você pode definir um alias em sua concha. Você também pode definir as variáveis de ambienteEDITOR
e / ouVISUAL
para executaremacsclient
da maneira que desejar. Por exemplo, no Bash, você pode adicionar o seguinte ao seu.bashrc
arquivo:Se você precisar parar o daemon Emacs, faça o seguinte:
E se você deseja interromper permanentemente a execução na inicialização:
fonte
O modo como faço é bastante semelhante a uma resposta anterior, por ter um alias definido no meu .bashrc para
emacs --daemon
Além disso, tenho um atalho de teclado
ctrl-alt-E
definido comoemacsclient -c
. Quando quero começar a trabalhar no emacs, abro um terminal, digiteds
e chamo cada instância do emacsclient com meu atalho.Espero que isso ajude alguém.
fonte