Выделение строк документации Python в качестве комментариев (выделение синтаксиса vim)

Можно ли изменить python.vim (и соответствующий файл colorscheme) таким образом, чтобы строки с тройными кавычками прямо под операторами class и def (aka docstrings) были выделены как комментарии во время выделения синтаксиса python под vim?

class URLopener:
  """Class to open URLs.
  This is a class rather than just a subroutine because we may need
  more than one set of global protocol-specific options.
  Note -- this is a base class for those who don't want the
  automatic handling of errors type 302 (relocated) and 401
  (authorization needed)."""

def addheader(self, *args):
  """Add a header to be used by the HTTP interface only
  e.g. u.addheader('Accept', 'sound/basic')"""

# sample comment

3 ответа

Решение

Вы можете добавить следующую строку:

syn region Comment start=/"""/ end=/"""/

в ваш ~/.vim/after/syntax/python.vim. Вы можете создать этот файл, если он не существует.

Следующее работало для меня:

syn region pythonDocstring  start=+^\s*[uU]\?[rR]\?"""+ end=+"""+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
syn region pythonDocstring  start=+^\s*[uU]\?[rR]\?'''+ end=+'''+ keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError

Взято из модифицированного python.vim отсюда.

PEP 257 предписывает использовать "" "тройные двойные кавычки" "" для строк документации. Не обязательно включать '' 'тройные одинарные кавычки' '' или 'одинарные двойные кавычки' в строки документации. Есть одна сложность в том, что у нас есть классные строки документов, функциональные строки документов, модульные строки документов, строки атрибутов и дополнительные строки документов. Вот почему я решил, что проще рассмотреть docstring следующим образом:

syn region pythonDocString start=+^\s*"""+ end=+"""+ keepend contains=...

А потом:

HiLink pythonDocString        Comment

Вы можете увидеть примеры в этом скрипте (поиск pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

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