aboutsummaryrefslogtreecommitdiff
path: root/files/.config/nnn/plugins/.nnn-plugin-helper
blob: 118e6c77c08e2542bdd033052a1b38a4e0808f9f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env sh

# Description: Helper script for plugins
#
# Shell: POSIX compliant
# Author: Anna Arad

selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
export selection

## Set CUR_CTX to 1 to open directory in current context
CUR_CTX=0
export CUR_CTX

NNN_PREFER_SELECTION="${NNN_PREFER_SELECTION:-0}"
export NNN_PREFER_SELECTION

## Ask nnn to switch to directory $1 in context $2.
## If $2 is not provided, the function asks explicitly.
nnn_cd () {
    dir="$1"

    if [ -z "$NNN_PIPE" ]; then
        echo "No pipe file found" 1>&2
        return
    fi

    if [ -n "$2" ]; then
        context=$2
    elif [ $CUR_CTX -ne 1 ]; then
        printf "Choose context 1-4 (blank for current): "
        read -r context
    fi

    printf "%s" "${context:-0}c$dir" > "$NNN_PIPE"
}

cmd_exists () {
    type "$1" > /dev/null 2>&1
    echo $?
}

nnn_use_selection() {
    if ! [ -s "$selection" ]; then
        return 1
    fi

    if [ "$NNN_PREFER_SELECTION" -eq 1 ]; then
        return 0
    else
        [ -n "$1" ] && printf "%s " "$1"
        printf "(s)election/(c)urrent? [default=c] "
        read -r resp__

        if [ "$resp__" = "s" ]; then
            return 0
        else
            return 1
        fi
    fi
}