41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env zsh
 | 
						|
zmodload zsh/net/socket
 | 
						|
 | 
						|
AUTOSUGGEST_SERVER_SCRIPT="${0:a:h}/completion-server.zsh"
 | 
						|
 | 
						|
autosuggest-ensure-server() {
 | 
						|
	setopt local_options no_hup
 | 
						|
	local server_dir="/tmp/zsh-autosuggest-$USER"
 | 
						|
	local pid_file="$server_dir/pid"
 | 
						|
	local socket_path="$server_dir/socket"
 | 
						|
 | 
						|
	if [[ ! -d $server_dir || ! -r $pid_file ]] || ! kill -0 $(<$pid_file) &> /dev/null; then
 | 
						|
		if which setsid &> /dev/null; then
 | 
						|
			setsid zsh $AUTOSUGGEST_SERVER_SCRIPT $server_dir $pid_file $socket_path &!
 | 
						|
		else
 | 
						|
			zsh $AUTOSUGGEST_SERVER_SCRIPT $server_dir $pid_file $socket_path &!
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
 | 
						|
	autosuggest-server-connect
 | 
						|
}
 | 
						|
 | 
						|
autosuggest-server-connect() {
 | 
						|
	unset ZLE_AUTOSUGGEST_CONNECTION
 | 
						|
 | 
						|
	integer remaining_tries=10
 | 
						|
	while (( --remaining_tries )) && ! zsocket $socket_path &>/dev/null; do
 | 
						|
		sleep 0.3
 | 
						|
	done
 | 
						|
 | 
						|
	[[ -z $REPLY ]] && return 1
 | 
						|
 | 
						|
	ZLE_AUTOSUGGEST_CONNECTION=$REPLY
 | 
						|
}
 | 
						|
 | 
						|
autosuggest-send-request() {
 | 
						|
	[[ -z $ZLE_AUTOSUGGEST_CONNECTION ]] && return 1
 | 
						|
	setopt local_options noglob
 | 
						|
	print -u $ZLE_AUTOSUGGEST_CONNECTION - $1 &> /dev/null || return 1
 | 
						|
}
 |