summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2021-05-01 00:07:09 -0400
committerKyle Meyer <kyle@kyleam.com>2021-05-01 00:38:39 -0400
commit869b7a21b94ed112f6640c8f2711c2a68b661dea (patch)
treef2be298935746298b24eab9e0102a2f22bdcf835
parent45a3d7a900cb845263723c10daa3d3a94bee7ab3 (diff)
downloadorg-mode-869b7a21b94ed112f6640c8f2711c2a68b661dea.tar.gz
org-open-file: Avoid make-process for Emacs 24 compatibility
* lisp/org.el (org-open-file): Select a pipe connection type with process-connection-type rather than make-process, which isn't available until Emacs 25. This uses the alternative approach suggested by Eli Zaretskii in the thread that led to 5db61eb0f (org.el: Avoid xdg-open silent failure, 2021-03-21): https://orgmode.org/list/83y2g96ta6.fsf@gnu.org Reported-by: Ihor Radchenko <yantar92@gmail.com> Link: https://orgmode.org/list/87y2d2mqik.fsf@localhost
-rw-r--r--lisp/org.el23
1 files changed, 9 insertions, 14 deletions
diff --git a/lisp/org.el b/lisp/org.el
index 05c52a2..492824f 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -8740,20 +8740,15 @@ If the file does not exist, throw an error."
(save-window-excursion
(message "Running %s...done" cmd)
;; Handlers such as "gio open" and kde-open5 start viewer in background
- ;; and exit immediately. Avoid `start-process' since it assumes
- ;; :connection-type 'pty and kills children processes with SIGHUP
- ;; when temporary terminal session is finished.
- (make-process
- :name "org-open-file" :connection-type 'pipe :noquery t
- :buffer nil ; use "*Messages*" for debugging
- :sentinel (lambda (proc event)
- (when (and (memq (process-status proc) '(exit signal))
- (/= (process-exit-status proc) 0))
- (message
- "Command %s: %s."
- (mapconcat #'identity (process-command proc) " ")
- (substring event 0 -1))))
- :command (list shell-file-name shell-command-switch cmd))
+ ;; and exit immediately. Use pipe connnection type instead of pty to
+ ;; avoid killing children processes with SIGHUP when temporary terminal
+ ;; session is finished.
+ ;;
+ ;; TODO: Once minimum Emacs version is 25.1 or above, consider using
+ ;; the `make-process' invocation from 5db61eb0f929 to get more helpful
+ ;; error messages.
+ (let ((process-connection-type nil))
+ (start-process-shell-command cmd nil cmd))
(and (boundp 'org-wait) (numberp org-wait) (sit-for org-wait))))
((or (stringp cmd)
(eq cmd 'emacs))