about summary refs log tree commit diff
path: root/Completion/Darwin/Type
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2004-07-23 13:37:42 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2004-07-23 13:37:42 +0000
commit8605ba6dacb27d48be99fd762b54aaac1a6b4958 (patch)
treefff2a34f6aa83d39a4f7d2241485af8b3ff67647 /Completion/Darwin/Type
parentd8e4bb5a383a8566e7ee86466ebe057c45b03201 (diff)
downloadzsh-8605ba6dacb27d48be99fd762b54aaac1a6b4958.tar.gz
zsh-8605ba6dacb27d48be99fd762b54aaac1a6b4958.tar.xz
zsh-8605ba6dacb27d48be99fd762b54aaac1a6b4958.zip
Motoi Washida: 20179: new completions for Mac OS X
Diffstat (limited to 'Completion/Darwin/Type')
-rw-r--r--Completion/Darwin/Type/.distfiles4
-rw-r--r--Completion/Darwin/Type/_mac_applications51
2 files changed, 55 insertions, 0 deletions
diff --git a/Completion/Darwin/Type/.distfiles b/Completion/Darwin/Type/.distfiles
new file mode 100644
index 000000000..bf2b38068
--- /dev/null
+++ b/Completion/Darwin/Type/.distfiles
@@ -0,0 +1,4 @@
+DISTFILES_SRC='
+.distfiles
+_mac_applications
+'
diff --git a/Completion/Darwin/Type/_mac_applications b/Completion/Darwin/Type/_mac_applications
new file mode 100644
index 000000000..69b23ea7b
--- /dev/null
+++ b/Completion/Darwin/Type/_mac_applications
@@ -0,0 +1,51 @@
+#autoload
+
+_mac_applications_caching_policy () {
+   # rebuild if cache is more than a day old
+   oldp=( "$1"(Nmw+1) )
+   (( $#oldp ))
+}
+
+_mac_applications() {
+  [[ $PREFIX = */* ]] && return 1
+
+  local cache_policy
+  zstyle -s ":completion:*:*:$service:*" cache-policy cache_policy
+  if [[ -z "$cache_policy" ]]; then
+    zstyle ":completion:*:*:$service:*" cache-policy _mac_applications_caching_policy
+  fi
+
+  if ( [[ ${+apps} -eq 0 ]] || _cache_invalid Mac_applications ) \
+        && ! _retrieve_cache Mac_applications; then
+    local app_pattern="*.app"
+
+    local -a app_path 
+    zstyle -s ":completion:${curcontext}:commands" application-dir app_path
+    if [[ -z "$app_path" ]]; then
+      local -a apdptn
+      apdptn="((*~$app_pattern~Data~plugins~*Fonts~Contents)/)#"
+      app_path=({{/,/Developer,/Network,"$HOME"}/Applications/,"/Applications (Mac OS 9)/"}${~apdptn} "$HOME"/Desktop/{,*~${~app_pattern}(/)})
+    fi
+
+    local -a apps
+
+    if ! zstyle -t ":completion:${curcontext}:commands" ignore-extention; then
+      apps=("${apps[@]}" "${app_path[@]}"/${~app_pattern})
+    fi
+
+    if ! zstyle -t ":completion:${curcontext}:commands" ignore-cfm; then
+      local capps
+      capps="`awk '/^Joy\!peffpwpc/ {print FILENAME; }; { nextfile }' ${app_path}/(*~*.?~*.??~*.???~*.????)(^/)`"
+      apps=("${apps[@]}" "${(f)capps}")
+    fi
+
+    typeset -U apps
+    apps=("${apps[@]:t:r}")
+    _store_cache Mac_applications apps
+  fi
+
+  local expl
+  _wanted commands expl 'mac os x application' compadd -a apps
+}
+
+_mac_applications "$@"