emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals-release/org 869b7a2 2/4: org-open-file: Avoid make-proc


From: ELPA Syncer
Subject: [elpa] externals-release/org 869b7a2 2/4: org-open-file: Avoid make-process for Emacs 24 compatibility
Date: Sat, 1 May 2021 00:57:12 -0400 (EDT)

branch: externals-release/org
commit 869b7a21b94ed112f6640c8f2711c2a68b661dea
Author: Kyle Meyer <kyle@kyleam.com>
Commit: Kyle Meyer <kyle@kyleam.com>

    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
---
 lisp/org.el | 23 +++++++++--------------
 1 file 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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]