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.
		
		
		
		
		
			
		
			
				
					
					
						
							84 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							84 lines
						
					
					
						
							1.9 KiB
						
					
					
				| # 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:
 | |
| 
 |