Subject: browse-url-xdg-open can fail to return

From: Lawrence Mitchell <[email-masked]>
Date: Wed, 22 Jun 2011 10:18:28 +0100

In GNU Emacs 24.0.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.4)
 of 2011-06-06 on e4300lm
Windowing system distributor `The X.Org Foundation', version 11.0.11001000
configured using `configure '-C''

If Emacs uses browse-url-xdg-open to open URLs, and the browser
is /not/ already running, browse-url starts a new browser process
and then sits waiting for it to complete.  Control does not
return to Emacs until the browser is quit.

I believe this is an unintended side-effect of this change:

| 2010-10-08  Andreas Schwab  <[email-masked]>

| 	* net/browse-url.el (browse-url-xdg-open): Remove use of /bin/sh.

I think the correct fix is to just discard output from the
command and return immediately (nohup is then also not needed).
Here's a patch:

--8<---------------cut here---------------start------------->8---
>From c7183b3a4886a65951b155b1e0d57e0b50e19504 Mon Sep 17 00:00:00 2001
From: Lawrence Mitchell <[email-masked]>
Date: Wed, 22 Jun 2011 10:08:29 +0100
Subject: [PATCH] browse-url: Don't wait for xdg-open to return

* net/browse-url.el (browse-url-xdg-open): Use 0, rather than nil
BUFFER in call-process.
---
 lisp/ChangeLog         |    5 +++++
 lisp/net/browse-url.el |    2 +-
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1ab91cf..4511dbc 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-22  Lawrence Mitchell  <[email-masked]>
+
+	* net/browse-url.el (browse-url-xdg-open): Use 0, rather than nil
+	BUFFER in call-process.
+
 2011-06-21  Tim Harper  <[email-masked]>
 
 	* term/ns-win.el (ns-initialize-window-system): set
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index c1ec3f0..d9e6827 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -958,7 +958,7 @@ Galeon, Konqueror, Netscape, Mosaic, Lynx in an xterm, and then W3."
 ;;;###autoload
 (defun browse-url-xdg-open (url &optional new-window)
   (interactive (browse-url-interactive-arg "URL: "))
-  (call-process "nohup" nil nil nil "xdg-open" url))
+  (call-process "xdg-open" nil 0 nil url))
 
 ;;;###autoload
 (defun browse-url-netscape (url &optional new-window)

--8<---------------cut here---------------end--------------->8---