vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit 348b01495797ee0e06f6548ef5754468c994b2d6
parent aa628f8a1285d4925ef320ece054838c43f89cc6
Author: Tinmarino <tinmarino@gmail.com>
Date:   Fri,  7 Aug 2020 10:21:27 -0400

Fix: Typeface should not be nested in single equation (#977)

Solution: make thos a tex nested region and let tex decide the syntax

Diffstat:
Mautoload/vimwiki/u.vim | 5-----
Msyntax/vimwiki.vim | 32+++++++++++++++++++++++---------
Mtest/syntax.vader | 28++++++++++++++--------------
3 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim @@ -349,11 +349,6 @@ function! vimwiki#u#hi_typeface(dic) abort call vimwiki#u#hi_tag(u[0], u[1], 'VimwikiCode', '') endfor - "" Equation - for u in a:dic['eq'] - call vimwiki#u#hi_tag(u[0], u[1], 'VimwikiEqIn', nested) - endfor - " Superscript for u in a:dic['sup'] call vimwiki#u#hi_tag(u[0], u[1], 'VimwikiSuperScript', nested, 0, 'oneline') diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim @@ -25,7 +25,7 @@ let syntax_dic = g:vimwiki_syntax_variables[s:current_syntax] " Declare nesting capabilities " -- to be embeded in standard: bold, italic, underline -let syntax_dic.nested_extended = 'VimwikiCode,VimwikiEqIn,VimwikiSuperScript,VimwikiSubScript' +let syntax_dic.nested_extended = 'VimwikiCode,VimwikiEqIn,VimwikiSuperScript,VimwikiSubScript,textSnipTEX' " -- to be embeded in exetended (the one above) let syntax_dic.nested_typeface = 'VimwikiBold,VimwikiItalic,VimwikiUmderline,VimwikiDelText' let syntax_dic.nested = syntax_dic.nested_extended . ',' . syntax_dic.nested_typeface @@ -43,13 +43,6 @@ let syntax_dic.dTypeface.code = [ let syntax_dic.dTypeface.del = ([ \ ['\~\~', '\~\~']]) -" text: $ equation_inline $ -" Match only one $ -" ( ^ or not $) before $ and after: not $ -let syntax_dic.dTypeface.eq = ([ - \ ['\%(^\|[^$]\)\@<=\$\%($\|[^$]\)\@=', - \ '\%(^\|[^$]\)\@<=\$\%($\|[^$]\)\@=']]) - " text: ^superscript^ let syntax_dic.dTypeface.sup = ([ \ ['\^', '\^']]) @@ -58,6 +51,13 @@ let syntax_dic.dTypeface.sup = ([ let syntax_dic.dTypeface.sub = ([ \ [',,', ',,']]) +" text: $ equation_inline $ +" Match only one $ +" ( ^ or not $) before $ and after: not $ +let syntax_dic.dTypeface.eq = ([ + \ ['\%(^\|[^$]\)\@<=\$\%($\|[^$]\)\@=', + \ '\%(^\|[^$]\)\@<=\$\%($\|[^$]\)\@=']]) + " LINKS: highlighting is complicated due to "nonexistent" links feature function! s:add_target_syntax_ON(target, type) abort @@ -483,12 +483,26 @@ if !empty(s:nested) endfor endif +" LaTex: Load +if !empty(globpath(&runtimepath, 'syntax/tex.vim')) + execute 'syntax include @textGrouptex syntax/tex.vim' +endif +if !empty(globpath(&runtimepath, 'after/syntax/tex.vim')) + execute 'syntax include @textGrouptex after/syntax/tex.vim' +endif -" LaTeX +" LaTeX: Block call vimwiki#base#nested_syntax('tex', \ vimwiki#vars#get_syntaxlocal('rxMathStart').'\%(.*[[:blank:][:punct:]]\)\?'. \ '\%([[:blank:][:punct:]].*\)\?', \ vimwiki#vars#get_syntaxlocal('rxMathEnd'), 'VimwikiMath') +" LaTeX: Inline +for u in syntax_dic.dTypeface.eq + execute 'syntax region textSniptex matchgroup=texSnip' + \ . ' start="'.u[0].'" end="'.u[1].'"' + \ . ' contains=@texMathZoneGroup' + \ . ' keepend oneline '. b:vimwiki_syntax_concealends +endfor syntax spell toplevel diff --git a/test/syntax.vader b/test/syntax.vader @@ -55,10 +55,10 @@ Given vimwiki (Extended Types mono): Execute (Set syntax markdown): call SetSyntax('markdown') -Execute (Assert Syntax extended types mono): +Execute (Assert Syntax extended types x 1): AssertEqual 'VimwikiCode' , SyntaxAt(1, 8) AssertEqual 'VimwikiDelText' , SyntaxAt(2, 8) - AssertEqual 'VimwikiEqIn' , SyntaxAt(3, 8) + AssertEqual 'textSnipTEX' , SyntaxAt(3, 8) AssertEqual 'VimwikiSuperScript' , SyntaxAt(4, 8) AssertEqual 'VimwikiSubScript' , SyntaxAt(5, 8) @@ -73,10 +73,10 @@ Given vimwiki (Extended Types nested in basic): Execute (Set syntax markdown): call SetSyntax('markdown') -Execute (Assert Syntax extended types mono): +Execute (Assert Syntax extended types x 2): AssertEqual 'VimwikiCode' , SyntaxAt(1, 23) AssertEqual 'VimwikiDelText' , SyntaxAt(2, 23) - AssertEqual 'VimwikiEqIn' , SyntaxAt(3, 23) + AssertEqual 'textSnipTEX' , SyntaxAt(3, 23) AssertEqual 'VimwikiSuperScript' , SyntaxAt(4, 23) AssertEqual 'VimwikiSubScript' , SyntaxAt(5, 23) @@ -93,8 +93,8 @@ Execute (Set syntax markdown): Execute (Assert Syntax extended types nested in extended): AssertEqual 'VimwikiCode' , SyntaxAt(1, 23) AssertEqual 'VimwikiDelText' , SyntaxAt(2, 23) - AssertEqual 'VimwikiEqIn' , SyntaxAt(3, 23) - AssertEqual 'VimwikiSuperScript' , SyntaxAt(4, 23) + AssertEqual 'textSnipTEX' , SyntaxAt(3, 23) + AssertEqual 'textSnipTEX' , SyntaxAt(4, 23) AssertEqual 'VimwikiSubScript' , SyntaxAt(5, 23) Given vimwiki (Basic Types nested in extended): @@ -107,10 +107,10 @@ Given vimwiki (Basic Types nested in extended): Execute (Set syntax markdown): call SetSyntax('markdown') -Execute (Assert Syntax extended types nested in extended): +Execute (Assert Syntax basic types nested in extended): AssertEqual 'VimwikiBold' , SyntaxAt(1, 23) AssertEqual 'VimwikiItalic' , SyntaxAt(2, 23) - AssertEqual 'VimwikiBold' , SyntaxAt(3, 23) + AssertEqual 'textSnipTEX' , SyntaxAt(3, 23) AssertEqual 'VimwikiItalic' , SyntaxAt(4, 23) AssertEqual 'VimwikiBold' , SyntaxAt(5, 23) @@ -145,7 +145,7 @@ Given vimwiki (Multiline Typfaces Basic and extended): and mutli path ` - and $ multi + but no $ multi equation $ ^ but no multi @@ -162,7 +162,7 @@ Execute (Multiline syantax but not sup and sub): AssertEqual 'VimwikiItalic' , SyntaxAt(5, 1) AssertEqual 'VimwikiDelText' , SyntaxAt(8, 1) AssertEqual 'VimwikiCode' , SyntaxAt(11, 1) - AssertEqual 'VimwikiEqIn' , SyntaxAt(14, 1) + AssertEqual '' , SyntaxAt(14, 1) AssertEqual '' , SyntaxAt(17, 1) AssertEqual '' , SyntaxAt(20, 1) @@ -549,7 +549,7 @@ Execute (Assert Code syntax): ####################### Given vimwiki (Math markdown): - math inline: $ \sum_i a_i^2 = 1 $ + math inline: $ aaaaaaaaaaaaaa \sum_i a_i^2 = 1 $ math block: $$ @@ -568,7 +568,7 @@ Execute (Set syntax markdown): call SetSyntax('markdown') Execute (Assert math syntax 1): - AssertEqual 'VimwikiEqIn', SyntaxAt(1, 18) + AssertEqual 'textSnipTEX', SyntaxAt(1, 18) let syntax_5 = SyntaxAt(5, 1) Assert syntax_5 == 'texStatement' || syntax_5 == 'texMathSymbol' let syntax_12 = SyntaxAt(12, 1) @@ -579,7 +579,7 @@ Execute (Assert math syntax 1): ############################## Given vimwiki (Math wiki): - math inline: $ \sum_i a_i^2 = 1 $ + math inline: $aaaaaaaaaaaaaaaaaaaaaaaaaa \sum_i a_i^2 = 1 $ math block: {{$ @@ -598,7 +598,7 @@ Execute (Set syntax default): call SetSyntax('default') Execute (Assert math syntax 2): - AssertEqual 'VimwikiEqIn', SyntaxAt(1, 18) + AssertEqual 'textSnipTEX', SyntaxAt(1, 18) let syntax_5 = SyntaxAt(5, 1) Assert syntax_5 == 'texStatement' || syntax_5 == 'texMathSymbol' let syntax_12 = SyntaxAt(12, 1)