mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| emulate -L zsh
 | |
| setopt extendedglob
 | |
| 
 | |
| local -a word_functions
 | |
| 
 | |
| word_functions=(backward-kill-word backward-word
 | |
|     capitalize-word down-case-word
 | |
|     forward-word kill-word
 | |
|     transpose-words up-case-word)
 | |
| 
 | |
| [[ -z $1 ]] && autoload read-from-minibuffer
 | |
| 
 | |
| local REPLY detail f
 | |
| 
 | |
| if ! zle -l $word_functions[1]; then
 | |
|     for f in $word_functions; do
 | |
| 	autoload -U $f-match
 | |
| 	zle -N $f $f-match
 | |
|     done
 | |
| fi
 | |
| 
 | |
| 
 | |
| while true; do
 | |
| 
 | |
|     if [[ -n $WIDGET && -z $1 ]]; then
 | |
| 	read-from-minibuffer -k1 "Word styles (hit return for more detail):
 | |
| (b)ash (n)ormal (s)hell (w)hitespace (d)efault (q)uit
 | |
| ${detail}? " || return 1
 | |
|     else
 | |
| 	REPLY=$1
 | |
|     fi
 | |
| 
 | |
|     detail=
 | |
| 
 | |
|     case $REPLY in
 | |
| 	(b*)
 | |
| 	# bash style
 | |
| 	zstyle ':zle:*' word-style standard
 | |
| 	zstyle ':zle:*' word-chars ''
 | |
| 	;;
 | |
| 
 | |
| 	(n*)
 | |
| 	# normal zsh style
 | |
| 	zstyle ':zle:*' word-style standard
 | |
| 	zstyle ':zle:*' word-chars "$WORDCHARS"
 | |
| 	;;
 | |
| 
 | |
| 	(s*)
 | |
| 	# shell command arguments or special tokens
 | |
| 	zstyle ':zle:*' word-style shell
 | |
| 	;;
 | |
| 
 | |
| 	(w*)
 | |
| 	# whitespace-delimited
 | |
| 	zstyle ':zle:*' word-style space
 | |
| 	;;
 | |
| 
 | |
| 	(d*)
 | |
| 	# default: could also return widgets to builtins here
 | |
| 	zstyle -d ':zle:*' word-style
 | |
| 	zstyle -d ':zle:*' word-chars
 | |
| 	;;
 | |
| 
 | |
| 	(q*)
 | |
| 	# quit without setting
 | |
| 	return 1
 | |
| 	;;
 | |
| 
 | |
| 	(*)
 | |
| 	detail="\
 | |
| (b)ash:       Word characters are alphanumerics only
 | |
| (n)ormal:     Word characters are alphanumerics plus \$WORDCHARS
 | |
| (s)hell:      Words are command arguments using shell syntax
 | |
| (w)hitespace: Words are whitespace-delimited
 | |
| (d)efault:    Use default, no special handling (usually same as \`n')
 | |
| (q)uit:       Quit without setting a new style
 | |
| "
 | |
| 	if [[ -z $WIDGET || -n $1 ]]; then
 | |
| 	    print "Usage: $0 word-style
 | |
| where word-style is one of the characters in parentheses:
 | |
| $detail" >&2
 | |
| 	    return 1
 | |
| 	fi
 | |
| 	continue
 | |
| 	;;
 | |
|     esac
 | |
|     return
 | |
| done
 |