vim 構文で Ruby Sorbet 署名を非強調コメントとして強調表示するにはどうすればよいですか?

概要

通常、Sorbet 署名は通常の Ruby と同様に構文が強調表示されます。

ただし、おそらく代わりにコメントとして強調表示することで、ノイズの多い署名を視覚的に強調しないようにしたいと考えています。

~/.vim/after/syntax/ruby.vim にある次のコードを実行すると、その途中まで進むことができます。

" adapted from: https://github.com/zackhsi/sorbet.vim/blob/master/syntax/ruby.vim
syntax region SigBlock matchgroup=SigBlockDelimiter start="{" end="}" contained transparent
syntax region SigBlock matchgroup=SigBlockDelimiter start="\<do\>" end="\<end\>" contained transparent

" Prevent sorbet elements from being contained by vim-ruby elements.
syntax cluster rubyNotTop add=SigBlock

syntax match Sig "\<sig\>" nextgroup=SigBlock skipwhite

" hi def link SigBlockDelimiter rubyDefine

" Match vim-ruby:
" https://github.com/vim-ruby/vim-ruby/commit/19c19a54583c3e7c07dce18b844ae104695c41d7.
syntax match rubyMagicComment "\c\%<10l#\s*\zs\%(typed\):" contained nextgroup=rubyBoolean skipwhite

" de-emphasize Sorbet sig
highlight default link Sig               Comment
highlight default link SigBlockDelimiter Comment

そのようです:

署名ブロック内のコードをコメントとしても強調表示するにはどうすればよいですか?

参考までに、私は sheerun/vim-polyglot (つまり vim-ruby/vim-ruby) と nanotech/jellybeans.vim を使用しています。また、さらに理想的なのは、色を保持し、VSCode の byesig 拡張機能のように「コントラストを下げるだけ」にすることですが、おそらく多くの新しい色と構文ルールを定義する必要があるでしょうか。

解決策

透明にするとハイライトが継承されますが、それは望ましくありません。 区切り文字を個別に強調表示したくない場合は、matchgroup を削除することもできます。

" https://github.com/zackhsi/sorbet.vim/blob/master/syntax/ruby.vim

syntax region SigBlock start="{" end="}" contained
syntax region SigBlock start="\<do\>" end="\<end\>" contained

syntax cluster rubyNotTop add=SigBlock

syntax match Sig "\<sig\>" nextgroup=SigBlock skipwhite

syntax match rubyMagicComment "\c\%<10l#\s*\zs\%(typed\):" contained nextgroup=rubyBoolean skipwhite

highlight default link Sig      Comment
highlight default link SigBlock Comment