diff --git a/autoload/vimtex/syntax/core.vim b/autoload/vimtex/syntax/core.vim index 83406755e8..28201f421c 100644 --- a/autoload/vimtex/syntax/core.vim +++ b/autoload/vimtex/syntax/core.vim @@ -434,8 +434,27 @@ function! vimtex#syntax#core#init() abort " {{{1 " Highlight \iffalse ... \fi blocks as comments syntax region texComment matchgroup=texCmd - \ start="^\s*\\iffalse\>" end="\\fi\>" + \ start="^\s*\\iffalse\>" end="\\\(fi\|else\)\>" \ contains=texCommentConditionals + + syntax cluster texIftrueCluster contains=TOP + syntax cluster texIftrueClusterCommon contains=@texIftrueCluster,texIftrueConditionals + + syntax region texIftrue matchgroup=texCmd + \ start="^\s*\\iftrue\>" end="\(\\\(fi\|else\)\>\)\@=" + \ transparent contains=@texIftrueClusterCommon + \ nextgroup=texIftrueElseComment + + syntax region texIftrueElseComment matchgroup=texCmd + \ start="\(\(\\fi\>\)@=\|\\else\>\)" end="\\fi\>" + \ contained contains=texCommentConditionals + + highlight def link texIftrueElseComment texComment + + syntax region texIftrueConditionals matchgroup=texCmd + \ start="\\if\w\+" end="\\fi\>" + \ contained contains=@texIftrueClusterCommon + syntax region texCommentConditionals matchgroup=texComment \ start="\\if\w\+" end="\\fi\>" \ contained transparent diff --git a/test/test-syntax/test-iffalse.tex b/test/test-syntax/test-iffalse.tex index 57781e9da9..a20be7ffcf 100644 --- a/test/test-syntax/test-iffalse.tex +++ b/test/test-syntax/test-iffalse.tex @@ -11,6 +11,7 @@ \iffalse Commented stuff Another \ifstuff here \fi +\ifaa \else \fi \ifasd \fi \f \fii Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod @@ -19,4 +20,16 @@ gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \fi +\iffalse +Commented stuff +Another \ifstuff here \fi +\ifaa \else \fi +\ifasd \fi \f \fii +\else +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod +tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At +vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd +gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +\fi + \end{document} diff --git a/test/test-syntax/test-iftrue.tex b/test/test-syntax/test-iftrue.tex new file mode 100644 index 0000000000..72099a57e0 --- /dev/null +++ b/test/test-syntax/test-iftrue.tex @@ -0,0 +1,38 @@ +\documentclass{article} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} + +\begin{document} + +\iftrue +\section{asd} +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod +tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At +vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd +gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +\ifasd \fi +\ifaa asd \else asd \fi +\fi + +\section{qwe} +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod +tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At +vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd +gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +\iftrue +\section{asd} +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod +tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At +vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd +gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +\ifasd \fi +\ifaa asd \else asd \fi +\else +Commented stuff +Another \ifstuff here \fi +\ifaa \else \fi +\ifasd \fi \f \fii +\fi + +\end{document}