You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# 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:
|