1b16720b7b
- Less code, Easyer to maintain, to add a markup language - Faster to load, and to highlight - Support multiline tags: #847 - Support nested tags - Support intraword tags: this<b>bold</b>type #640
415 lines
11 KiB
Plaintext
415 lines
11 KiB
Plaintext
# Syntax and Highlight
|
|
|
|
|
|
# 1 Typeface {{{1
|
|
#################
|
|
|
|
# HTML types {{{2
|
|
# Rememner Bold > Italic > Underline (my convention [Tinmarino])
|
|
|
|
Given vimwiki (Typeface for html 1 like italic):
|
|
<b> ---- this is bold text 1 ---- </b>
|
|
<strong> - this is bold 2 - </strong>
|
|
<i> Italic 1 --cacacacacacacaca-- </i>
|
|
<em> Italic 2 -cacacacacacacaca- </em>
|
|
<u> Underline -cacacacacc acaca- </u>
|
|
|
|
Execute (Set syntax markdown):
|
|
call SetSyntax('markdown')
|
|
|
|
Execute (Assert Syntax for typeface 1):
|
|
AssertEqual 'VimwikiBold' , SyntaxAt(1, 15)
|
|
AssertEqual 'VimwikiBold' , SyntaxAt(2, 15)
|
|
AssertEqual 'VimwikiItalic' , SyntaxAt(3, 15)
|
|
AssertEqual 'VimwikiItalic' , SyntaxAt(4, 15)
|
|
AssertEqual 'VimwikiUnderline' , SyntaxAt(5, 15)
|
|
|
|
Given vimwiki (Typeface for html 2 like italicUnderline):
|
|
<b> bold this is bold<i>bold italic ---------</i> text 1 ---- </b>
|
|
<strong> - this is bo<u>bold underline ------</u>d 2 - </strong>
|
|
<i> Italic 1 --cacaca<b>bold italic----------</b>acacacaca-- </i>
|
|
<em> Italic 2 -cacaca<u>italic underline-----</u>cacacaca- </em>
|
|
<u> Underline -cacaca<b>bold underline-------</b>asacc acaca- </u>
|
|
<u> Underline -cacaca<i>italic underline-----</i>asdacacc acaca- </u>
|
|
|
|
Execute (Assert Syntax for typeface 2):
|
|
AssertEqual 'VimwikiBoldItalic' , GetSyntaxGroup(1, 30)
|
|
AssertEqual 'VimwikiBoldUnderline' , GetSyntaxGroup(2, 30)
|
|
AssertEqual 'VimwikiBoldItalic' , GetSyntaxGroup(3, 30)
|
|
AssertEqual 'VimwikiItalicUnderline', GetSyntaxGroup(4, 30)
|
|
AssertEqual 'VimwikiBoldUnderline' , GetSyntaxGroup(5, 30)
|
|
AssertEqual 'VimwikiItalicUnderline', GetSyntaxGroup(6, 30)
|
|
|
|
Given vimwiki (Typeface for html 3 like boldItalicUnderline):
|
|
<b><i><u> bold italic underline </u></i></b>
|
|
<b><u><i> bold italic underline </i></u></b>
|
|
<i><b><u> bold italic underline </u></b></i>
|
|
<i><u><b> bold italic underline </b></u></i>
|
|
<u><b> <i> bold italic underline </i> </b></u>
|
|
<u><i><b> bold italic underline </b></i></u>
|
|
|
|
Execute (Assert Syntax for typeface 3):
|
|
AssertEqual 'VimwikiBoldItalicUnderline1', GetSyntaxGroup(1, 22).1
|
|
AssertEqual 'VimwikiBoldItalicUnderline2', GetSyntaxGroup(2, 22).2
|
|
AssertEqual 'VimwikiBoldItalicUnderline3', GetSyntaxGroup(3, 22).3
|
|
AssertEqual 'VimwikiBoldItalicUnderline4', GetSyntaxGroup(4, 22).4
|
|
AssertEqual 'VimwikiBoldItalicUnderline5', GetSyntaxGroup(5, 22).5
|
|
AssertEqual 'VimwikiBoldItalicUnderline6', GetSyntaxGroup(6, 22).6
|
|
|
|
# Keyword uppercase {{{2
|
|
|
|
Given vimwiki (TODO, XXX):
|
|
TODO
|
|
DONE
|
|
STARTED
|
|
FIXME
|
|
FIXED
|
|
XXX
|
|
|
|
Execute (Assert Syntax VimwikiTodo):
|
|
AssertEqual SyntaxAt(1, 1), 'VimwikiTodo'
|
|
AssertEqual SyntaxAt(2, 1), 'VimwikiTodo'
|
|
AssertEqual SyntaxAt(3, 1), 'VimwikiTodo'
|
|
AssertEqual SyntaxAt(4, 1), 'VimwikiTodo'
|
|
AssertEqual SyntaxAt(5, 1), 'VimwikiTodo'
|
|
AssertEqual SyntaxAt(6, 1), 'VimwikiTodo'
|
|
|
|
# Mardown types {{{2
|
|
|
|
Given vimwiki (Typeface for markdown like italic):
|
|
**bold text 1**
|
|
__bold text 2__
|
|
*italic text 1*
|
|
_italic text 2_
|
|
***bold italic text 1***
|
|
___bold italic text 2___
|
|
~~strikeout text~~
|
|
`code (no syntax) text`
|
|
sp^script^
|
|
sb,,script,,
|
|
|
|
Execute (Set syntax markdown):
|
|
call SetSyntax('markdown')
|
|
|
|
Execute (Assert Syntax for typeface):
|
|
AssertEqual 'VimwikiBold' , SyntaxAt(1, 4)
|
|
AssertEqual 'VimwikiBold' , SyntaxAt(2, 4)
|
|
AssertEqual 'VimwikiItalic' , SyntaxAt(3, 4)
|
|
AssertEqual 'VimwikiItalic' , SyntaxAt(4, 4)
|
|
AssertEqual 'VimwikiBoldItalic' , SyntaxAt(5, 4)
|
|
AssertEqual 'VimwikiBoldItalic' , SyntaxAt(6, 4)
|
|
AssertEqual 'VimwikiDelText' , SyntaxAt(7, 4)
|
|
AssertEqual 'VimwikiCode' , SyntaxAt(8, 4)
|
|
AssertEqual 'VimwikiSuperScript' , SyntaxAt(9, 4)
|
|
AssertEqual 'VimwikiSubScript' , SyntaxAt(10, 4)
|
|
|
|
|
|
# 2 Links {{{1
|
|
#################
|
|
|
|
Given vimwiki (Wiki Links):
|
|
Plain link: >
|
|
[[This is a link]]
|
|
With description: >
|
|
[[This is a link source|Description of the link]]
|
|
Interwiki1: >
|
|
[[wiki1:This is a link]]
|
|
Interwiki2: >
|
|
[[wn.My Name:This is a link]]
|
|
Interwiki3: >
|
|
[[wn.MyWiki:This is a link source|Description of the link]]
|
|
Diary: >
|
|
[[diary:2012-03-05]]
|
|
Anchor1: >
|
|
[[Todo List#Tomorrow|Tasks for tomorrow]]
|
|
Anchor2: >
|
|
[[#Tomorrow]]
|
|
Raw1: >
|
|
https://github.com/vimwiki/vimwiki.git
|
|
Raw2: >
|
|
mailto:habamax@gmail.com
|
|
Raw3: >
|
|
ftp://vim.org
|
|
File1: >
|
|
[[file:/home/somebody/a/b/c/music.mp3]]
|
|
File2: >
|
|
[[file:C:/Users/somebody/d/e/f/music.mp3]]
|
|
File3: >
|
|
[[file:~/a/b/c/music.mp3]]
|
|
File4: >
|
|
[[file:../assets/data.csv|Important Data]]
|
|
File5: >
|
|
[[local:C:/Users/somebody/d/e/f/music.mp3]]
|
|
File6: >
|
|
[[file:/home/user/documents/|Link to a directory]]
|
|
Thumbnail links: >
|
|
[[http://someaddr.com/bigpicture.jpg|{{http://someaddr.com/thumbnail.jpg}}]]
|
|
|
|
Execute (Assert Syntax link):
|
|
AssertEqual SyntaxAt(2, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(4, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(6, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(8, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(10, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(12, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(14, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(16, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(18, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(20, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(22, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(24, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(26, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(28, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(30, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(32, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(34, 6), 'VimwikiLink'
|
|
AssertEqual SyntaxAt(36, 6), 'VimwikiLink'
|
|
|
|
Given vimwiki (Markdown Links):
|
|
Inline link: >
|
|
[Looks like this](URL)
|
|
|
|
Image link: >
|
|
![Looks like this](URL)
|
|
|
|
Reference-style links: >
|
|
a) [Link Name][Id]
|
|
b) [Id][], using the "implicit link name" shortcut
|
|
|
|
Execute (Set syntax markdown):
|
|
call SetSyntax('markdown')
|
|
|
|
Execute (Assert Syntax link):
|
|
AssertEqual SyntaxAt(2, 8), 'VimwikiWeblink1'
|
|
AssertEqual SyntaxAt(5, 8), 'VimwikiImage'
|
|
AssertEqual SyntaxAt(8, 8), 'VimwikiWikiLink1'
|
|
AssertEqual SyntaxAt(9, 8), 'VimwikiWikiLink1'
|
|
|
|
|
|
# 3 Header {{{1
|
|
###############
|
|
|
|
Given vimwiki (Wiki Headers):
|
|
= Header level 1 =
|
|
== Header level 2 ==
|
|
=== Header level 3 ===
|
|
==== Header level 4 ====
|
|
===== Header level 5 =====
|
|
====== Header level 6 ======
|
|
|
|
Execute (Set syntax default):
|
|
call SetSyntax('default')
|
|
|
|
Execute (Assert Syntax Header):
|
|
AssertEqual SyntaxAt(1, 10), 'VimwikiHeader1'
|
|
AssertEqual SyntaxAt(2, 10), 'VimwikiHeader2'
|
|
AssertEqual SyntaxAt(3, 10), 'VimwikiHeader3'
|
|
AssertEqual SyntaxAt(4, 10), 'VimwikiHeader4'
|
|
AssertEqual SyntaxAt(5, 10), 'VimwikiHeader5'
|
|
AssertEqual SyntaxAt(6, 10), 'VimwikiHeader6'
|
|
|
|
Given vimwiki (Markdown Headers):
|
|
# Header level 1
|
|
## Header level 2
|
|
### Header level 3
|
|
#### Header level 4
|
|
##### Header level 5
|
|
###### Header level 6
|
|
|
|
Execute (Set syntax markdown):
|
|
call SetSyntax('markdown')
|
|
|
|
Execute (Assert Syntax Header):
|
|
AssertEqual SyntaxAt(1, 10), 'VimwikiHeader1'
|
|
AssertEqual SyntaxAt(2, 10), 'VimwikiHeader2'
|
|
AssertEqual SyntaxAt(3, 10), 'VimwikiHeader3'
|
|
AssertEqual SyntaxAt(4, 10), 'VimwikiHeader4'
|
|
AssertEqual SyntaxAt(5, 10), 'VimwikiHeader5'
|
|
AssertEqual SyntaxAt(6, 10), 'VimwikiHeader6'
|
|
|
|
# 10 Comments {{{1
|
|
###############
|
|
|
|
Given vimwiki (%%):
|
|
%% This is a line comment
|
|
%% This is also a comment
|
|
|
|
Execute (Set syntax default):
|
|
call SetSyntax('default')
|
|
|
|
Execute (Assert Syntax VimwikiComment):
|
|
AssertEqual SyntaxAt(1, 1), 'VimwikiComment'
|
|
AssertEqual SyntaxAt(2, 4), 'VimwikiComment'
|
|
|
|
Given vimwiki (%%+, +%%):
|
|
%%+ This
|
|
is a
|
|
multiline
|
|
comment +%%
|
|
%%+ This is a comment on one line +%%
|
|
%%+ One +%% Not a comment %%+ Two +%% Not a comment
|
|
|
|
Execute (Set syntax default):
|
|
call SetSyntax('default')
|
|
|
|
Execute (Assert Syntax VimwikiMultilineComment):
|
|
AssertEqual SyntaxAt(1, 1), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(1, 8), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(2, 1), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(3, 1), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(4, 1), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(5, 1), 'VimwikiMultilineComment'
|
|
|
|
AssertEqual SyntaxAt(6, 1), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(6, 11), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(6, 12), ''
|
|
AssertEqual SyntaxAt(6, 26), ''
|
|
AssertEqual SyntaxAt(6, 27), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(6, 37), 'VimwikiMultilineComment'
|
|
AssertEqual SyntaxAt(6, 38), ''
|
|
AssertEqual SyntaxAt(6, 51), ''
|
|
|
|
# 10 Code {{{1
|
|
# 10.1 Code Indent (4 spaces) {{{2
|
|
#################################
|
|
|
|
Given vimwiki (Code indent):
|
|
this is markdown
|
|
this is code
|
|
|
|
Execute (Assert Syntax normal (i.e. no hi)):
|
|
AssertEqual SyntaxAt(1, 5), ''
|
|
AssertEqual SyntaxAt(2, 5), ''
|
|
|
|
|
|
# 10.2 Code Inline (1 backtick) {{{2
|
|
###################################
|
|
|
|
Given vimwiki (Code inline):
|
|
Well use the `man`
|
|
|
|
Execute (Assert Syntax Code):
|
|
AssertEqual SyntaxAt(1, 16), 'VimwikiCode'
|
|
|
|
|
|
# 10.3 Code Block (3 backtiks) {{{2
|
|
##################################
|
|
|
|
Given vimwiki (Markdown, Text and Vim):
|
|
this is markdown
|
|
this is TODO
|
|
|
|
```
|
|
this is text
|
|
```
|
|
|
|
```vim
|
|
" this is vim
|
|
set hlsearch
|
|
```
|
|
|
|
`````vim
|
|
" this is vim
|
|
set hlsearch
|
|
`````
|
|
|
|
~~~vim
|
|
" this is vim
|
|
set hlsearch
|
|
~~~
|
|
|
|
~~~~~vim
|
|
" this is vim
|
|
set hlsearch
|
|
~~~~~~~~~~~
|
|
|
|
Execute (Set syntax markdown):
|
|
let g:vimwiki_global_vars['vimwiki_automatic_nested_syntaxes'] = 1
|
|
call SetSyntax('markdown')
|
|
|
|
Execute (Assert ft, normal syntax and VimwikiTodo):
|
|
AssertEqual &ft, 'vimwiki'
|
|
AssertEqual SyntaxAt(1, 1), ''
|
|
AssertEqual SyntaxAt(2, 9), 'VimwikiTodo'
|
|
|
|
Execute (Assert Code syntax):
|
|
AssertEqual SyntaxAt(4, 1), 'VimwikiPreDelim'
|
|
AssertEqual SyntaxAt(5, 1), 'VimwikiPre'
|
|
AssertEqual SyntaxAt(9, 1), 'vimLineComment'
|
|
AssertEqual SyntaxAt(10, 1), 'vimCommand'
|
|
AssertEqual SyntaxAt(13, 1), 'VimwikiPre'
|
|
AssertEqual SyntaxAt(14, 1), 'vimLineComment'
|
|
AssertEqual SyntaxAt(15, 1), 'vimCommand'
|
|
AssertEqual SyntaxAt(16, 1), 'VimwikiPre'
|
|
AssertEqual SyntaxAt(18, 1), 'VimwikiPre'
|
|
AssertEqual SyntaxAt(19, 1), 'vimLineComment'
|
|
AssertEqual SyntaxAt(20, 1), 'vimCommand'
|
|
AssertEqual SyntaxAt(21, 1), 'VimwikiPre'
|
|
AssertEqual SyntaxAt(23, 1), 'VimwikiPre'
|
|
AssertEqual SyntaxAt(24, 1), 'vimLineComment'
|
|
AssertEqual SyntaxAt(25, 1), 'vimCommand'
|
|
AssertEqual SyntaxAt(26, 1), 'VimwikiPre'
|
|
|
|
|
|
# 11 Math {{{1
|
|
# 11.1 Math Markdown {{{2
|
|
#######################
|
|
|
|
Given vimwiki (Math markdown):
|
|
math inline: $ \sum_i a_i^2 = 1 $
|
|
|
|
math block:
|
|
$$
|
|
\sum_i a_i^2
|
|
=
|
|
1
|
|
$$
|
|
|
|
math block env:
|
|
$$%align%
|
|
\sum_i a_i^2 &= 1 + 1 \\
|
|
&= 2.
|
|
$$
|
|
|
|
Execute (Set syntax markdown):
|
|
call SetSyntax('markdown')
|
|
|
|
Execute (Assert math syntax):
|
|
AssertEqual SyntaxAt(1, 18), 'VimwikiEqIn'
|
|
let syntax_5 = SyntaxAt(5, 1)
|
|
Assert syntax_5 == 'texStatement' || syntax_5 == 'texMathSymbol'
|
|
let syntax_12 = SyntaxAt(12, 1)
|
|
Assert syntax_12 == 'texStatement' || syntax_5 == 'texMathSymbol'
|
|
|
|
|
|
# 11.2 Math Wiki {{{2
|
|
##############################
|
|
|
|
Given vimwiki (Math wiki):
|
|
math inline: $ \sum_i a_i^2 = 1 $
|
|
|
|
math block:
|
|
{{$
|
|
\sum_i a_i^2
|
|
=
|
|
1
|
|
}}$
|
|
|
|
math block env:
|
|
{{$%align%
|
|
\sum_i a_i^2 &= 1 + 1 \\
|
|
&= 2.
|
|
}}$
|
|
|
|
Execute (Set syntax default):
|
|
call SetSyntax('default')
|
|
|
|
Execute (Assert math syntax):
|
|
AssertEqual SyntaxAt(1, 18), 'VimwikiEqIn'
|
|
let syntax_5 = SyntaxAt(5, 1)
|
|
Assert syntax_5 == 'texStatement' || syntax_5 == 'texMathSymbol'
|
|
let syntax_12 = SyntaxAt(12, 1)
|
|
Assert syntax_12 == 'texStatement' || syntax_5 == 'texMathSymbol'
|
|
|
|
# vim: foldmethod=marker foldlevel=30 sw=2
|