2011-01-10 10:11:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2015-09-24 16:46:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Copyright (c) 2010-2015 zsh-syntax-highlighting contributors  
						 
					
						
							
								
									
										
										
										
											2011-01-10 10:11:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# All rights reserved.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Redistribution and use in source and binary forms, with or without modification, are permitted  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# provided that the following conditions are met:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  * Redistributions of source code must retain the above copyright notice, this list of conditions  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#    and the following disclaimer.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  * Redistributions in binary form must reproduce the above copyright notice, this list of  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#    conditions and the following disclaimer in the documentation and/or other materials provided  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#    with the distribution.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#    may be used to endorse or promote products derived from this software without specific prior  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#    written permission.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2011-01-05 10:54:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# vim: ft=zsh sw=2 ts=2 et  
						 
					
						
							
								
									
										
										
										
											2011-01-10 10:11:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2011-01-05 10:54:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-25 18:33:08 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-01 16:26:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  [ [  -o function_argzero ] ] ;  then  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # $0 is reliable 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-21 06:55:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ZSH_HIGHLIGHT_VERSION = $( <" $0 :A:h " /.version) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ZSH_HIGHLIGHT_REVISION = $( <" $0 :A:h " /.revision-hash) 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 03:07:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  [ [  $ZSH_HIGHLIGHT_REVISION  = =  \$ Format:* ] ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # When running from a source tree without 'make install', $ZSH_HIGHLIGHT_REVISION 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # would be set to '$Format:%H$' literally.  That's an invalid value, and obtaining 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # the valid value (via `git rev-parse HEAD`, as Makefile does) might be costly, so: 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset  ZSH_HIGHLIGHT_REVISION
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-01 16:26:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								else  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # $0 is unreliable, so the call to _zsh_highlight_load_highlighters will fail. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # TODO: If 'zmodload zsh/parameter' is available, ${funcsourcetrace[1]%:*} might serve as a substitute? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # TODO: also check POSIX_ARGZERO, but not it's not available in older zsh 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "zsh-syntax-highlighting: error: not compatible with FUNCTION_ARGZERO"  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi  
						 
					
						
							
								
									
										
										
										
											2015-10-01 16:18:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2011-03-02 00:34:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Core highlighting update system  
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2010-12-27 12:57:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Array declaring active highlighters names.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typeset  -ga ZSH_HIGHLIGHT_HIGHLIGHTERS 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Update ZLE buffer syntax highlighting.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Invokes each highlighter that needs updating.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# This function is supposed to be called whenever the ZLE state changes.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Store the previous command return code to restore it whatever happens. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  ret = $? 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-24 17:57:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  setopt localoptions warncreateglobal
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 00:21:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  local  REPLY # don't leak $REPLY into global scope 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-05 21:44:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-07-25 14:50:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Do not highlight if there are more than 300 chars in the buffer. It's most 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # likely a pasted command or a huge list of files in that case.. 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-24 14:08:58 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  [ [  -n ${ ZSH_HIGHLIGHT_MAXLENGTH :- }  ] ]  &&  [ [  $# BUFFER -gt $ZSH_HIGHLIGHT_MAXLENGTH  ] ]  &&  return  $ret 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-25 14:50:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Do not highlight if there are pending inputs (copy/paste). 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ [  $PENDING  -gt 0  ] ]  &&  return  $ret 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Reset region highlight to build it from scratch 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-25 12:41:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  typeset  -ga region_highlight
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  region_highlight = ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    local  cache_place
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    local  -a region_highlight_copy
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Select which highlighters in ZSH_HIGHLIGHT_HIGHLIGHTERS need to be invoked. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    local  highlighter;  for  highlighter in $ZSH_HIGHLIGHT_HIGHLIGHTERS ;  do 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      # eval cache place for current highlighter and prepare it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cache_place = " _zsh_highlight_ ${ highlighter } _highlighter_cache " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      typeset  -ga ${ cache_place } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      # If highlighter needs to be invoked 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  " _zsh_highlight_ ${ highlighter } _highlighter_predicate " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # save a copy, and cleanup region_highlight 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        region_highlight_copy = ( " ${ region_highlight [@] } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        region_highlight = ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Execute highlighter and save result 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          " _zsh_highlight_ ${ highlighter } _highlighter " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  always { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          eval  " ${ cache_place } =(\"\${region_highlight[@]}\") " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Restore saved region_highlight 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        region_highlight = ( " ${ region_highlight_copy [@] } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-12 16:10:04 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:52:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      # Use value form cache if any cached 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      eval  " region_highlight+=(\"\${ ${ cache_place } [@]}\") " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    done 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-08 20:22:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Re-apply zle_highlight settings 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( (  REGION_ACTIVE ) )  ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # zle_highlight[region] defaults to 'standout' if unspecified 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        local  region = " ${ ${ zle_highlight [(r)region : *]#region : } :- standout } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        integer start end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( (  MARK > CURSOR ) )  ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          start = $CURSOR  end = $MARK 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          start = $MARK  end = $CURSOR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        region_highlight += ( " $start   $end   $region " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-08 20:22:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # YANK_ACTIVE is only available in zsh-5.1.1 and newer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( (  $+YANK_ACTIVE ) )  &&  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( (  YANK_ACTIVE ) )  ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # zle_highlight[paste] defaults to 'standout' if unspecified 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        local  paste = " ${ ${ zle_highlight [(r)paste : *]#paste : } :- standout } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        integer start end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( (  YANK_END > YANK_START ) )  ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          start = $YANK_START  end = $YANK_END 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          start = $YANK_END  end = $YANK_START 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        region_highlight += ( " $start   $end   $paste " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-18 12:19:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  $ret 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-08 20:22:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:58:31 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  always { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-25 17:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    typeset  -g _ZSH_HIGHLIGHT_PRIOR_BUFFER = " $BUFFER " 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-24 17:57:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    typeset  -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR = $CURSOR 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:58:31 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# API/utility functions for highlighters  
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Array used by highlighters to declare user overridable styles.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typeset  -gA ZSH_HIGHLIGHT_STYLES 
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Whether the command line buffer has been modified or not.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Returns 0 if the buffer has changed since _zsh_highlight was last called.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_buffer_modified( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2012-04-07 11:48:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  [ [  " ${ _ZSH_HIGHLIGHT_PRIOR_BUFFER :- } "  !=  " $BUFFER "  ] ] 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Whether the cursor has moved or not.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Returns 0 if the cursor has moved since _zsh_highlight was last called.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_cursor_moved( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2011-08-24 14:08:58 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  [ [  -n $CURSOR  ] ]  &&  [ [  -n ${ _ZSH_HIGHLIGHT_PRIOR_CURSOR - }  ] ]  &&  ( ( $_ZSH_HIGHLIGHT_PRIOR_CURSOR  !=  $CURSOR ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-16 13:54:59 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-01-05 13:48:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Setup functions  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-26 08:09:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Helper for _zsh_highlight_bind_widgets  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# $1 is name of widget to call  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_call_widget( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  builtin  zle " $@ "  &&  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _zsh_highlight
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Rebind all ZLE widgets to make them invoke _zsh_highlights.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_bind_widgets( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Load ZSH module zsh/zleparameter, needed to override user defined widgets. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  zmodload zsh/zleparameter 2>/dev/null ||  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  'zsh-syntax-highlighting: failed loading zsh/zleparameter.'  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Override ZLE widgets to make them invoke _zsh_highlight. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  cur_widget
							 
						 
					
						
							
								
									
										
										
										
											2015-10-19 13:38:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  for  cur_widget in ${ ${ (f) " $( builtin  zle -la) " } : #(.*|_*|orig-*|run-help|which-command|beep|set-local-history|yank) } ;  do 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    case  $widgets [ $cur_widget ]  in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Already rebound event: do nothing. 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-02 20:25:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      user:$cur_widget | user:_zsh_highlight_widget_*) ; ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # User defined widget: override and rebind old one with prefix "orig-". 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      user:*)  eval  " zle -N orig- $cur_widget   ${ widgets [ $cur_widget ]#* : } ; \
 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-26 08:20:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    _zsh_highlight_widget_$cur_widget ( )  {  _zsh_highlight_call_widget orig-$cur_widget  \" \$ @\"  } ;  \
 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    zle -N $cur_widget  _zsh_highlight_widget_$cur_widget " ;;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Completion widget: override and rebind old one with prefix "orig-". 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      completion:*)  eval  " zle -C orig- $cur_widget   ${ ${ widgets [ $cur_widget ]#* : } / : /  } ; \
 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-26 08:20:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                          _zsh_highlight_widget_$cur_widget ( )  {  _zsh_highlight_call_widget orig-$cur_widget  \" \$ @\"  } ;  \
 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                          zle -N $cur_widget  _zsh_highlight_widget_$cur_widget " ;;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Builtin widget: override and make it call the builtin ".widget". 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-26 08:20:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      builtin )  eval  " _zsh_highlight_widget_ $cur_widget () { _zsh_highlight_call_widget . $cur_widget  \"\$@\" }; \
 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                     zle -N $cur_widget  _zsh_highlight_widget_$cur_widget " ;;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Default: unhandled case. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *)  echo  " zsh-syntax-highlighting: unhandled ZLE widget ' $cur_widget ' "  >& 2  ; ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    esac 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Load highlighters from directory.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Arguments:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   1) Path to the highlighters directory.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_load_highlighters( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Check the directory exists. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ [  -d " $1 "  ] ]  ||  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " zsh-syntax-highlighting: highlighters directory ' $1 ' not found. "  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Load highlighters from highlighters directory and check they define required functions. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  highlighter highlighter_dir
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  highlighter_dir ( $1 /*/) ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    highlighter = " ${ highlighter_dir : t } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ [  -f " $highlighter_dir / ${ highlighter } -highlighter.zsh "  ] ]  &&  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      . " $highlighter_dir / ${ highlighter } -highlighter.zsh " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      type  " _zsh_highlight_ ${ highlighter } _highlighter "  & > /dev/null && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      type  " _zsh_highlight_ ${ highlighter } _highlighter_predicate "  & > /dev/null ||  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  " zsh-syntax-highlighting: ' ${ highlighter } ' highlighter should define both required functions '_zsh_highlight_ ${ highlighter } _highlighter' and '_zsh_highlight_ ${ highlighter } _highlighter_predicate' in ' ${ highlighter_dir } / ${ highlighter } -highlighter.zsh'. "  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Setup  
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# -------------------------------------------------------------------------------------------------  
						 
					
						
							
								
									
										
										
										
											2010-12-30 08:48:06 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Try binding widgets.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_bind_widgets ||  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  'zsh-syntax-highlighting: failed binding ZLE widgets, exiting.'  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-02 00:34:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Resolve highlighters directory location.  
						 
					
						
							
								
									
										
										
										
											2013-10-09 12:02:34 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								_zsh_highlight_load_highlighters " ${ ZSH_HIGHLIGHT_HIGHLIGHTERS_DIR :- ${ ${ 0 : A } : h } /highlighters } "  ||  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-31 17:59:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  'zsh-syntax-highlighting: failed loading highlighters, exiting.'  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  1 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-07 21:35:43 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-02-17 23:39:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-09-27 16:08:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Reset scratch variables when commandline is done.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_zsh_highlight_preexec_hook( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2015-09-26 16:27:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  typeset  -g _ZSH_HIGHLIGHT_PRIOR_BUFFER = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typeset  -gi _ZSH_HIGHLIGHT_PRIOR_CURSOR = 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-27 16:08:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2011-09-28 16:35:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								autoload -U add-zsh-hook
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null ||  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  'zsh-syntax-highlighting: failed loading add-zsh-hook.'  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-27 16:08:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-12 22:57:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Initialize the array of active highlighters if needed.  
						 
					
						
							
								
									
										
										
										
											2011-08-03 09:40:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[ [  $# ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0  ] ]  &&  ZSH_HIGHLIGHT_HIGHLIGHTERS = ( main)  ||  true