mirror of
				https://github.com/zsh-users/zsh-syntax-highlighting.git
				synced 2025-10-30 15:56:28 +08:00 
			
		
		
		
	Added copyright boilerplate and fixed indentation
This commit is contained in:
		
							parent
							
								
									22362e02f7
								
							
						
					
					
						commit
						c432451c20
					
				@ -17,10 +17,11 @@ zsh_highlight_files_extract_ls_colors
 | 
			
		||||
 | 
			
		||||
### Configuration
 | 
			
		||||
 | 
			
		||||
Files are colored according to the associative arrays `ZSH_HIGHLIGHT_FILE_TYPES`
 | 
			
		||||
and `ZSH_HIGHLIGHT_FILE_PATTERNS`.  The values of `ZSH_HIGHLIGHT_FILE_TYPES` are
 | 
			
		||||
color specifications as in `ZSH_HIGHLIGHT_STYLES`, and the keys define which
 | 
			
		||||
file types are highlighted according to that style (following `LS_COLORS`):
 | 
			
		||||
Files are colored according to the associative array `ZSH_HIGHLIGHT_FILE_TYPES`
 | 
			
		||||
and the array `ZSH_HIGHLIGHT_FILE_PATTERNS`.  The values of
 | 
			
		||||
`ZSH_HIGHLIGHT_FILE_TYPES` are color specifications as in
 | 
			
		||||
`ZSH_HIGHLIGHT_STYLES`, and the keys define which file types are highlighted
 | 
			
		||||
according to that style (following `LS_COLORS`):
 | 
			
		||||
 | 
			
		||||
* `fi` - ordinary files
 | 
			
		||||
* `di` - directories
 | 
			
		||||
@ -38,12 +39,23 @@ file types are highlighted according to that style (following `LS_COLORS`):
 | 
			
		||||
* `lp` - if set, the path-component of a filename is highlighted using this style
 | 
			
		||||
 | 
			
		||||
If a file would be highlighted `fi`, then it can be highlighted according to the
 | 
			
		||||
filename using `ZSH_HIGHLIGHT_FILE_PATTERNS` instead.  The keys of this
 | 
			
		||||
associative array are arbitrary glob patterns; the values are color
 | 
			
		||||
specifications.  For instance, if have `setopt extended_glob` and you write
 | 
			
		||||
filename using `ZSH_HIGHLIGHT_FILE_PATTERNS` instead.  This array has the form
 | 
			
		||||
`(glob1 style1 glob2 style2 glob3 style3 ...)`, where the globs are arbitrary
 | 
			
		||||
glob patterns, and the styles are color specifications.  For instance, if have
 | 
			
		||||
`setopt extended_glob` and you write
 | 
			
		||||
 | 
			
		||||
