Dwie poprzednie odpowiedzi nie działały dla mnie:
(setq process-connection-type nil)
zepsuł się org-plot/gnuplot
setsid xdg-open ...
działało przez chwilę, ale potem z jakiegoś powodu przestało działać.
Teraz używam setsid -w
, co podobno powoduje, że setsid
oczekiwany program się zakończy.
Jeśli ktoś by go potrzebował, używam tego z AUCTeX (i znalazłem to pytanie, próbując naprawić zachowanie AUCTeX na Arch Linux), a mój TeX-command-list
ustawiony jest na
(quote
(
;; ...
("View" "setsid -w xdg-open %s.pdf" TeX-run-command t t :help "Run Text viewer")
;; ...
)
Na razie wydaje się, że działa dobrze ...
-w
(czekać):setsid -w xdg-open 1.pdf
Może to być problem z używaniem ptys do komunikacji podprocesowej. Spróbuj zamiast tego ustawić typ połączenia procesowego na zero, aby używać potoków.
W twoich .emacs
Korzystam z funkcji publikowania z trybu organizacji i bez tej zmiany żaden z wygenerowanych plików nie otwiera się za pomocą xdg-open, pomimo braku komunikatów o błędach.
źródło
org-plot/gnuplot
kursor / punkt na stole zprocess-connection-type
ustawionym na i bez niego, abynil
uzyskać więcej informacji, zobacz pierwszą podsekcję tej strony .xdg otwarty praca w trybie synchronizacji:
(shell-command "xdg-open .")
, ale nie w trybie asynchronicznym:(async-shell-command "xdg-open .")
.wygląda na to, że proces potomny spawnujący xdg-open otwiera plik, a następnie kończy działanie. przed procesem potomnym otwórz plik, wyjdź z xdg-open, a także wyjdź z powłoki. wyjście z powłoki zabija cały proces potomny.
więc po prostu zmniejsz życie powłoki:
(async-shell-command "xdg-open . ; sleep 1")
(polecenie async-shell-dodaje się&
późniejsleep 1
; w każdym razie powłoka nadal czeka na&
zakończenie procesu w tle ).źródło