diff --git a/README.md b/README.md index 00ffcb82..cc9e6081 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Noice is Not Noice, a noicer fork... - [From a package manager](#from-a-package-manager) - [Release packages](#release-packages) - [From source](#from-source) +- [Shell completion](#shell-completion) - [Usage](#usage) - [Cmdline options](#cmdline-options) - [Keyboard shortcuts](#keyboard-shortcuts) @@ -160,6 +161,10 @@ To cook yourself, download the [latest stable release](https://github.com/jarun/ `PREFIX` is supported, in case you want to install to a different location. +### Shell completion + +Search keyword and option completion scripts for Bash, Fish and Zsh can be found in respective subdirectories of [`scripts/auto-completion/`](scripts/auto-completion). Please refer to your shell's manual for installation instructions. + ### Usage #### Cmdline options diff --git a/scripts/auto-completion/bash/nnn-completion.bash b/scripts/auto-completion/bash/nnn-completion.bash new file mode 100644 index 00000000..b16b2967 --- /dev/null +++ b/scripts/auto-completion/bash/nnn-completion.bash @@ -0,0 +1,41 @@ +# +# Rudimentary Bash completion definition for nnn. +# +# Author: +# Arun Prakash Jana +# + +_nnn () { + COMPREPLY=() + local IFS=$' \n' + local cur=$2 prev=$3 + local -a opts opts_with_args + opts=( + -c + -e + -h + -i + -l + -p + -S + -v + ) + opts_with_arg=( + -c + -p + ) + + # Do not complete non option names + [[ $cur == -* ]] || return 1 + + # Do not complete when the previous arg is an option expecting an argument + for opt in "${opts_with_arg[@]}"; do + [[ $opt == $prev ]] && return 1 + done + + # Complete option names + COMPREPLY=( $(compgen -W "${opts[*]}" -- "$cur") ) + return 0 +} + +complete -F _nnn nnn diff --git a/scripts/auto-completion/fish/nnn.fish b/scripts/auto-completion/fish/nnn.fish new file mode 100644 index 00000000..2eebc489 --- /dev/null +++ b/scripts/auto-completion/fish/nnn.fish @@ -0,0 +1,15 @@ +# +# Fish completion definition for nnn. +# +# Author: +# Arun Prakash Jana +# + +complete -c nnn -s c -r -d 'specify dir color, disables if N>7' +complete -c nnn -s e -d 'use exiftool instead of mediainfo' +complete -c nnn -s h -d 'show this help and exit' +complete -c nnn -s i -d 'start in navigate-as-you-type mode' +complete -c nnn -s l -d 'start in light mode (fewer details)' +complete -c nnn -s p -r -d 'specify custom nlay' +complete -c nnn -s S -d 'start in disk usage analyzer mode' +complete -c nnn -s v -d 'show program version and exit' diff --git a/scripts/auto-completion/zsh/_nnn b/scripts/auto-completion/zsh/_nnn new file mode 100644 index 00000000..8dfe0535 --- /dev/null +++ b/scripts/auto-completion/zsh/_nnn @@ -0,0 +1,22 @@ +#compdef nnn +# +# Completion definition for nnn. +# +# Author: +# Arun Prakash Jana +# + +setopt localoptions noshwordsplit noksharrays +local -a args +args=( + '(-c)-c[specify dir color, disables if N>7]:color code' + '(-e)-e[use exiftool instead of mediainfo]' + '(-h)-h[show this help and exit]' + '(-i)-i[start in navigate-as-you-type mode]' + '(-l)-l[start in light mode (fewer details)]' + '(-p)-p[specify custom nlay]:path to nlay' + '(-S)-S[start in disk usage analyzer mode]' + '(-v)-v[show program version and exit]' + '*: :_guard "^-*" keyword' +) +_arguments -S -s $args