From 15a242e822827288e2c2e4c0c92331087b40f581 Mon Sep 17 00:00:00 2001 From: Julio B Date: Mon, 27 Dec 2021 07:51:49 +0200 Subject: [PATCH 1/2] fix: highlight of \iffalse The contents after \else should not be highlighted as a comment ref: #1988 --- autoload/vimtex/syntax/core.vim | 2 +- test/test-syntax/test-iffalse.tex | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/autoload/vimtex/syntax/core.vim b/autoload/vimtex/syntax/core.vim index 83406755e8..e7d9b2e7af 100644 --- a/autoload/vimtex/syntax/core.vim +++ b/autoload/vimtex/syntax/core.vim @@ -434,7 +434,7 @@ 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 region texCommentConditionals matchgroup=texComment \ start="\\if\w\+" end="\\fi\>" 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} From 09ba976c4a9c528ad3baced824ffff3c788dcdd2 Mon Sep 17 00:00:00 2001 From: Julio B Date: Tue, 1 Feb 2022 20:24:15 +0200 Subject: [PATCH 2/2] feat(syntax): support \iftrue command Highlight the \else section of \iftrue command as a comment ref: #1988 --- autoload/vimtex/syntax/core.vim | 19 ++++++++++++++++ test/test-syntax/test-iftrue.tex | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 test/test-syntax/test-iftrue.tex diff --git a/autoload/vimtex/syntax/core.vim b/autoload/vimtex/syntax/core.vim index e7d9b2e7af..28201f421c 100644 --- a/autoload/vimtex/syntax/core.vim +++ b/autoload/vimtex/syntax/core.vim @@ -436,6 +436,25 @@ function! vimtex#syntax#core#init() abort " {{{1 syntax region texComment matchgroup=texCmd \ 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-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}