eu encontrei o mesmo problema, aparentemente
(setq delete-by-moving-to-trash nil)
conserte isso ...
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?
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.
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.