@@ -215,27 +215,49 @@ unlet s:spell_cluster s:fold_arg
215215SynFold ' string' syn region rubyString matchgroup= rubyStringDelimiter start = " `" end = " `" skip = " \\\\ \| \\ `" contains= @r ubyStringSpecial
216216
217217" Generalized Single Quoted Strings, Symbols, Array of Strings and Array of Symbols {{{1
218- SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %q\z ([~`!@#$%^&*_\- +=|\: ;" ',.?/]\) " end=" \z 1" skip=" \\\\ \| \\ \z 1" contains=rubyBackslashEscape
218+
219+ " Non-bracket punctuation delimiters {{{2
220+ let s: names = { ' ~' : ' Tilde' , ' `' : ' BackQuote' , ' !' : ' Bang' , ' @' : ' At' , ' #' : ' Hash' , ' $' : ' Dollar' , ' %' : ' Percent' , ' ^' : ' Caret' ,
221+ \ ' &' : ' Ampersand' , ' *' : ' Asterix' , ' _' : ' Underscore' , ' -' : ' Dash' , ' +' : ' Plus' , ' =' : ' Equals' , ' |' : ' Bar' ,
222+ \ ' \' : ' Backslash' , ' :' : ' Colon' , ' ;' : ' Semicolon' , ' "' : ' DoubleQuote' , " '" : ' Quote' , ' ,' : ' Comma' , ' .' : ' Period' ,
223+ \ ' ?' : ' QuestionMark' , ' /' : ' ForwardSlash' }
224+
225+ for s: delimiter in keys (s: names )
226+ let s: group = ' ruby' . s: names [s: delimiter ] . ' Escape'
227+
228+ if s: delimiter = ~ ' [\"]'
229+ let s: delimiter = ' \' . s: delimiter
230+ endif
231+
232+ exe ' syn match ' . s: group . ' "\V\\' . s: delimiter . ' " contained display'
233+ exe ' syn cluster rubySingleCharEscape add=' . s: group
234+ exe ' SynFold '' %'' syn region rubyString matchgroup=rubyStringDelimiter start="\V%q' . s: delimiter . ' " end="\V' . s: delimiter . ' " skip="\V\\\\\|\\' . s: delimiter . ' " contains=rubyBackslashEscape,' . s: group
235+ exe ' SynFold '' %'' syn region rubyString matchgroup=rubyStringDelimiter start="\V%w' . s: delimiter . ' " end="\V' . s: delimiter . ' " skip="\V\\\\\|\\' . s: delimiter . ' " contains=rubyBackslashEscape,rubySpaceEscape,' . s: group
236+ exe ' SynFold '' %'' syn region rubySymbol matchgroup=rubySymbolDelimiter start="\V%s' . s: delimiter . ' " end="\V' . s: delimiter . ' " skip="\V\\\\\|\\' . s: delimiter . ' " contains=rubyBackslashEscape,' . s: group
237+ exe ' SynFold '' %'' syn region rubySymbol matchgroup=rubySymbolDelimiter start="\V%i' . s: delimiter . ' " end="\V' . s: delimiter . ' " skip="\V\\\\\|\\' . s: delimiter . ' " contains=rubyBackslashEscape,rubySpaceEscape,' . s: group
238+ exe ' hi def link ' . s: group . ' rubyStringEscape'
239+ endfor
240+
241+ unlet s: delimiter s: group s: names
242+ " }}}2
243+
219244SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %q{" end = " }" skip = " \\\\ \| \\ }" contains= rubyBackslashEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
220245SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %q<" end = " >" skip = " \\\\ \| \\ >" contains= rubyBackslashEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
221246SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %q\[ " end = " \] " skip = " \\\\ \| \\ \] " contains= rubyBackslashEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
222247SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %q(" end = " )" skip = " \\\\ \| \\ )" contains= rubyBackslashEscape,rubyParenthesesEscape,rubyNestedParentheses
223248SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %q\z (\s\) " end = " \z 1" skip = " \\\\ \| \\ \z 1" contains= rubyBackslashEscape,rubySpaceEscape
224249
225- SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %w\z ([~`!@#$%^&*_\- +=|\: ;" ',.?/]\) " end=" \z 1" skip=" \\\\ \| \\ \z 1" contains=rubyBackslashEscape,rubySpaceEscape
226250SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %w{" end = " }" skip = " \\\\ \| \\ }" contains= rubyBackslashEscape,rubySpaceEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
227251SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %w<" end = " >" skip = " \\\\ \| \\ >" contains= rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
228252SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %w\[ " end = " \] " skip = " \\\\ \| \\ \] " contains= rubyBackslashEscape,rubySpaceEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
229253SynFold ' %' syn region rubyString matchgroup= rubyStringDelimiter start = " %w(" end = " )" skip = " \\\\ \| \\ )" contains= rubyBackslashEscape,rubySpaceEscape,rubyParenthesesEscape,rubyNestedParentheses
230254
231- SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %s\z ([~`!@#$%^&*_\- +=|\: ;" ',.?/]\) " end=" \z 1" skip=" \\\\ \| \\ \z 1" contains=rubyBackslashEscape
232255SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %s{" end = " }" skip = " \\\\ \| \\ }" contains= rubyBackslashEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
233256SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %s<" end = " >" skip = " \\\\ \| \\ >" contains= rubyBackslashEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
234257SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %s\[ " end = " \] " skip = " \\\\ \| \\ \] " contains= rubyBackslashEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
235258SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %s(" end = " )" skip = " \\\\ \| \\ )" contains= rubyBackslashEscape,rubyParenthesesEscape,rubyNestedParentheses
236259SynFold ' %' syn region rubyString matchgroup= rubySymbolDelimiter start = " %s\z (\s\) " end = " \z 1" skip = " \\\\ \| \\ \z 1" contains= rubyBackslashEscape,rubySpaceEscape
237260
238- SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %i\z ([~`!@#$%^&*_\- +=|\: ;" ',.?/]\) " end=" \z 1" skip=" \\\\ \| \\ \z 1" contains=rubyBackslashEscape,rubySpaceEscape
239261SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %i{" end = " }" skip = " \\\\ \| \\ }" contains= rubyBackslashEscape,rubySpaceEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
240262SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %i<" end = " >" skip = " \\\\ \| \\ >" contains= rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
241263SynFold ' %' syn region rubySymbol matchgroup= rubySymbolDelimiter start = " %i\[ " end = " \] " skip = " \\\\ \| \\ \] " contains= rubyBackslashEscape,rubySpaceEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
0 commit comments