summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2013-08-29 10:48:49 +0100
committerPeter Stephenson <pws@zsh.org>2013-08-29 10:48:49 +0100
commit1c9931cc7d37cac9aebb034444fb87e0901e914a (patch)
treef77c576ffa6f50364dc9e33480ad9a821f9c1c96
parent1a4730b8eecc8f0b098203d79b787799770da179 (diff)
downloadzsh-1c9931cc7d37cac9aebb034444fb87e0901e914a.tar.gz
zsh-1c9931cc7d37cac9aebb034444fb87e0901e914a.zip
users/17955: new "disown" style for MIME handlers.
Makes handlers put into the background run without job control.
-rw-r--r--ChangeLog4
-rw-r--r--Doc/Zsh/contrib.yo8
-rw-r--r--Functions/MIME/zsh-mime-handler9
3 files changed, 18 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 77c1991f2..7b93632f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2013-08-29 Peter Stephenson <p.stephenson@samsung.com>
+ * users/17955: Doc/Zsh/contrib.yo,
+ Functions/MIME/zsh-mime-handler: "disown" style makes MIME
+ handlers put into background run without job control.
+
* based on 31641, 31642: Completion/Unix/Command/_make: support
a couple of different variants of make.
diff --git a/Doc/Zsh/contrib.yo b/Doc/Zsh/contrib.yo
index 06e7ed076..48c510582 100644
--- a/Doc/Zsh/contrib.yo
+++ b/Doc/Zsh/contrib.yo
@@ -2861,6 +2861,14 @@ question is run using the tt(eval) builtin instead of by starting a new
tt(sh) process. This is more efficient, but may not work in the occasional
cases where the mailcap handler uses strict POSIX syntax.
)
+kindex(disown, MIME style)
+item(tt(disown))(
+If this boolean style is true, mailcap handlers started in the
+background will be disowned, i.e. not subject to job control within
+the parent shell. Such handlers nearly always produce their own
+windows, so the only likely harmful side effect of setting the style is
+that it becomes harder to kill jobs from within the shell.
+)
kindex(execute-as-is, MIME style)
item(tt(execute-as-is))(
This style gives a list of patterns to be matched against files
diff --git a/Functions/MIME/zsh-mime-handler b/Functions/MIME/zsh-mime-handler
index abaf0b6e3..7245c20e2 100644
--- a/Functions/MIME/zsh-mime-handler
+++ b/Functions/MIME/zsh-mime-handler
@@ -74,7 +74,7 @@ if [[ $suffix != *.* ]]; then
fi
suffix=${suffix#*.}
-local handler flags no_sh no_bg arg
+local handler flags no_sh no_bg arg bg_flag="&"
integer i
local -a exec_asis hand_nonex
@@ -89,6 +89,9 @@ zsh-mime-contexts -a $suffix execute-as-is exec_asis || exec_asis=('*(*)' '*(/)'
zsh-mime-contexts -a $suffix handle-nonexistent hand_nonex ||
hand_nonex=('[[:alpha:]]#:/*')
+# Set to true if the job should be disowned.
+zsh-mime-contexts -t $suffix disown && bg_flag="&!"
+
local pattern
local -a files
@@ -309,8 +312,8 @@ else
# Otherwise it's equivalent to removing the eval and all the quotes,
# including the (q) flags.
if [[ -n $stdin ]]; then
- eval cat ${(q)argv} "|" ${(q)execargs} "&"
+ eval cat ${(q)argv} "|" ${(q)execargs} $bg_flag
else
- eval ${(q)execargs} "&"
+ eval ${(q)execargs} $bg_flag
fi
fi