emacs doesnot работают с xdg-открытым

Я использую emacs 24.4.1 на человечности 15.04. Так или иначе xdg-откройте работу doesnot, если я выполняю ее от emacs. Например, если я работаю "xdg-открытый 1.pdf" или "gvfs-открытый 1.pdf", в eshell они не работают. В то же время, "проявите 1.pdf" работы отлично.

2
задан 10 July 2015 в 04:08

4 ответа

Предыдущие два ответа не работали на меня:

  • (setq process-connection-type nil) повредился org-plot/gnuplot
  • setsid xdg-open ... работавший некоторое время, но затем это остановилось по некоторым причинам.

Теперь я использую setsid -w, который, предположительно, делает setsid ожидайте, пока названная программа не заканчивается.

Если кому-то был бы нужен он, я использую это с AUCTeX (и я нашел этот вопрос при попытке закрепить поведение AUCTeX на Arch Linux), и мой TeX-command-list установлен на

(quote
 ( 
  ;; ...
  ("View" "setsid -w xdg-open %s.pdf" TeX-run-command t t :help "Run Text viewer")
  ;; ...
  )

Это, кажется, хорошо работает на данный момент...

3
ответ дан 2 December 2019 в 01:37

Используя setsid xdg-open 1.pdf работы для меня. Проблема, кажется, что gvfs-open и xdg-open возврат перед их детьми сделан, работая. Emacs мог бы уничтожить их терминал управления, когда это происходит, уничтожая детей, и останавливаясь evince от открытия правильно. setsid наборы новый терминал управления, который не закроет emacs.

3
ответ дан 2 December 2019 в 01:37

Это может быть проблемой с использованием имуществ для коммуникации подпроцесса. Попытайтесь установить тип соединения процесса на ноль для использования каналов вместо этого.

В Вашем .emacs

;; Use pipes for subprocess communication
(setq process-connection-type nil)

я использую функции публикации от org режима и без этого изменения, ни один из сгенерированных файлов не открыт через xdg-открытый, несмотря ни на какие сообщения об ошибках.

1
ответ дан 2 December 2019 в 01:37

xdg-открытая-разработка в синхронизирующем режиме: (shell-command "xdg-open ."), но не в асинхронном режиме: (async-shell-command "xdg-open .").

кажется, что xdg-открытый дочерний процесс икры для открытия файла затем выходит. перед дочерним процессом открытый файл, xdg-открытый выход, таким образом выход оболочки, также. выход оболочки уничтожает весь дочерний процесс.

поэтому просто делают жизнь оболочки немного больше: (async-shell-command "xdg-open . ; sleep 1") (асинхронная команда оболочки добавит & после sleep 1; так или иначе оболочка будет все еще ожидать фоновый процесс & конец.)

0
ответ дан 2 December 2019 в 01:37

Другие вопросы по тегам:

Похожие вопросы: