about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Functions/MIME/zsh-mime-contexts24
1 files changed, 24 insertions, 0 deletions
diff --git a/Functions/MIME/zsh-mime-contexts b/Functions/MIME/zsh-mime-contexts
new file mode 100644
index 000000000..08f125158
--- /dev/null
+++ b/Functions/MIME/zsh-mime-contexts
@@ -0,0 +1,24 @@
+# Helper for zsh-mime-handler.
+#
+# Pass in a zstyle option, a suffix, which might include multiple parts
+# (e.g. pdf.gz), plus remaining zstyle arguments plus arguments to zstyle.
+# Try to match the style starting with the longest possible suffix.
+
+local context suffix option
+
+option=$1
+shift
+suffix=$1
+shift
+
+while true; do
+  context=":mime:.${suffix}:"
+  zstyle $option $context "$@" && return 0
+  if [[ $suffix = *.* ]]; then
+    suffix=${suffix#*.}
+  else
+    break
+  fi
+done
+
+return 1