12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # Copy this file into /usr/share/zsh/site-functions/
- # and add 'autoload n-options` to .zshrc
- #
- # This function allows to browse and toggle shell's options
- #
- # Uses n-list
- #emulate -L zsh
- zmodload zsh/curses
- local IFS="
- "
- unset NLIST_COLORING_PATTERN
- [ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
- [ -f ~/.config/znt/n-options.conf ] && builtin source ~/.config/znt/n-options.conf
- # TODO restore options
- unsetopt localoptions
- integer kshoptionprint=0
- [[ -o kshoptionprint ]] && kshoptionprint=1
- setopt kshoptionprint
- local list
- local selected
- local option
- local state
- # 0 - don't remember, 1 - remember, 2 - init once, then remember
- NLIST_REMEMBER_STATE=2
- local NLIST_GREP_STRING="${1:=}"
- while (( 1 )); do
- list=( `setopt` )
- list=( "${(M)list[@]:#*${1:=}*}" )
- list=( "${list[@]:#kshoptionprint*}" )
- if [ "$#list" -eq 0 ]; then
- echo "No matching options"
- break
- fi
- local red=$'\x1b[00;31m' green=$'\x1b[00;32m' reset=$'\x1b[00;00m'
- list=( "${list[@]/ off/${red} off$reset}" )
- #list=( "${list[@]/ on/${green} on$reset}" )
- list=( "${(i)list[@]}" )
- n-list "${list[@]}"
- if [ "$REPLY" -gt 0 ]; then
- [[ -o ksharrays ]] && selected="${reply[$(( REPLY - 1 ))]}" || selected="${reply[$REPLY]}"
- option="${selected%% *}"
- state="${selected##* }"
- if [[ -o globsubst ]]; then
- unsetopt globsubst
- state="${state%$reset}"
- setopt globsubst
- else
- state="${state%$reset}"
- fi
- # Toggle the option
- if [ "$state" = "on" ]; then
- echo "Setting |$option| to off"
- unsetopt "$option"
- else
- echo "Setting |$option| to on"
- setopt "$option"
- fi
- else
- break
- fi
- done
- NLIST_REMEMBER_STATE=0
- [[ "$kshoptionprint" -eq 0 ]] && unsetopt kshoptionprint
- # vim: set filetype=zsh:
|