2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# Fish-like fast/unobtrusive autosuggestions for zsh. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# https://github.com/tarruda/zsh-autosuggestions 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 01:08:21 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# v0.2.4 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# Copyright (c) 2013 Thiago de Arruda 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Copyright (c) 2016 Eric Freese 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Permission is hereby granted, free of charge, to any person 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# obtaining a copy of this software and associated documentation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# files (the "Software"), to deal in the Software without 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# restriction, including without limitation the rights to use, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# copy, modify, merge, publish, distribute, sublicense, and/or sell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# copies of the Software, and to permit persons to whom the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Software is furnished to do so, subject to the following 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# conditions: 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# The above copyright notice and this permission notice shall be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# included in all copies or substantial portions of the Software. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# OTHER DEALINGS IN THE SOFTWARE. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Global Configuration Variables                                     # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Color to use when highlighting suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Uses format of `region_highlight` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = 'fg=8' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Prefix to use when saving original versions of bound widgets 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX = autosuggest-orig-
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Widgets that clear the suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ZSH_AUTOSUGGEST_CLEAR_WIDGETS = ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									history-search-forward
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									history-search-backward
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									history-beginning-search-forward
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									history-beginning-search-backward
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									up-line-or-history
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									down-line-or-history
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									accept-line
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Widgets that accept the entire suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ZSH_AUTOSUGGEST_ACCEPT_WIDGETS = ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									forward-char
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									end-of-line
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									vi-forward-char
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									vi-end-of-line
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Widgets that accept the suggestion as far as the cursor moves 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS = ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									forward-word
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									vi-forward-word
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									vi-forward-word-end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									vi-forward-blank-word
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									vi-forward-blank-word-end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Handle Deprecated Variables/Widgets                                # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:32:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_deprecated_warning( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									>& 2  echo  " zsh-autosuggestions:  $@ " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_check_deprecated_config( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  -n " $AUTOSUGGESTION_HIGHLIGHT_COLOR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_zsh_autosuggest_deprecated_warning "AUTOSUGGESTION_HIGHLIGHT_COLOR is deprecated. Use ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE instead." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										[  -z " $ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE "  ]  &&  ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = $AUTOSUGGESTION_HIGHLIGHT_STYLE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  AUTOSUGGESTION_HIGHLIGHT_STYLE
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  -n " $AUTOSUGGESTION_HIGHLIGHT_CURSOR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_zsh_autosuggest_deprecated_warning "AUTOSUGGESTION_HIGHLIGHT_CURSOR is deprecated." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  AUTOSUGGESTION_HIGHLIGHT_CURSOR
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  -n " $AUTOSUGGESTION_ACCEPT_RIGHT_ARROW "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_zsh_autosuggest_deprecated_warning "AUTOSUGGESTION_ACCEPT_RIGHT_ARROW is deprecated. The right arrow now accepts the suggestion by default." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  AUTOSUGGESTION_ACCEPT_RIGHT_ARROW
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_deprecated_start_widget( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:32:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_deprecated_warning "The autosuggest-start widget is deprecated. For more info, see the README at https://github.com/tarruda/zsh-autosuggestions." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									zle -D autosuggest-start
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									eval  " zle-line-init() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										$( echo  $functions [ ${ widgets [zle-line-init]#* : } ]  |  sed -e 's/zle autosuggest-start//g' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} " 
 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								zle -N autosuggest-start _zsh_autosuggest_deprecated_start_widget
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Widget Helpers                                                     # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Bind a single widget to an autosuggest widget, saving a reference to the original widget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_bind_widget( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									local  widget = $1 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									local  autosuggest_action = $2 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									local  prefix = $ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									# Save a reference to the original widget 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									case  $widgets [ $widget ]  in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Already bound 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										user:_zsh_autosuggest_( widget| orig) _*) ; ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# User-defined widget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										user:*) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											zle -N $prefix $widget  ${ widgets [ $widget ]#* : } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											; ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Built-in widget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										builtin ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											eval  " _zsh_autosuggest_orig_ $widget () { zle . $widget  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											zle -N $prefix $widget  _zsh_autosuggest_orig_$widget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											; ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Completion widget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										completion:*) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											eval  " zle -C  $prefix $widget   ${ ${ widgets [ $widget ]#* : } / : /  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											; ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									esac 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Create the bound widget 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									zle -N $widget  _zsh_autosuggest_widget_$autosuggest_action 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Map all configured widgets to the right autosuggest widgets 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_bind_widgets( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									local  widget; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Find every widget we might want to bind and bind it appropriately 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:32:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  widget in ${ ${ (f) " $( builtin  zle -la) " } : #(.*|_*|orig-*|autosuggest-*| $ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX *|zle-line-*|run-help|which-command|beep|set-local-history|yank) } ;  do 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  [  ${ ZSH_AUTOSUGGEST_CLEAR_WIDGETS [(r) $widget ] }  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											_zsh_autosuggest_bind_widget $widget  clear
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										elif  [  ${ ZSH_AUTOSUGGEST_ACCEPT_WIDGETS [(r) $widget ] }  ] ;  then 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											_zsh_autosuggest_bind_widget $widget  accept
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										elif  [  ${ ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS [(r) $widget ] }  ] ;  then 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											_zsh_autosuggest_bind_widget $widget  partial_accept
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										else 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											# Assume any unspecified widget might modify the buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											_zsh_autosuggest_bind_widget $widget  modify
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Given the name of a widget, invoke the original we saved, if it exists 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_invoke_original_widget( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-13 23:46:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									local  original_widget_name = " $ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX $WIDGET " 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  $widgets [ $original_widget_name ]  ] ;  then 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-13 23:46:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										zle $original_widget_name  -- $@ 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Highlighting                                                       # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# If there was a highlight, remove it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_highlight_reset( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  -n " $_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										region_highlight = ( " ${ (@)region_highlight : # $_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# If there's a suggestion, highlight it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_highlight_apply( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  $# POSTDISPLAY -gt 0  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT = " $# BUFFER  $(( $# BUFFER +  $# POSTDISPLAY))   $ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										region_highlight += ( $_ZSH_AUTOSUGGEST_LAST_HIGHLIGHT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  _ZSH_AUTOSUGGEST_LAST_HIGHLIGHT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Autosuggest Widget Implementations                                 # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Clear the suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_clear( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Remove the suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									unset  POSTDISPLAY
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-13 23:46:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_invoke_original_widget $@ 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Modify the buffer and get a new suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_modify( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Original widget modifies the buffer 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-13 23:46:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_invoke_original_widget $@ 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Get a new suggestion if the buffer is not empty after modification 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									local  suggestion
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  $# BUFFER -gt 0  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										suggestion = $( _zsh_autosuggest_suggestion $BUFFER ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Add the suggestion to the POSTDISPLAY 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  -n " $suggestion "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										POSTDISPLAY = ${ suggestion # $BUFFER } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  POSTDISPLAY
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Accept the entire suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_accept( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Only accept if the cursor is at the end of the buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  $CURSOR  -eq $# BUFFER ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Add the suggestion to the buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BUFFER = " $BUFFER $POSTDISPLAY " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Remove the suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										unset  POSTDISPLAY
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Move the cursor to the end of the buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										CURSOR = ${# BUFFER } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-13 23:46:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_invoke_original_widget $@ 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Partially accept the suggestion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_partial_accept( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Save the contents of the buffer so we can restore later if needed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									local  original_buffer = $BUFFER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Temporarily accept the suggestion. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BUFFER = " $BUFFER $POSTDISPLAY " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Original widget moves the cursor 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-13 23:46:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_invoke_original_widget $@ 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# If we've moved past the end of the original buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  [  $CURSOR  -gt $# original_buffer ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Set POSTDISPLAY to text right of the cursor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										POSTDISPLAY = $RBUFFER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Clip the buffer at the cursor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BUFFER = $LBUFFER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										# Restore the original buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BUFFER = $original_buffer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 08:54:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								for  action in clear modify accept partial_accept;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									eval  " _zsh_autosuggest_widget_ $action () {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_zsh_autosuggest_highlight_reset
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_zsh_autosuggest_$action  \$ @
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										_zsh_autosuggest_highlight_apply
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								zle -N autosuggest-accept _zsh_autosuggest_widget_accept
							 
						 
					
						
							
								
									
										
										
										
											2016-02-07 08:58:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								zle -N autosuggest-clear _zsh_autosuggest_widget_clear
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Suggestion                                                         # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Get a suggestion from history that matches a given prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_suggestion( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									setopt localoptions extendedglob
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Escape the prefix (requires EXTENDED_GLOB) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									local  prefix = ${ 1 //(#m)[ \] [()| \\ *?#<>~^]/ \\ $MATCH } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Get all history items (reversed) that match pattern $prefix* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									local  history_matches
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									history_matches = ( ${ history [(R) $prefix *] } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									# Echo the first item that matches 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									echo  ${ history_matches [1] } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 00:29:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Start                                                              # 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#--------------------------------------------------------------------# 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Start the autosuggestion widgets 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-07 14:21:57 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								_zsh_autosuggest_start( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-05 15:14:08 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_check_deprecated_config
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									_zsh_autosuggest_bind_widgets
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-07 14:21:57 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								autoload -Uz add-zsh-hook
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								add-zsh-hook precmd _zsh_autosuggest_start