Выделите строку в тройных одинарных кавычках в качестве комментариев?

Исходя из этого, я хотел бы выделить строку в тройных одинарных кавычках в качестве комментариев (или лучше для тех, которые не являются первыми в классе / функции / модуле).

Я использую джедай-вим. Вот содержимое файла after/syntax/python.vim:

syn match pythonComment "#.*$" contains=pythonTodo,@Spell,jediFunction
syn region pythonString
    \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=pythonEscape,@Spell,jediFunction
syn region pythonString
    \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
    \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell,jediFunction
syn region pythonRawString
    \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=@Spell,jediFunction
syn region pythonRawString
    \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
    \ contains=pythonSpaceError,pythonDoctest,@Spell,jediFunction

Я попытался удалить тройные одинарные кавычки в pythonString и добавьте одно из следующего:

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

как предложено в этом разделе, но это не сработало (строка в тройных одинарных и двойных кавычках выделяется как строка документации).


ОБНОВЛЕНИЕ Пт 14 февраля 08:29:00 ИКТ 2014

@benjifisher

Я уверен, что это признается как pythonString так как :echo synIDattr(synID(line("."), col("."), 1), "name") говорил мне это.

:syn list pythonString

--- Syntax items ---
pythonString   xxx start=/[uU]\=\z(['"]\)/ skip=/\\\\\|\\\z1/ end=/\z1/  contains=pythonEscape,@Spell
                   start=/[uU]\=\z("""\)/ end=/\z1/  keepend contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
                   start=/[uU]\=\z(['"]\)/ skip=/\\\\\|\\\z1/ end=/\z1/  contains=pythonEscape,@Spell,jediFunction
                   start=/[uU]\=\z("""\)/ end=/\z1/  keepend contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell,jediFunction
                   links to String

:syn list pythonComment

--- Syntax items ---
pythonComment  xxx match /#.*$/  contains=pythonTodo,@Spell
                   match /#.*$/  contains=pythonTodo,@Spell,jediFunction
                   start=/'''/ end=/'''/
                   start=/[uU]\=\z('''\)/ end=/\z1/  keepend contains=pythonTodo,@Spell,jediFunction
                   start=/^\s*[uU]\?[rR]\?'''/ end=/'''/  keepend excludenl contains=pythonEscape,@Spell,pythonDoctest,pythonDocTest2,pythonSpaceError
                   links to Comment

1 ответ

Решение

Ой, прости, я виноват.

Так как я добавил предложенную строку после первой строки (pythonComment), Я также должен удалить одинарную кавычку во второй строке:

syn match pythonComment "#.*$" contains=pythonTodo,@Spell,jediFunction
syn region pythonComment start=/'''/ end=/'''/
syn region pythonString
    \ start=+[uU]\=\z(["]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=pythonEscape,@Spell,jediFunction

Урок: я должен добавить его в конец файла в следующий раз:D.

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