17

Is it possible to modify python.vim (and the corresponding colorscheme file) such that triple-quoted strings right under class and def statements (a.k.a. docstrings) will be highlighted as comments during python syntax highlighting under 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
2

3 Answers 3

19

you can add the following line:

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

to your ~/.vim/after/syntax/python.vim. You can create this file if it doesn't exists.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks, that does work, but it will also cause string assignments such as string_var = """blah blah""" to be highlighted as comments as well. Realized now that the defining characteristic of a python docstring "start" is a triple-quote not preceded by non-whitespace characters in the beginning of a line. Your answer did lead me to it, thanks.
It works for me,thanks, can you explain to me thy this file will be automatelt included in vim run environment?
10

The following worked for me:

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

Taken from a modified python.vim from here.

3 Comments

The link to the syntax file in the post is now broken, so thanks for capturing that. For completeness' sake, you may also want to include hi link pythongDocstring Comment in the code sample.
Here is a link to this file on the WebArchive: web.archive.org/web/20160503053615/http://…
This answer could use an update, as python syntax for vim is more complex/involved
1

PEP 257 prescribes to use """triple double quotes""" for docstrings. It's not obligatory to include '''triple single quotes''' or "single double quotes" into docstrings. There is one difficulty that we have class docstrings, function docstrings, module docstrings, attribute docstrings and additional docstrings. That's why I decided that it's easier to consider docstring as following:

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

And then:

HiLink pythonDocString        Comment

You may see examples in this script (search pythonDocString): https://github.com/andbar-ru/python-syntax/blob/master/syntax/python.vim

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.