```zsh
 | 
			
		||||
ZSH_HIGHLIGHT_FILE_PATTERNS[(#i)*.jpe#g]=red,bold
 | 
			
		||||
ZSH_HIGHLIGHT_FILE_PATTERNS+=('(#i)*.jpe#g' red,bold)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
then the files `foo.jpg` and `bar.jPeG` will be colored red and bold.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Limitations
 | 
			
		||||
 | 
			
		||||
This highlighter makes no attempt to determine if a word is in command position.
 | 
			
		||||
Hence if you run the command `cat foo` and you happen to have a directory named
 | 
			
		||||
`cat` in the current directory, then the highlighter will highlight `cat`
 | 
			
		||||
according to `ZSH_HIGHLIGHT_FILE_TYPES[di]` and not
 | 
			
		||||
`ZSH_HIGHLIGHT_STYLES[command]` (assuming you load the `files` highlighter after
 | 
			
		||||
the `main` one).  Likewise with aliases, reserved words, etc.
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,40 @@
 | 
			
		||||
# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
# Copyright (c) 2020 zsh-syntax-highlighting contributors
 | 
			
		||||
# 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.
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
# vim: ft=zsh sw=2 ts=2 et
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
# Highlighter for zsh-syntax-highlighting that highlights filenames
 | 
			
		||||
 | 
			
		||||
typeset -gA ZSH_HIGHLIGHT_FILE_TYPES ZSH_HIGHLIGHT_FILE_PATTERNS
 | 
			
		||||
typeset -gA ZSH_HIGHLIGHT_FILE_TYPES
 | 
			
		||||
typeset -ga ZSH_HIGHLIGHT_FILE_PATTERNS
 | 
			
		||||
 | 
			
		||||
# Convert an ANSI escape sequence color into zle_highlight format (man 1 zshzle)
 | 
			
		||||
_zsh_highlight_highlighter_files_ansi_to_zle() {
 | 
			
		||||
_zsh_highlight_highlighter_files_ansi_to_zle()
 | 
			
		||||
{
 | 
			
		||||
  local match mbegin mend seq
 | 
			
		||||
  local var=$1; shift
 | 
			
		||||
  for seq in "${(@s.:.)1}"; do
 | 
			
		||||
@ -13,7 +44,8 @@ _zsh_highlight_highlighter_files_ansi_to_zle() {
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_zsh_highlight_highlighter_files_ansi_to_zle1() {
 | 
			
		||||
_zsh_highlight_highlighter_files_ansi_to_zle1()
 | 
			
		||||
{
 | 
			
		||||
  emulate -L zsh
 | 
			
		||||
  setopt local_options extended_glob
 | 
			
		||||
 | 
			
		||||
@ -71,21 +103,23 @@ _zsh_highlight_highlighter_files_ansi_to_zle1() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Extract ZSH_HIGHLIGHT_FILE_TYPES and ZSH_HIGHLIGHT_FILE_PATTERNS from LS_COLORS
 | 
			
		||||
zsh_highlight_files_extract_ls_colors() {
 | 
			
		||||
zsh_highlight_files_extract_ls_colors()
 | 
			
		||||
{
 | 
			
		||||
  local -A ls_colors
 | 
			
		||||
  _zsh_highlight_highlighter_files_ansi_to_zle ls_colors $LS_COLORS
 | 
			
		||||
  for key val in ${(kv)ls_colors}; do
 | 
			
		||||
    case $key in
 | 
			
		||||
      di|fi|ln|pi|so|bd|cd|or|ex|su|sg|ow|tw)
 | 
			
		||||
        ZSH_HIGHLIGHT_FILE_TYPES[$key]=$val ;;
 | 
			
		||||
            *)  ZSH_HIGHLIGHT_FILE_PATTERNS[$key]=$val ;;
 | 
			
		||||
      *)  ZSH_HIGHLIGHT_FILE_PATTERNS+=($key $val) ;;
 | 
			
		||||
    esac
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Perform simple filename expansion without globbing and without generating
 | 
			
		||||
# errors
 | 
			
		||||
_zsh_highlight_highlighter_files_fn_expand() {
 | 
			
		||||
_zsh_highlight_highlighter_files_fn_expand()
 | 
			
		||||
{
 | 
			
		||||
  local fn=$1
 | 
			
		||||
  local match expandable tail
 | 
			
		||||
  local -a mbegin mend
 | 
			
		||||
@ -101,12 +135,14 @@ _zsh_highlight_highlighter_files_fn_expand() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Whether the highlighter should be called or not.
 | 
			
		||||
_zsh_highlight_highlighter_files_predicate() {
 | 
			
		||||
_zsh_highlight_highlighter_files_predicate()
 | 
			
		||||
{
 | 
			
		||||
  _zsh_highlight_buffer_modified
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Syntax highlighting function.
 | 
			
		||||
_zsh_highlight_highlighter_files_paint() {
 | 
			
		||||
_zsh_highlight_highlighter_files_paint()
 | 
			
		||||
{
 | 
			
		||||
  emulate -L zsh
 | 
			
		||||
  setopt localoptions extended_glob
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user