From 45b30470da078a3ef0a6df3cd1a7d28980b77b28 Mon Sep 17 00:00:00 2001 From: Marcel Robitaille Date: Wed, 1 Jun 2022 14:57:43 -0400 Subject: [PATCH 1/6] Add support for tabularx --- autoload/vimtex/syntax/core.vim | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/autoload/vimtex/syntax/core.vim b/autoload/vimtex/syntax/core.vim index 800e033f7b..e51ba3cb16 100644 --- a/autoload/vimtex/syntax/core.vim +++ b/autoload/vimtex/syntax/core.vim @@ -308,6 +308,22 @@ function! vimtex#syntax#core#init() abort " {{{1 \ 'contains': '@texClusterTabular' \}) + syntax match texCmdTabularx "\\begin{tabularx}" + \ skipwhite skipnl + \ nextgroup=texTabularxOpt,texTabularxWidth + \ contains=texCmdEnv + call vimtex#syntax#core#new_opt('texTabularxOpt', { + \ 'next': 'texTabularxWidth', + \ 'contains': 'texComment,@NoSpell', + \}) + call vimtex#syntax#core#new_arg('texTabularxWidth', { + \ 'next': 'texTabularxArg', + \}) + call vimtex#syntax#core#new_arg('texTabularxArg', { + \ 'contains': '@texClusterTabular' + \}) + + syntax match texTabularCol "[lcr]" contained syntax match texTabularCol "p" contained nextgroup=texTabularLength syntax match texTabularAtSep "@" contained nextgroup=texTabularLength From e2377c26ab1eae972e7296b74d87ac16fbd7a8a4 Mon Sep 17 00:00:00 2001 From: Marcel Robitaille Date: Sat, 4 Jun 2022 19:55:07 -0400 Subject: [PATCH 2/6] Move tabularx stuff to tabularx.vim --- autoload/vimtex/syntax/core.vim | 16 ---------------- autoload/vimtex/syntax/p/tabularx.vim | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/autoload/vimtex/syntax/core.vim b/autoload/vimtex/syntax/core.vim index e51ba3cb16..800e033f7b 100644 --- a/autoload/vimtex/syntax/core.vim +++ b/autoload/vimtex/syntax/core.vim @@ -308,22 +308,6 @@ function! vimtex#syntax#core#init() abort " {{{1 \ 'contains': '@texClusterTabular' \}) - syntax match texCmdTabularx "\\begin{tabularx}" - \ skipwhite skipnl - \ nextgroup=texTabularxOpt,texTabularxWidth - \ contains=texCmdEnv - call vimtex#syntax#core#new_opt('texTabularxOpt', { - \ 'next': 'texTabularxWidth', - \ 'contains': 'texComment,@NoSpell', - \}) - call vimtex#syntax#core#new_arg('texTabularxWidth', { - \ 'next': 'texTabularxArg', - \}) - call vimtex#syntax#core#new_arg('texTabularxArg', { - \ 'contains': '@texClusterTabular' - \}) - - syntax match texTabularCol "[lcr]" contained syntax match texTabularCol "p" contained nextgroup=texTabularLength syntax match texTabularAtSep "@" contained nextgroup=texTabularLength diff --git a/autoload/vimtex/syntax/p/tabularx.vim b/autoload/vimtex/syntax/p/tabularx.vim index 731cc44e1c..107c101530 100644 --- a/autoload/vimtex/syntax/p/tabularx.vim +++ b/autoload/vimtex/syntax/p/tabularx.vim @@ -6,6 +6,21 @@ function! vimtex#syntax#p#tabularx#load(cfg) abort " {{{1 call vimtex#syntax#packages#load('array') + + syntax match texCmdTabularx "\\begin{tabularx}" + \ skipwhite skipnl + \ nextgroup=texTabularxOpt,texTabularxWidth + \ contains=texCmdEnv + call vimtex#syntax#core#new_opt('texTabularxOpt', { + \ 'next': 'texTabularxWidth', + \ 'contains': 'texComment,@NoSpell', + \}) + call vimtex#syntax#core#new_arg('texTabularxWidth', { + \ 'next': 'texTabularxArg', + \}) + call vimtex#syntax#core#new_arg('texTabularxArg', { + \ 'contains': '@texClusterTabular' + \}) endfunction " }}}1 From 82fcdbd73bb8ba650b1c5ecd4b657c5a447fb304 Mon Sep 17 00:00:00 2001 From: Marcel Robitaille Date: Sat, 4 Jun 2022 21:24:57 -0400 Subject: [PATCH 3/6] Add some tests for tabularx syntax --- test/test-syntax/test-tabularx.tex | 14 ++++++++++++++ test/test-syntax/test-tabularx.vim | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 test/test-syntax/test-tabularx.tex create mode 100644 test/test-syntax/test-tabularx.vim diff --git a/test/test-syntax/test-tabularx.tex b/test/test-syntax/test-tabularx.tex new file mode 100644 index 0000000000..e3f76ff67b --- /dev/null +++ b/test/test-syntax/test-tabularx.tex @@ -0,0 +1,14 @@ +\documentclass{article} + +\usepackage{tabularx} + +\begin{document} + \begin{tabularx}{\linewidth}{llXX} + 1 & 2 & 3 & 4 \\ + \end{tabularx} + + % Tabularx does not seem to have options + \begin{tabularx}[test]{\linewidth}{llXX} + 1 & 2 & 3 & 4 \\ + \end{tabularx} +\end{document} diff --git a/test/test-syntax/test-tabularx.vim b/test/test-syntax/test-tabularx.vim new file mode 100644 index 0000000000..8b01acdf2e --- /dev/null +++ b/test/test-syntax/test-tabularx.vim @@ -0,0 +1,17 @@ +source common.vim + +silent edit test-tabularx.tex + +set spell + +if empty($INMAKE) | finish | endif + +call assert_true(vimtex#syntax#in('texCmdTabularx', 6, 2)) +call assert_true(vimtex#syntax#in('texTabularxWidth', 6, 20)) +call assert_true(vimtex#syntax#in('texTabularxArg', 6, 32)) + +call assert_true(vimtex#syntax#in('texCmdTabularx', 11, 2)) +call assert_true(vimtex#syntax#in('texTabularxOpt', 11, 20)) +call assert_true(vimtex#syntax#in('texTabularxWidth', 11, 26)) +call assert_true(vimtex#syntax#in('texTabularxArg', 11, 38)) +call vimtex#test#finished() From c4bef045f27f62a4a7226236ed6c87b2d3cc9ab8 Mon Sep 17 00:00:00 2001 From: Marcel Robitaille Date: Sun, 5 Jun 2022 21:28:41 -0400 Subject: [PATCH 4/6] Add default highlight groups --- autoload/vimtex/syntax/p/tabularx.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoload/vimtex/syntax/p/tabularx.vim b/autoload/vimtex/syntax/p/tabularx.vim index 107c101530..c62899d01d 100644 --- a/autoload/vimtex/syntax/p/tabularx.vim +++ b/autoload/vimtex/syntax/p/tabularx.vim @@ -21,6 +21,10 @@ function! vimtex#syntax#p#tabularx#load(cfg) abort " {{{1 call vimtex#syntax#core#new_arg('texTabularxArg', { \ 'contains': '@texClusterTabular' \}) + + highlight def link texTabularxArg texOpt + highlight def link texTabularxWidth texOpt + highlight def link texTabularxOpt texEnvOpt endfunction " }}}1 From 6e1e6c7e56b09f99e05634efec48587e81b4126e Mon Sep 17 00:00:00 2001 From: Marcel Robitaille Date: Sat, 9 Jul 2022 23:30:27 -0400 Subject: [PATCH 5/6] Fix order of texTabularxWidth and texTabularOpt --- autoload/vimtex/syntax/p/tabularx.vim | 16 +++++++++------- test/test-syntax/test-tabularx.tex | 3 +-- test/test-syntax/test-tabularx.vim | 10 +++++----- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/autoload/vimtex/syntax/p/tabularx.vim b/autoload/vimtex/syntax/p/tabularx.vim index c62899d01d..7c80c2f15e 100644 --- a/autoload/vimtex/syntax/p/tabularx.vim +++ b/autoload/vimtex/syntax/p/tabularx.vim @@ -7,22 +7,24 @@ function! vimtex#syntax#p#tabularx#load(cfg) abort " {{{1 call vimtex#syntax#packages#load('array') + " The format is \begin{tabularx}{WIDTH}[POS]{PREAMBLE} syntax match texCmdTabularx "\\begin{tabularx}" \ skipwhite skipnl - \ nextgroup=texTabularxOpt,texTabularxWidth + \ nextgroup=texTabularxWidth \ contains=texCmdEnv + call vimtex#syntax#core#new_arg('texTabularxWidth', { + \ 'next': 'texTabularxPreamble,texTabularxOpt,', + \ 'contains': 'texLength', + \}) call vimtex#syntax#core#new_opt('texTabularxOpt', { - \ 'next': 'texTabularxWidth', + \ 'next': 'texTabularxPreamble', \ 'contains': 'texComment,@NoSpell', \}) - call vimtex#syntax#core#new_arg('texTabularxWidth', { - \ 'next': 'texTabularxArg', - \}) - call vimtex#syntax#core#new_arg('texTabularxArg', { + call vimtex#syntax#core#new_arg('texTabularxPreamble', { \ 'contains': '@texClusterTabular' \}) - highlight def link texTabularxArg texOpt + highlight def link texTabularxPreamble texOpt highlight def link texTabularxWidth texOpt highlight def link texTabularxOpt texEnvOpt endfunction diff --git a/test/test-syntax/test-tabularx.tex b/test/test-syntax/test-tabularx.tex index e3f76ff67b..c341ae64e7 100644 --- a/test/test-syntax/test-tabularx.tex +++ b/test/test-syntax/test-tabularx.tex @@ -7,8 +7,7 @@ 1 & 2 & 3 & 4 \\ \end{tabularx} - % Tabularx does not seem to have options - \begin{tabularx}[test]{\linewidth}{llXX} + \begin{tabularx}{\linewidth}[pos]{llXX} 1 & 2 & 3 & 4 \\ \end{tabularx} \end{document} diff --git a/test/test-syntax/test-tabularx.vim b/test/test-syntax/test-tabularx.vim index 8b01acdf2e..a804fb9a4f 100644 --- a/test/test-syntax/test-tabularx.vim +++ b/test/test-syntax/test-tabularx.vim @@ -8,10 +8,10 @@ if empty($INMAKE) | finish | endif call assert_true(vimtex#syntax#in('texCmdTabularx', 6, 2)) call assert_true(vimtex#syntax#in('texTabularxWidth', 6, 20)) -call assert_true(vimtex#syntax#in('texTabularxArg', 6, 32)) +call assert_true(vimtex#syntax#in('texTabularxPreamble', 6, 32)) -call assert_true(vimtex#syntax#in('texCmdTabularx', 11, 2)) -call assert_true(vimtex#syntax#in('texTabularxOpt', 11, 20)) -call assert_true(vimtex#syntax#in('texTabularxWidth', 11, 26)) -call assert_true(vimtex#syntax#in('texTabularxArg', 11, 38)) +call assert_true(vimtex#syntax#in('texCmdTabularx', 10, 2)) +call assert_true(vimtex#syntax#in('texTabularxWidth', 10, 20)) +call assert_true(vimtex#syntax#in('texTabularxOpt', 10, 32)) +call assert_true(vimtex#syntax#in('texTabularxPreamble', 10, 37)) call vimtex#test#finished() From a48cf7ac2a818831fc5ee2a428136303d94bbddf Mon Sep 17 00:00:00 2001 From: Marcel Robitaille Date: Sun, 10 Jul 2022 18:23:26 -0400 Subject: [PATCH 6/6] Fix highlight group for texTabularxWidth to texLength --- autoload/vimtex/syntax/p/tabularx.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/vimtex/syntax/p/tabularx.vim b/autoload/vimtex/syntax/p/tabularx.vim index 7c80c2f15e..5308b03baa 100644 --- a/autoload/vimtex/syntax/p/tabularx.vim +++ b/autoload/vimtex/syntax/p/tabularx.vim @@ -25,7 +25,7 @@ function! vimtex#syntax#p#tabularx#load(cfg) abort " {{{1 \}) highlight def link texTabularxPreamble texOpt - highlight def link texTabularxWidth texOpt + highlight def link texTabularxWidth texLength highlight def link texTabularxOpt texEnvOpt endfunction