'main': Highlight first command word in named functions defined in the sh syntax when MULTI_FUNC_DEF is set.
Fixes a subset of issue #237.
This commit is contained in:
parent
2fabf7ca64
commit
6f91850a01
@ -186,6 +186,11 @@ _zsh_highlight_highlighter_main_paint()
|
|||||||
else
|
else
|
||||||
integer path_dirs_was_set=0
|
integer path_dirs_was_set=0
|
||||||
fi
|
fi
|
||||||
|
if [[ -o multi_func_def ]]; then
|
||||||
|
integer multi_func_def=1
|
||||||
|
else
|
||||||
|
integer multi_func_def=0
|
||||||
|
fi
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
setopt localoptions extendedglob bareglobqual
|
setopt localoptions extendedglob bareglobqual
|
||||||
|
|
||||||
@ -545,6 +550,13 @@ _zsh_highlight_highlighter_main_paint()
|
|||||||
else
|
else
|
||||||
_zsh_highlight_main__stack_pop 'R' style=reserved-word
|
_zsh_highlight_main__stack_pop 'R' style=reserved-word
|
||||||
fi;;
|
fi;;
|
||||||
|
$'\x28\x29') # possibly a function definition
|
||||||
|
if (( multi_func_def )) || false # TODO: or if the previous word was a command word
|
||||||
|
then
|
||||||
|
next_word+=':start:'
|
||||||
|
fi
|
||||||
|
style=reserved-word
|
||||||
|
;;
|
||||||
$'\x7d') # right brace
|
$'\x7d') # right brace
|
||||||
#
|
#
|
||||||
# Parsing rule: # {
|
# Parsing rule: # {
|
||||||
|
45
highlighters/main/test-data/function-named1.zsh
Normal file
45
highlighters/main/test-data/function-named1.zsh
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# Copyright (c) 2016 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='f() pwd; f() { balanced braces }'
|
||||||
|
|
||||||
|
expected_region_highlight=(
|
||||||
|
'1 1 TBD "issue #223"' # f
|
||||||
|
'2 3 reserved-word' # ()
|
||||||
|
'5 7 builtin' # pwd
|
||||||
|
'8 8 commandseparator' # ;
|
||||||
|
'10 10 TBD "issue #223"' # f
|
||||||
|
'11 12 reserved-word' # ()
|
||||||
|
'14 14 reserved-word' # {
|
||||||
|
'16 23 unknown-token' # balanced
|
||||||
|
'25 30 default' # braces
|
||||||
|
'32 32 reserved-word' # }
|
||||||
|
)
|
40
highlighters/main/test-data/function-named2.zsh
Normal file
40
highlighters/main/test-data/function-named2.zsh
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
# -------------------------------------------------------------------------------------------------
|
||||||
|
# Copyright (c) 2016 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='f g h () pwd'
|
||||||
|
|
||||||
|
expected_region_highlight=(
|
||||||
|
'1 1 TBD "issue #223"' # f
|
||||||
|
'3 3 TBD "issue #223"' # g
|
||||||
|
'5 5 TBD "issue #223"' # h
|
||||||
|
'7 8 reserved-word' # ()
|
||||||
|
'10 12 builtin' # pwd
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user