'main': Highlight mismatched 'if'/'fi'.
Also 'then'/'elif'/'else'.
This commit is contained in:
		
							parent
							
								
									be083d7f37
								
							
						
					
					
						commit
						73cb832702
					
				|  | @ -241,6 +241,8 @@ _zsh_highlight_highlighter_main_paint() | |||
|   # "Y" for curly | ||||
|   # "D" for do/done | ||||
|   # "$" for 'end' (matches 'foreach' always; also used with cshjunkiequotes in repeat/while) | ||||
|   # "?" for 'if'/'fi'; also checked by 'elif'/'else' | ||||
|   # ":" for 'then' | ||||
|   local braces_stack | ||||
| 
 | ||||
|   if (( path_dirs_was_set )); then | ||||
|  | @ -509,6 +511,29 @@ _zsh_highlight_highlighter_main_paint() | |||
|                           ('done') | ||||
|                             _zsh_highlight_main__stack_pop 'D' style=reserved-word | ||||
|                             ;; | ||||
|                           ('if') | ||||
|                             braces_stack=':?'"$braces_stack" | ||||
|                             ;; | ||||
|                           ('then') | ||||
|                             _zsh_highlight_main__stack_pop ':' style=reserved-word | ||||
|                             ;; | ||||
|                           ('elif') | ||||
|                             if [[ ${braces_stack[1]} == '?' ]]; then | ||||
|                               braces_stack=':'"$braces_stack" | ||||
|                             else | ||||
|                               style=unknown-token | ||||
|                             fi | ||||
|                             ;; | ||||
|                           ('else') | ||||
|                             if [[ ${braces_stack[1]} == '?' ]]; then | ||||
|                               : | ||||
|                             else | ||||
|                               style=unknown-token | ||||
|                             fi | ||||
|                             ;; | ||||
|                           ('fi') | ||||
|                             _zsh_highlight_main__stack_pop '?' "" | ||||
|                             ;; | ||||
|                           ('foreach') | ||||
|                             braces_stack='$'"$braces_stack" | ||||
|                             ;; | ||||
|  |  | |||
|  | @ -0,0 +1,42 @@ | |||
| #!/usr/bin/env zsh | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # Copyright (c) 2017 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. | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||
| # vim: ft=zsh sw=2 ts=2 et | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| 
 | ||||
| BUFFER='elif true; then echo two; fi' | ||||
| 
 | ||||
| expected_region_highlight=( | ||||
|   '1 4 unknown-token' # elif | ||||
|   '6 9 builtin' # true | ||||
|   '10 10 commandseparator' # ; | ||||
|   '12 15 unknown-token' # then | ||||
|   '17 20 builtin' # echo | ||||
|   '22 24 default' # two | ||||
|   '25 25 commandseparator' # ; | ||||
|   '27 28 unknown-token' # fi | ||||
| ) | ||||
|  | @ -0,0 +1,53 @@ | |||
| #!/usr/bin/env zsh | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # Copyright (c) 2017 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. | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||
| # vim: ft=zsh sw=2 ts=2 et | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| 
 | ||||
| BUFFER='if false; then echo one; elif true; then echo two; else echo three; fi' | ||||
| 
 | ||||
| expected_region_highlight=( | ||||
|   '1 2 reserved-word' # if | ||||
|   '4 8 builtin' # false | ||||
|   '9 9 commandseparator' # ; | ||||
|   '11 14 reserved-word' # then | ||||
|   '16 19 builtin' # echo | ||||
|   '21 23 default' # one | ||||
|   '24 24 commandseparator' # ; | ||||
|   '26 29 reserved-word' # elif | ||||
|   '31 34 builtin' # true | ||||
|   '35 35 commandseparator' # ; | ||||
|   '37 40 reserved-word' # then | ||||
|   '42 45 builtin' # echo | ||||
|   '47 49 default' # two | ||||
|   '50 50 commandseparator' # ; | ||||
|   '52 55 reserved-word' # else | ||||
|   '57 60 builtin' # echo | ||||
|   '62 66 default' # three | ||||
|   '67 67 commandseparator' # ; | ||||
|   '69 70 reserved-word' # fi | ||||
| ) | ||||
|  | @ -0,0 +1,42 @@ | |||
| #!/usr/bin/env zsh | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # Copyright (c) 2017 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. | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| # -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*- | ||||
| # vim: ft=zsh sw=2 ts=2 et | ||||
| # ------------------------------------------------------------------------------------------------- | ||||
| 
 | ||||
| BUFFER='if false; then echo one; fi' | ||||
| 
 | ||||
| expected_region_highlight=( | ||||
|   '1 2 reserved-word' # if | ||||
|   '4 8 builtin' # false | ||||
|   '9 9 commandseparator' # ; | ||||
|   '11 14 reserved-word' # then | ||||
|   '16 19 builtin' # echo | ||||
|   '21 23 default' # one | ||||
|   '24 24 commandseparator' # ; | ||||
|   '26 27 reserved-word' # fi | ||||
| ) | ||||
		Loading…
	
		Reference in New Issue