vimwiki

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

commit 39407014c819726c50249b16f43aa55836ce54d6
parent a241d458ab6155a7278d60f0b543949dad18ad1f
Author: Tinmarino <tinmarino@gmail.com>
Date:   Sun,  9 Aug 2020 22:21:05 -0400

Syntax: Stricter typeface and fix preCode (alias inline) nested in bold

Fix: Syntax bug precode nested in bold apperead bold

Problem:
1. `that_ HERE _was` italic
2. `__that ``HERE`` was__  bold => PreCode should not receive typeface
region changes

Solution:
1. Stricter regex (and add \* to VimwikiError)
2. Add VikiError and WikiPre to nestables syntaxes

Diffstat:
Mautoload/vimwiki/emoji.vim | 1-
Mautoload/vimwiki/u.vim | 6+++---
Msyntax/vimwiki.vim | 2+-
Atest/list_move.vader | 45+++++++++++++++++++++++++++++++++++++++++++++
Mtest/syntax.vader | 58++++++++++++++++++++++++++++++++++++++++++++++++++++------
Mtest/vimrc | 6++++++
6 files changed, 107 insertions(+), 11 deletions(-)

diff --git a/autoload/vimwiki/emoji.vim b/autoload/vimwiki/emoji.vim @@ -1768,7 +1768,6 @@ endfunction " Conceal function! vimwiki#emoji#apply_conceal() abort - syn iskeyword 0-9,a-z,A-Z,:-: for [name, emoji] in items(s:emoji_single) exe 'syn keyword VimwikiEmoji :' . name . ': conceal cchar=' . emoji endfor diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim @@ -273,11 +273,11 @@ endfunction " Helper: Expand regex from reduced typeface delimiters " :param: list<list,delimiters>> with reduced regex " Return: list with extended regex delimiters (not inside a word) -" -- [['\*_', '_\*']] -> [['\*_\S\@=', '\S\@<=_\*']] +" -- [['\*_', '_\*']] -> [['\*_\S\@=', '\S\@<=_\*\%(\s\|$\)\@=']] function! vimwiki#u#hi_expand_regex(lst) abort let res = [] for delimiters in a:lst - call add(res, [delimiters[0] . '\S\@=', '\S\@<=' . delimiters[1]]) + call add(res, [delimiters[0] . '\S\@=', '\S\@<=' . delimiters[1] . '\%(\s\|\n\)\@=']) endfor return res endfunction @@ -400,5 +400,5 @@ function! vimwiki#u#hi_typeface(dic) abort " Prevent var_with_underscore to trigger italic text " -- See $VIMRUNTIME/syntax/markdown.vim - syn match VimwikiError "\w\@<=_\w\@=" + syn match VimwikiError "\w\@<=[_*]\w\@=" endfunction 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,textSnipTEX' +let syntax_dic.nested_extended = 'VimwikiError,VimwikiPre,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 diff --git a/test/list_move.vader b/test/list_move.vader @@ -0,0 +1,45 @@ +# Move and edit a list (autocommand, config_ + +# Test J {{{1 +############################################################ + +Given vimwiki (Markdown * [ ] list {{{2): + * [ ] Top Level + * [o] Child 1 + * [X] Child 2 + + * [X] Post space + + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Do (JJJJ): + JJJJ + 0y$ + :call AssertIfVersion(704, '* [ ] Top Level Child 1 Child 2 Post space', @")\<Cr> + + + +Given vimwiki (Markdown * and - list {{{2): + * one + * two + - three + - for + + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Do (JjJ): + JjJ + gg + 0y$ + :call AssertIfVersion(704, '* one two', @")\<Cr> + G + 0y$ + :call AssertIfVersion(704, '- three for', @")\<Cr> + + + +# vim: sw=2:foldlevel=30:foldmethod=indent: diff --git a/test/syntax.vader b/test/syntax.vader @@ -1,12 +1,59 @@ # Syntax and Highlight +#Given vimwiki (bold and pre): # 1 Typeface {{{1 ################# +Given vimwiki (Markdown bad __this_not_it__ {{{2): + See here 14 | + s2n_error + s*n*er_r_ + n4rmal_aaaaaaaaaaaaaaaaaaaa_text_ + n5t_italiccccccccccccccccccccc_no + n6t_italiccccccccccccccccccccccno + n7t*italiccccccccccccccccccccc_no + n8t*italiccccccccccccccccccccc*no + __not_italicccccccccc_but_boldd__ + _a_asdasda_asdas_asdas_asdasda_a_ + _jitaliccccccccccccccccccccccccc_ + n12ormalllllllllllllllllllllllll_ + _italic if at end of file unfortunately + Note: The decision to start a region is only based on a matching start + pattern. There is no check for a matching end pattern. This does NOT + work: (:h syn-region) + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Assert Syntax extended types x 1): + AssertEqual 'VimwikiError2' , SyntaxAt(2, 4) . 2 + AssertEqual 'VimwikiError3' , SyntaxAt(3, 4) . 3 + AssertEqual '4' , SyntaxAt(4, 14) . 4 + AssertEqual '5' , SyntaxAt(5, 14) . 5 + AssertEqual '6' , SyntaxAt(6, 14) . 6 + AssertEqual '7' , SyntaxAt(7, 14) . 7 + AssertEqual '8' , SyntaxAt(8, 14) . 8 + AssertEqual 'VimwikiBold9' , SyntaxAt(9, 14) . 9 + AssertEqual 'VimwikiItalic10' , SyntaxAt(10, 14) . 10 + AssertEqual 'VimwikiItalic11' , SyntaxAt(11, 14) . 11 + AssertEqual '12' , SyntaxAt(12, 14) . 12 + +Given vimwiki (bold and pre {{{2): + __startbold + ``` + pre + ``` + __endbold + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Assert Syntax extended types x 1): + AssertEqual 'VimwikiPre' , SyntaxAt(3, 1) + # Emphasis stricker {{{2 # See: https://github.github.com/gfm/#emphasis-and-strong-emphasis - Given vimwiki (Emphasis and not): this __bold__ ok this _italic_ ok @@ -23,7 +70,6 @@ Execute (Assert Syntax extended types x 1): AssertEqual '' , SyntaxAt(4, 9) # With vimwiki_hl_cb_checked {{{2 - Given vimwiki (task list with code): Normal syntax - [X] Lorem __sit__ `sed do eiusmod @@ -116,11 +162,11 @@ Execute (Assert Syntax extended types nested in extended): AssertEqual 'VimwikiSubScript' , SyntaxAt(5, 23) Given vimwiki (Basic Types nested in extended): - From ^super t__bold __ is crazy but^ morF - From ,,sub to _italic with en_ aaaaaaa,, morF + From ^super __bold __ is crazy but^ morF + From ,,sub _italic with en_ aaaaaaa,, morF From $eq to **boldboldboldbo** aaaaaaaaa $ - From ^super t *italic aaaaaaa*aaaaaaaaaaaaaaaaaaaaa - From ~~strike__bbbbbbbbbbbbb__ssssssssssssssssss~~ + From ^super *italic aaaaaaa*aaaaaaaaaaaaaaaaaaaaa + From ~~strik __bbbbbbbbbbbbb__ssssssssssssssssss~~ Execute (Set syntax markdown): call SetSyntax('markdown') diff --git a/test/vimrc b/test/vimrc @@ -268,4 +268,10 @@ return synIDattr(synIDtrans(l:s), 'name') endfun + " Run Assert only if vim version higth enough + function! AssertIfVersion(version, one, two) + if v:version < a:version | return | endif + AssertEqual a:one, a:two + endfunction + " vim: ft=vim:sw=2