Como impedir que a sintaxe de marcação do Vim seja destacada como asteriscos em itálico usados para denotar negrito?

1

Usando o Vim 7.4 no Windows no ConEmu (embora eu tenha visto o mesmo em outras plataformas / configurações), noto que o realce de sintaxe está combinando os asteriscos duplos de início e fim como sub-regiões em itálico na região em negrito eles denotam. Isso é uma monstruosidade:

Depoisdepesquisar,achoqueencontreiaorigemdesseproblema(de$VIMRUNTIME/syntax/markdown.vim):

synregionmarkdownItalicstart="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart
syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart
syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart
syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart

E mais abaixo:

hi def link markdownItalic                htmlItalic
hi def link markdownBold                  htmlBold
hi def link markdownBoldItalic            htmlBoldItalic

Como você pode ver, o negrito aceita itálico como uma sub-região. O problema é se eu remover markdownItalic do contains= , isto:

nãofuncionamaiscorretamente:

embora tenha resolvido o outro problema. Eu também estou tentando substituir \S nas expressões regulares por itálico por [^*] , mas isso também não funcionou. Além disso, a instalação do plug-in de Markdown do Plastic Boy não resolveu isso.

Alguma idéia de como contornar este caso chato?

    
por Kazark 11.08.2014 / 19:30

1 resposta

1

Portanto, este conceito básico funciona:

I also trying substituting \S in the regexes for italic to be [^*] but that didn't work either.

Basta copiar $VIMRUNTIME/syntax/markdown.vim para ~/.vim/syntax/ e alterar as duas linhas syn region markdownItalic... a serem

syn region markdownItalic start="[^* ]\@<=\*\*\@!\|\*\@<!\*[^* ]\@=" end="[^* ]\@<=\*\|\*\@<!\*[^* ]\@=" keepend contains=markdownLineStart
syn region markdownItalic start="[^_ ]\@<=__\@!\|_\@<!_[^_]\@=" end="[^_ ]\@<=_\|_\@<!_[^_]\@=" keepend contains=markdownLineStart

Além disso, notadamente, parece que o atual remarcação do vim de Tim Pope não tem o problema (embora no momento em que este artigo foi escrito) tem outros relacionados ao itálico; parece que este é um problema difícil de resolver com o realce da sintaxe do Vim).

    
por 13.08.2014 / 01:22