#compdef npm

# Node Package Manager 0.3.15 completion, letting npm do all the completion work

_npm() {
  compadd -- $(_npm_complete $words)
}

# We want to show all errors of any substance, but never the "npm (not )ok" one.
# (Also doesn't consider "ERR! no match found" worth breaking the terminal for.)
_npm_complete() {
  local ask_npm
  ask_npm=(npm completion --color false --loglevel error -- $@)
  { _call_program npm $ask_npm 2>&1 >&3 \
  | egrep -v '^(npm (not |)ok|ERR! no match found)$' >&2; \
  } 3>&1
}

_npm "$@"
