Как синтаксис 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

Вот так:

Как мне получить код внутри блока подписи, который также выделен знаком Comment?

Для справки я использую sheerun/vim-polyglot (т. е. vim-ruby/vim-ruby) и nanotech/jellybeans.vim. Кроме того, еще более идеальным было бы сохранить цвета, но только «уменьшить контраст», а-ля расширение VSCode byesig, но это, вероятно, потребует определения множества новых цветов и правил синтаксиса?

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
2
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

прозрачный вызывает передачу мелирования по наследству, вы этого не хотите. Вы также можете удалить группу совпадений, так как вы не хотите выделять разделители отдельно:

" 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

спасибо и за ссылки и пояснения!

Kache 16.04.2024 20:05

Другие вопросы по теме