

___x_cmd_lsof_fz(){
    local task=no
    local op="$1"
    case "$op" in
        -h|--help)      ___x_cmd help -m lsof fz "$@"; return ;;
        --task)         task=yes ;;
    esac

    {
        ___x_cmd_lsof_fz___run "$@"
    } | {
        ___x_cmd_cmds awk -v task="$task" -v FS="," -f "$___X_CMD_ROOT_MOD/lsof/lib/awk/fz.awk"
    } | {
        local fzf_head=
        if [ "$task" = "yes" ]; then
            fzf_head="PID     COMMAND      TID TASKCMD       USER   FD      TYPE              DEVICE   SIZE/OFF         NODE  NAME"
        else
            fzf_head="PID     COMMAND      USER   FD      TYPE              DEVICE   SIZE/OFF         NODE  NAME"
        fi

        FZF_DEFAULT_OPTS="
            $FZF_DEFAULT_OPTS
            --exact
            --ansi
            --reverse
            --height='80%'
            --bind='ctrl-w:toggle-preview-wrap'
            --bind='ctrl-r:change-preview-window(80%|52|hidden)'

            --bind='shift-tab:print(|prev-view|)+accept'

            --bind='ctrl-b:print(|goback|)+accept'
            --bind='ctrl-f:accept'

            --bind='ctrl-p:print(|prev|)+accept'
            --bind='ctrl-n:print(|next|)+accept'

            --bind='alt-shift-left:up'
            --bind='alt-shift-right:down'

            --bind='alt-shift-up:up+up+up+up+up+up+up'
            --bind='alt-shift-down:down+down+down+down+down+down+down'

            --bind='alt-left:up'
            --bind='alt-right:down'

            --bind='alt-up:up+up+up+up+up+up+up'
            --bind='alt-down:down+down+down+down+down+down+down'

            --header='$fzf_head'

            --bind='ctrl-s:print(|switch|)+accept'
            --preview-window='right:52,wrap'
        " ___x_cmd fzf
    }
}

___x_cmd_lsof_fz___run(){
    ___x_cmd ccmd 1m --   ___x_cmd_lsof_fz___runmain "$@"
}

___x_cmd_lsof_fz___runmain(){
    ___x_cmd_lsof_run --csv "$@" 2>/dev/null || true
}

