_lsns_module()
{
	local cur prev OPTS LSNS_COLS_ALL
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	LSNS_COLS_ALL="
		NS TYPE PATH NPROCS PID PPID COMMAND UID USER
	"
	case $prev in
		'-o'|'--output')
			local prefix realcur LSNS_COLS
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			for WORD in $LSNS_COLS_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					LSNS_COLS="$WORD ${LSNS_COLS:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$LSNS_COLS" -S ',' -- $realcur) )
			return 0
			;;
		'-p'|'--task')
			COMPREPLY=( $(compgen -W "$(cd /proc && echo [0-9]*)" -- $cur) )
			return 0
			;;
		'-t'|'--type')
			COMPREPLY=( $(compgen -W "mnt net ipc user pid uts cgroup" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	case $cur in
		-*)
			COMPREPLY=( $(compgen -W "
					--json
					--list
					--noheadings
					--output
					--output-all
					--task
					--raw
					--notruncate
					--type
					--help
					--version
				" -- $cur) )
			return 0
			;;
	esac
	COMPREPLY=( $(compgen -W "mnt net pid uts ipc user" -- $cur ) )
	return 0
}
complete -F _lsns_module lsns
