通常、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