Use stricter regex syntax

boost regex tolerates non-escaped special characters, and escaped
non-special characters. Standardize on stricter syntax, where
special characters must be escaped, and non-special characters must
not.
This commit is contained in:
Maxime Coste 2017-09-30 21:39:57 +08:00
parent 78530b82be
commit bf6e5daa08
11 changed files with 18 additions and 18 deletions

View File

@ -23,7 +23,7 @@ hook -group etc-resolv-conf-highlight global WinSetOption filetype=(?!etc-resolv
## /etc/hosts ## /etc/hosts
add-highlighter -group / group etc-hosts add-highlighter -group / group etc-hosts
add-highlighter -group /etc-hosts regex ^(.+?)[\s\t]+?(.*?)$ 1:type 2:attribute add-highlighter -group /etc-hosts regex ^(.+?)[\s\t]+?(.*?)$ 1:type 2:attribute
add-highlighter -group /etc-hosts regex \#.*?$ 0:comment add-highlighter -group /etc-hosts regex '#.*?$' 0:comment
hook -group etc-hosts-highlight global WinSetOption filetype=etc-hosts %{ add-highlighter ref etc-hosts } hook -group etc-hosts-highlight global WinSetOption filetype=etc-hosts %{ add-highlighter ref etc-hosts }
hook -group etc-hosts-highlight global WinSetOption filetype=(?!etc-hosts).* %{ remove-highlighter etc-hosts } hook -group etc-hosts-highlight global WinSetOption filetype=(?!etc-hosts).* %{ remove-highlighter etc-hosts }
@ -31,7 +31,7 @@ hook -group etc-hosts-highlight global WinSetOption filetype=(?!etc-hosts).* %{
## /etc/fstab ## /etc/fstab
add-highlighter -group / group etc-fstab add-highlighter -group / group etc-fstab
add-highlighter -group /etc-fstab regex ^(\S{1,})\s+?(\S{1,})\s+?(\S{1,})\s+?(\S{1,})\s+?(\S{1,})\s+?(\S{1,})(?:\s+)?$ 1:keyword 2:value 3:type 4:string 5:attribute 6:attribute add-highlighter -group /etc-fstab regex ^(\S{1,})\s+?(\S{1,})\s+?(\S{1,})\s+?(\S{1,})\s+?(\S{1,})\s+?(\S{1,})(?:\s+)?$ 1:keyword 2:value 3:type 4:string 5:attribute 6:attribute
add-highlighter -group /etc-fstab regex \#.*?$ 0:comment add-highlighter -group /etc-fstab regex '#.*?$' 0:comment
hook -group etc-fstab-highlight global WinSetOption filetype=etc-fstab %{ add-highlighter ref etc-fstab } hook -group etc-fstab-highlight global WinSetOption filetype=etc-fstab %{ add-highlighter ref etc-fstab }
hook -group etc-fstab-highlight global WinSetOption filetype=(?!etc-fstab).* %{ remove-highlighter etc-fstab } hook -group etc-fstab-highlight global WinSetOption filetype=(?!etc-fstab).* %{ remove-highlighter etc-fstab }

View File

@ -14,7 +14,7 @@ hook global BufCreate .*[.](hs) %{
add-highlighter -group / regions -default code haskell \ add-highlighter -group / regions -default code haskell \
string '(?<!\'\\)(?<!\')"' (?<!\\)(\\\\)*" '' \ string '(?<!\'\\)(?<!\')"' (?<!\\)(\\\\)*" '' \
macro ^\h*?\K# (?<!\\)\n '' \ macro ^\h*?\K# (?<!\\)\n '' \
pragma \{-# \#-\} \{- \ pragma \{-# '#-\}' \{- \
comment \{- -\} \{- \ comment \{- -\} \{- \
comment --(?![!#$%&*+./<>?@\\\^|~=]) $ '' comment --(?![!#$%&*+./<>?@\\\^|~=]) $ ''

View File

@ -3,7 +3,7 @@ hook global BufCreate .*\.(repo|service|target|socket|ini|cfg) %{
} }
add-highlighter -group / regions -default code ini \ add-highlighter -group / regions -default code ini \
comment (^|\h)\K[\#\;] $ '' comment '(^|\h)\K[#;]' $ ''
add-highlighter -group /ini/code regex "^\h*\[[^\]]*\]" 0:title add-highlighter -group /ini/code regex "^\h*\[[^\]]*\]" 0:title
add-highlighter -group /ini/code regex "^\h*([^\[][^=\n]*=)([^\n]*)" 1:variable 2:value add-highlighter -group /ini/code regex "^\h*([^\[][^=\n]*=)([^\n]*)" 1:variable 2:value

View File

@ -25,7 +25,7 @@ add-highlighter -group /javascript/single_string fill string
add-highlighter -group /javascript/regex fill meta add-highlighter -group /javascript/regex fill meta
add-highlighter -group /javascript/comment fill comment add-highlighter -group /javascript/comment fill comment
add-highlighter -group /javascript/literal fill string add-highlighter -group /javascript/literal fill string
add-highlighter -group /javascript/literal regex \${.*?} 0:value add-highlighter -group /javascript/literal regex \$\{.*?\} 0:value
add-highlighter -group /javascript/code regex \$\w* 0:variable add-highlighter -group /javascript/code regex \$\w* 0:variable
add-highlighter -group /javascript/code regex \b(document|false|null|parent|self|this|true|undefined|window)\b 0:value add-highlighter -group /javascript/code regex \b(document|false|null|parent|self|this|true|undefined|window)\b 0:value

View File

@ -15,7 +15,7 @@ add-highlighter -group / regions -default code lua \
string '"' (?<!\\)(\\\\)*" '' \ string '"' (?<!\\)(\\\\)*" '' \
string "'" (?<!\\)(\\\\)*' '' \ string "'" (?<!\\)(\\\\)*' '' \
comment '--' '$' '' \ comment '--' '$' '' \
comment '\Q--[[' ']]' '' \ comment '--\[\[' '\]\]' '' \
add-highlighter -group /lua/string fill string add-highlighter -group /lua/string fill string

View File

@ -132,7 +132,7 @@ def -hidden ruby-indent-on-new-line %{
def -hidden ruby-insert-on-new-line %{ def -hidden ruby-insert-on-new-line %{
eval -no-hooks -draft -itersel %{ eval -no-hooks -draft -itersel %{
# copy _#_ comment prefix and following white spaces # copy _#_ comment prefix and following white spaces
try %{ exec -draft k <a-x> s ^ \h * \K \# \h * <ret> y gh j P } try %{ exec -draft k <a-x> s '^\h*\K#\h*' <ret> y gh j P }
# wisely add end structure # wisely add end structure
eval -save-regs x %{ eval -save-regs x %{
try %{ exec -draft k <a-x> s ^ \h + <ret> \" x y } catch %{ reg x '' } try %{ exec -draft k <a-x> s ^ \h + <ret> \" x y } catch %{ reg x '' }

View File

@ -12,17 +12,17 @@ hook global BufCreate (.*/)?(kakrc|.*.kak) %{
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
add-highlighter -group / regions -default code kakrc \ add-highlighter -group / regions -default code kakrc \
comment (^|\h)\K\# $ '' \ comment (^|\h)\K# $ '' \
double_string %{(^|\h)\K"} %{(?<!\\)(\\\\)*"} '' \ double_string %{(^|\h)\K"} %{(?<!\\)(\\\\)*"} '' \
single_string %{(^|\h)\K'} %{(?<!\\)(\\\\)*'} '' \ single_string %{(^|\h)\K'} %{(?<!\\)(\\\\)*'} '' \
shell '(^|\h)\K%sh\{' '\}' '\{' \ shell '(^|\h)\K%sh\{' '\}' '\{' \
shell '(^|\h)\K%sh\(' '\)' '\(' \ shell '(^|\h)\K%sh\(' '\)' '\(' \
shell '(^|\h)\K%sh\[' '\]' '\[' \ shell '(^|\h)\K%sh\[' '\]' '\[' \
shell '(^|\h)\K%sh\<' '\>' '\<' \ shell '(^|\h)\K%sh<' '>' '<' \
shell '(^|\h)\K-shell-(completion|candidates)\h+%\{' '\}' '\{' \ shell '(^|\h)\K-shell-(completion|candidates)\h+%\{' '\}' '\{' \
shell '(^|\h)\K-shell-(completion|candidates)\h+%\(' '\)' '\(' \ shell '(^|\h)\K-shell-(completion|candidates)\h+%\(' '\)' '\(' \
shell '(^|\h)\K-shell-(completion|candidates)\h+%\[' '\]' '\[' \ shell '(^|\h)\K-shell-(completion|candidates)\h+%\[' '\]' '\[' \
shell '(^|\h)\K-shell-(completion|candidates)\h+%\<' '\>' '\<' shell '(^|\h)\K-shell-(completion|candidates)\h+%<' '>' '<'
%sh{ %sh{
# Grammar # Grammar

View File

@ -56,7 +56,7 @@ def -hidden coffee-filter-around-selections %{
def -hidden coffee-indent-on-new-line %{ def -hidden coffee-indent-on-new-line %{
eval -draft -itersel %{ eval -draft -itersel %{
# copy '#' comment prefix and following white spaces # copy '#' comment prefix and following white spaces
try %{ exec -draft k <a-x> s ^ \h * \K \# \h * <ret> y gh j P } try %{ exec -draft k <a-x> s '^\h*\K#\h*' <ret> y gh j P }
# preserve previous line indent # preserve previous line indent
try %{ exec -draft \; K <a-&> } try %{ exec -draft \; K <a-&> }
# filter previous line # filter previous line

View File

@ -3,7 +3,7 @@ hook global BufCreate .*\.ks %{
} }
add-highlighter -group / regions -default code kickstart \ add-highlighter -group / regions -default code kickstart \
comment (^|\h)\K\# $ '' \ comment '(^|\h)\K#' $ '' \
double_string '"' (?<!\\)(\\\\)*" '' \ double_string '"' (?<!\\)(\\\\)*" '' \
single_string "'" (?<!\\)(\\\\)*' '' \ single_string "'" (?<!\\)(\\\\)*' '' \
packages '^\h*\K%packages\b' '^\h*\K%end\b' '' \ packages '^\h*\K%packages\b' '^\h*\K%end\b' '' \

View File

@ -18,7 +18,7 @@ add-highlighter -group /latex/comment fill comment
# Scopes, starting with a backslash # Scopes, starting with a backslash
add-highlighter -group /latex/content regex '\\(?!_)\w+\b' 0:keyword add-highlighter -group /latex/content regex '\\(?!_)\w+\b' 0:keyword
# Options passed to scopes, between brackets # Options passed to scopes, between brackets
add-highlighter -group /latex/content regex '\\(?!_)\w+\b\[([^]]+)\]' 1:value add-highlighter -group /latex/content regex '\\(?!_)\w+\b\[([^\]]+)\]' 1:value
# Content between dollar signs/pairs # Content between dollar signs/pairs
add-highlighter -group /latex/content regex '(\$(\\\$|[^$])+\$)|(\$\$(\\\$|[^$])+\$\$)' 0:magenta add-highlighter -group /latex/content regex '(\$(\\\$|[^$])+\$)|(\$\$(\\\$|[^$])+\$\$)' 0:magenta
# Emphasized text # Emphasized text

View File

@ -17,7 +17,7 @@ hook global BufCreate .*[.](pug|jade) %{
add-highlighter -group / regions -default code pug \ add-highlighter -group / regions -default code pug \
text ^\h*\|\s $ '' \ text ^\h*\|\s $ '' \
text ^\h*([A-Za-z][A-Za-z0-9_-]*)?(\#[A-Za-z][A-Za-z0-9_-]*)?((?:\.[A-Za-z][A-Za-z0-9_-]*)*)?(?<=\S)\h+\K.* $ '' \ text '^\h*([A-Za-z][A-Za-z0-9_-]*)?(#[A-Za-z][A-Za-z0-9_-]*)?((?:\.[A-Za-z][A-Za-z0-9_-]*)*)?(?<=\S)\h+\K.*' $ '' \
javascript ^\h*[-=!] $ '' \ javascript ^\h*[-=!] $ '' \
double_string '"' (?:(?<!\\)(\\\\)*"|$) '' \ double_string '"' (?:(?<!\\)(\\\\)*"|$) '' \
single_string "'" (?:(?<!\\)(\\\\)*'|$) '' \ single_string "'" (?:(?<!\\)(\\\\)*'|$) '' \
@ -38,7 +38,7 @@ add-highlighter -group /pug/puglang regex \b(\block|extends|include|a
add-highlighter -group /pug/attribute regex [()=] 0:operator add-highlighter -group /pug/attribute regex [()=] 0:operator
add-highlighter -group /pug/text regex \h*(\|) 1:meta add-highlighter -group /pug/text regex \h*(\|) 1:meta
add-highlighter -group /pug/code regex ^\h*([A-Za-z][A-Za-z0-9_-]*) 1:type add-highlighter -group /pug/code regex ^\h*([A-Za-z][A-Za-z0-9_-]*) 1:type
add-highlighter -group /pug/code regex (\#[A-Za-z][A-Za-z0-9_-]*) 1:variable add-highlighter -group /pug/code regex '(#[A-Za-z][A-Za-z0-9_-]*)' 1:variable
add-highlighter -group /pug/code regex ((?:\.[A-Za-z][A-Za-z0-9_-]*)*) 1:value add-highlighter -group /pug/code regex ((?:\.[A-Za-z][A-Za-z0-9_-]*)*) 1:value
# Commands # Commands