O daemon do Emacs não exclui o soquete

2

Eu corro o Emacs através do

emacs --daemon

comando, que configura um arquivo de soquete /tmp/emacs100/server para o emacsclient se comunicar. Quando eu mato o servidor como:

emacsclient --eval "(kill-emacs)"

o arquivo de soquete permanece, impedindo-me de executar emacs --daemon novamente. O mesmo acontece quando tento M-x kill-emacs dentro do Emacs. Como alternativa, quando tento:

M-x server-force-delete

De dentro do Emacs, recebo uma mensagem dizendo:

No connection file "/tmp/emacs1000/server

Alguma idéia do que está errado? Como faço para iniciar e desligar o servidor do emacs sem problemas?

    
por Karthik 16.08.2010 / 01:24

3 respostas

0

eu encontrei o mesmo problema, aparentemente

(setq delete-by-moving-to-trash nil)

conserte isso ...

    
por 26.09.2010 / 20:48
0

Estou rodando o emacs 23.1.1 e simplesmente tenho essa linha no meu .emacs

;; Start Emacs server
(server-start)

e eu nunca tive um problema com arquivos de soquete pegajoso.

E o emacsclient funciona bem.

    
por 19.08.2010 / 14:30
0

Você não precisa desativar a lixeira globalmente. Apenas desabilite-o dentro de cada comando que possa excluir o arquivo do servidor. Primeiro, defina uma macro como um atalho para desabilitar a lixeira dentro de uma função:

(defmacro bypass-trash-in-function (fun)
  "Set FUN to always use normal deletion, and never trash.

Specifically, the value of 'delete-by-moving-to-trash' will be
set to nil inside FUN, so any deletions that happen inside FUN or
any functions called by it will bypass the trash."
  '(defadvice ,fun (around no-trash activate)
     "Ignore 'delete-by-moving-to-trash' inside this function.

See 'bypass-trash-in-function' for more information."
     (let (delete-by-moving-to-trash)
       ad-do-it)))

Em seguida, aplique essa macro a cada uma das três funções do servidor que têm delete-file em qualquer parte do corpo:

;; Any server function that may delete the server file should never
;; move it to trash instead.
(mapc (lambda (fun) (eval '(bypass-trash-in-function ,fun)))
      '(server-start server-sentinel server-force-delete))

Agora você pode definir delete-by-moving-to-trash para o que quiser.

    
por 05.02.2011 / 22:24

Tags