Skip to content

Commit 74217b2

Browse files
committed
Clean up the ruby_operators rat's nest
Adds support for ., &., =, ^=, <<=, >>= and ?: and removes support for ->. There should now be sufficient granularity to keep most people happy. Ternary operator highlighting currently fails for horrifically formatted code. Fixes #155.
1 parent 3760d3f commit 74217b2

1 file changed

Lines changed: 25 additions & 3 deletions

File tree

syntax/ruby.vim

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,19 @@ endif
8080

8181
" Operators {{{1
8282
if exists("ruby_operators")
83-
syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::"
84-
syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!="
85-
syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
83+
syn match rubyDotOperator "\.\|&\." containedin=rubyKeywordAsMethod
84+
syn match rubyTernaryOperator "[[:alnum:]]\@1<!?\|:"
85+
syn match rubyArithmeticOperator "\*\*\|[*/%+]\|->\@!"
86+
syn match rubyComparisonOperator "<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<<\@!\|>=\|[-=]\@1<!>"
87+
syn match rubyBitwiseOperator "[~^|]\|&\.\@!\|\%(class\s*\)\@<!<<\|>>"
88+
syn match rubyBooleanOperator "[[:alnum:]]\@1<!!\|&&\|||"
89+
syn match rubyRangeOperator "\.\.\.\="
90+
syn match rubyAssignmentOperator "=>\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^="
91+
syn match rubyEqualityOperator "===\|==\|!=\|!\~\|=\~"
92+
syn match rubyScopeOperator "::"
93+
syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
94+
95+
syn cluster rubyOperator contains=ruby.*Operator
8696
endif
8797

8898
" Expression Substitution and Backslash Notation {{{1
@@ -466,7 +476,19 @@ hi def link rubyPredefinedConstant rubyPredefinedIdentifier
466476
hi def link rubyPredefinedVariable rubyPredefinedIdentifier
467477
hi def link rubySymbol Constant
468478
hi def link rubyKeyword Keyword
479+
469480
hi def link rubyOperator Operator
481+
hi def link rubyDotOperator Operator
482+
hi def link rubyTernaryOperator Operator
483+
hi def link rubyArithmeticOperator Operator
484+
hi def link rubyComparisonOperator Operator
485+
hi def link rubyBitwiseOperator Operator
486+
hi def link rubyBooleanOperator Operator
487+
hi def link rubyRangeOperator Operator
488+
hi def link rubyAssignmentOperator Operator
489+
hi def link rubyEqualityOperator Operator
490+
hi def link rubyScopeOperator Operator
491+
470492
hi def link rubyBeginEnd Statement
471493
hi def link rubyEval Statement
472494
hi def link rubyPseudoVariable Constant

0 commit comments

Comments
 (0)