O server-running-p
predicado avaliará t
se o servidor Emacs está em execução, independentemente de qual sessão do Emacs atualmente "possui" o processo do servidor.
Portanto, quando há duas ou mais sessões independentes do Emacs em execução simultaneamente, server-running-p
ele realmente não testa se a sessão atual do Emacs está executando o servidor.
Estou procurando um teste mais específico, que avaliará t
se e somente se a sessão atual (ou seja, a sessão que está executando o teste) está executando o servidor Emacs.
server-start
e depoisserver-force-delete
),server-mode
sempre foinil
.(server-mode 1)
vez de ligar(server-start)
. O primeiro invoca o último eserver-force-delete
também verifica e desativa esse modo, então parece quesever-mode
é a interface pretendida, e não devemos ligarserver-start
diretamente.server-mode
ainda não conta para o mesmo servidor ser iniciado e excluído por meio de várias instâncias do Emacs, pois excluir o servidor de uma instância não afeta o valor deserver-mode
outra.Respostas:
Você pode verificar:
Isso deve funcionar desde que você evite iniciar um servidor nas outras instâncias.
Supondo que um servidor baseado em soquete, se você iniciar uma segunda instância do Emacs e excluir e forçar a reinicialização do processo do servidor a partir dessa segunda instância, o código acima ainda retornará nulo na instância original (como o mesmo soquete diretório estará em uso), deixando você na situação original.
(Obviamente, isso não é o ideal, então pode muito bem haver uma solução melhor.)
server-running-p
informa se um servidor nomeado específico (padrãoserver-name
) está em execução; portanto, se vocêserver-name
é o mesmo em todas as suas instâncias, evite iniciar um servidor já em execução, como:fonte