nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit bc572df55a35cc738466996abe26339fc5acaeda
parent 752bc67de03d158ece3f0fb43f6f2a3e6b2011b9
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Fri, 24 Apr 2020 10:12:24 +0530

NNN_SEL: custom selection file

Diffstat:
MREADME.md | 2+-
Mnnn.1 | 2++
Mplugins/.cbcp | 16++++++++--------
Mplugins/.nmv | 2+-
Mplugins/.nnn-plugin-helper | 2+-
Mplugins/chksum | 2+-
Mplugins/diffs | 2+-
Mplugins/dragdrop | 2+-
Mplugins/kdeconnect | 8++++----
Mplugins/mocplay | 2+-
Mplugins/renamer | 2+-
Mplugins/splitjoin | 2+-
Mplugins/x2sel | 4++--
Msrc/nnn.c | 23++++++++++++++++-------
14 files changed, 41 insertions(+), 30 deletions(-)

diff --git a/README.md b/README.md @@ -7,7 +7,7 @@ <a href="https://circleci.com/gh/jarun/workflows/nnn"><img src="https://img.shields.io/circleci/project/github/jarun/nnn.svg?label=circleci" alt="CircleCI Status" /></a> <a href="https://en.wikipedia.org/wiki/Privacy-invasive_software"><img src="https://img.shields.io/badge/privacy-✓-crimson?maxAge=2592000" alt="Privacy Awareness" /></a> <a href="https://github.com/jarun/nnn/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD%202--Clause-yellow.svg?maxAge=2592000" alt="License" /></a> -<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/PayPal-donate-1eb0fc.svg" alt="Donate via PayPal!" /></a> +<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/donate-PayPal-1eb0fc.svg" alt="Donate via PayPal!" /></a> </p> <p align="center"><a href="https://www.youtube.com/watch?v=U2n5aGqou9E"><img src="https://i.imgur.com/MPWpmos.png" /></a></p> diff --git a/nnn.1 b/nnn.1 @@ -421,6 +421,8 @@ separated by \fI;\fR: NOTE: Only the first character is considered if not a \fICtrl+key\fR combo. .Ed .Pp +\fBNNN_SEL:\fR absolute path to custom selection file. +.Pp \fBnnn:\fR this is a special variable set to the hovered entry before executing a command from the command prompt or spawning a shell. .Pp diff --git a/plugins/.cbcp b/plugins/.cbcp @@ -19,27 +19,27 @@ IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n -SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} if which xsel >/dev/null 2>&1; then # Linux - tr '\0' '\n' < "$SELECTION" | xsel -bi + tr '\0' '\n' < "$selection" | xsel -bi elif which xclip >/dev/null 2>&1; then # Linux - tr '\0' '\n' < "$SELECTION" | xclip -sel clip + tr '\0' '\n' < "$selection" | xclip -sel clip elif which pbcopy >/dev/null 2>&1; then # macOS - tr '\0' '\n' < "$SELECTION" | pbcopy + tr '\0' '\n' < "$selection" | pbcopy elif which termux-clipboard-set >/dev/null 2>&1; then # Termux - tr '\0' '\n' < "$SELECTION" | termux-clipboard-set + tr '\0' '\n' < "$selection" | termux-clipboard-set elif which clip.exe >/dev/null 2>&1; then # WSL - tr '\0' '\n' < "$SELECTION" | clip.exe + tr '\0' '\n' < "$selection" | clip.exe elif which clip >/dev/null 2>&1; then # Cygwin - tr '\0' '\n' < "$SELECTION" | clip + tr '\0' '\n' < "$selection" | clip elif which wl-copy >/dev/null 2>&1; then # Wayland - tr '\0' '\n' < "$SELECTION" | wl-copy + tr '\0' '\n' < "$selection" | wl-copy fi diff --git a/plugins/.nmv b/plugins/.nmv @@ -21,7 +21,7 @@ TMPDIR="${TMPDIR:-/tmp}" INCLUDE_HIDDEN="${INCLUDE_HIDDEN:-0}" VERBOSE="${VERBOSE:-0}" -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} exit_status=0 dst_file=$(mktemp "$TMPDIR/.nnnXXXXXX") diff --git a/plugins/.nnn-plugin-helper b/plugins/.nnn-plugin-helper @@ -5,7 +5,7 @@ # Shell: POSIX compliant # Author: Anna Arad -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} export selection ## Set CUR_CTX to 1 to open directory in current context diff --git a/plugins/chksum b/plugins/chksum @@ -14,7 +14,7 @@ # Shell: POSIX compliant # Author: ath3, Arun Prakash Jana -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} resp=f chsum=md5 diff --git a/plugins/diffs b/plugins/diffs @@ -10,7 +10,7 @@ # Shell: POSIX compliant # Authors: Arun Prakash Jana, ath3 -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} if which nvim >/dev/null 2>&1; then diffcmd="nvim -d" diff --git a/plugins/dragdrop b/plugins/dragdrop @@ -13,7 +13,7 @@ # Shell: POSIX compliant # Author: 0xACE -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} resp=f all= if which dragon-drag-and-drop >/dev/null 2>&1; then diff --git a/plugins/kdeconnect b/plugins/kdeconnect @@ -5,13 +5,13 @@ # Shell: POSIX compliant # Author: juacq97 -SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} id=$(kdeconnect-cli -a --id-only | awk '{print $1}') -if [ "$(find "$SELECTION")" ]; then - kdeconnect-cli -d "$id" --share "$(cat "$SELECTION")" +if [ "$(find "$selection")" ]; then + kdeconnect-cli -d "$id" --share "$(cat "$selection")" # If you want a system notification, uncomment the next 3 lines. -# notify-send -a "Kdeconnect" "Sending $(cat "$SELECTION")" +# notify-send -a "Kdeconnect" "Sending $(cat "$selection")" #else # notify-send -a "Kdeconnect" "No file selected" fi diff --git a/plugins/mocplay b/plugins/mocplay @@ -12,7 +12,7 @@ # Author: Arun Prakash Jana, ath3 IFS="$(printf '\n\r')" -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} cmd=$(pgrep -x mocp 2>/dev/null) ret=$cmd diff --git a/plugins/renamer b/plugins/renamer @@ -12,7 +12,7 @@ # Shell: POSIX compliant # Author: José Neder -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} if command -v qmv >/dev/null 2>&1; then batchrenamesel="qmv -fdo -da" diff --git a/plugins/splitjoin b/plugins/splitjoin @@ -8,7 +8,7 @@ # Shell: POSIX compliant # Authors: Arun Prakash Jana, ath3 -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} resp=s if [ -s "$selection" ]; then diff --git a/plugins/x2sel b/plugins/x2sel @@ -16,7 +16,7 @@ IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n -SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} getclip () { @@ -54,4 +54,4 @@ for file in $CLIPBOARD ; do fi done -printf "%s" "$CLIPBOARD" | tr '\n' '\0' > "$SELECTION" +printf "%s" "$CLIPBOARD" | tr '\n' '\0' > "$selection" diff --git a/src/nnn.c b/src/nnn.c @@ -579,8 +579,9 @@ static const char * const messages[] = { #define NNNLVL 5 #define NNN_PIPE 6 #define NNN_MCLICK 7 -#define NNN_ARCHIVE 8 /* strings end here */ -#define NNN_TRASH 9 /* flags begin here */ +#define NNN_SEL 8 +#define NNN_ARCHIVE 9 /* strings end here */ +#define NNN_TRASH 10 /* flags begin here */ static const char * const env_cfg[] = { "NNN_OPTS", @@ -591,6 +592,7 @@ static const char * const env_cfg[] = { "NNNLVL", "NNN_PIPE", "NNN_MCLICK", + "NNN_SEL", "NNN_ARCHIVE", "NNN_TRASH", }; @@ -6612,16 +6614,23 @@ static bool setup_config(void) /* Set selection file path */ if (!cfg.picker) { - /* Length of "/.config/nnn/.selection" */ - selpath = (char *)malloc(len + 3); + char *env_sel = xgetenv(env_cfg[NNN_SEL], NULL); + if (env_sel) + selpath = xstrdup(env_sel); + else + /* Length of "/.config/nnn/.selection" */ + selpath = (char *)malloc(len + 3); + if (!selpath) { xerror(); return FALSE; } - r = xstrsncpy(selpath, cfgdir, len + 3); - xstrsncpy(selpath + r - 1, "/.selection", 12); - DPRINTF_S(selpath); + if (!env_sel) { + r = xstrsncpy(selpath, cfgdir, len + 3); + xstrsncpy(selpath + r - 1, "/.selection", 12); + DPRINTF_S(selpath); + } } return TRUE;