Feature: VimwikiVar to list, get and set variables
Refaction: - Add g:vimwiki_syntax_list to set syntaxlocal variables - Delete: syntax/vimwiki_markdown.vim and friends - Change: vimwiki_syntax_variables -> vimwiki_syntaxlocal_vars for consistency - Include: some doc in design notes
This commit is contained in:
@@ -21,43 +21,13 @@ let b:vimwiki_syntax_concealends = has('conceal') ? ' concealends' : ''
|
||||
" Populate all syntax vars
|
||||
" Include syntax/vimwiki_markdown.vim as "side effect"
|
||||
call vimwiki#vars#populate_syntax_vars(s:current_syntax)
|
||||
let syntax_dic = g:vimwiki_syntax_variables[s:current_syntax]
|
||||
let syntax_dic = g:vimwiki_syntaxlocal_vars[s:current_syntax]
|
||||
|
||||
" Declare nesting capabilities
|
||||
" -- to be embeded in standard: bold, italic, underline
|
||||
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
|
||||
|
||||
" text: `code` or ``code`` only inline
|
||||
" Note: `\%(^\|[^`]\)\@<=` means after a new line or a non `
|
||||
let syntax_dic.dTypeface.code = [
|
||||
\ ['\%(^\|[^`]\)\@<=`\%($\|[^`]\)\@=',
|
||||
\ '\%(^\|[^`]\)\@<=`\%($\|[^`]\)\@='],
|
||||
\ ['\%(^\|[^`]\)\@<=``\%($\|[^`]\)\@=',
|
||||
\ '\%(^\|[^`]\)\@<=``\%($\|[^`]\)\@='],
|
||||
\ ]
|
||||
|
||||
" text: ~~deleted text~~
|
||||
let syntax_dic.dTypeface.del = ([
|
||||
\ ['\~\~', '\~\~']])
|
||||
|
||||
" text: ^superscript^
|
||||
let syntax_dic.dTypeface.sup = ([
|
||||
\ ['\^', '\^']])
|
||||
|
||||
" text: ,,subscript,,
|
||||
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
|
||||
@@ -236,7 +206,7 @@ execute 'syn match VimwikiLinkChar /'.vimwiki#vars#get_global('rxWikiInclSuffix1
|
||||
|
||||
" non concealed chars
|
||||
execute 'syn match VimwikiHeaderChar contained /\%(^\s*'.
|
||||
\ vimwiki#vars#get_syntaxlocal('rxH').'\+\)\|\%('.vimwiki#vars#get_syntaxlocal('rxH').
|
||||
\ vimwiki#vars#get_syntaxlocal('header_symbol').'\+\)\|\%('.vimwiki#vars#get_syntaxlocal('header_symbol').
|
||||
\ '\+\s*$\)/'
|
||||
|
||||
|
||||
@@ -308,10 +278,32 @@ syntax match VimwikiPlaceholderParam /.*/ contained
|
||||
|
||||
" Html Tag: <u>
|
||||
if vimwiki#vars#get_global('valid_html_tags') !=? ''
|
||||
" Include: Source html file here
|
||||
execute 'source ' . expand('<sfile>:h') . '/vimwiki_html.vim'
|
||||
let s:html_tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|')
|
||||
exe 'syntax match VimwikiHTMLtag #\c</\?\%('.s:html_tags.'\)\%(\s\{-1}\S\{-}\)\{-}\s*/\?>#'
|
||||
|
||||
" Typeface:
|
||||
let html_typeface = {
|
||||
\ 'bold': [['<b>', '</b\_s*>'], ['<strong>', '</strong\_s*>']],
|
||||
\ 'italic': [['<i>', '</i\_s*>'], ['<em>', '</em\_s*>']],
|
||||
\ 'underline': [['<u>', '</u\_s*>']],
|
||||
\ 'code': [['<code>', '</code\_s*>']],
|
||||
\ 'del': [['<del>', '</del\_s*>']],
|
||||
\ 'eq': [],
|
||||
\ 'sup': [['<sup>', '</sup\_s*>']],
|
||||
\ 'sub': [['<sub>', '</sub\_s*>']],
|
||||
\ }
|
||||
call vimwiki#u#hi_typeface(html_typeface)
|
||||
endif
|
||||
|
||||
" Comment: home made
|
||||
execute 'syntax match VimwikiComment /'.vimwiki#vars#get_syntaxlocal('comment_regex').
|
||||
\ '/ contains=@Spell,VimwikiTodo'
|
||||
" Only do syntax highlighting for multiline comments if they exist
|
||||
let mc_format = vimwiki#vars#get_syntaxlocal('multiline_comment_format')
|
||||
if !empty(mc_format.pre_mark) && !empty(mc_format.post_mark)
|
||||
execute 'syntax region VimwikiMultilineComment start=/'.mc_format.pre_mark.
|
||||
\ '/ end=/'.mc_format.post_mark.'/ contains=@NoSpell,VimwikiTodo'
|
||||
endif
|
||||
|
||||
" Tag:
|
||||
let tag_cmd = 'syntax match VimwikiTag /'.vimwiki#vars#get_syntaxlocal('rxTags').'/'
|
||||
@@ -343,7 +335,7 @@ endif
|
||||
|
||||
|
||||
" Typeface: -> u.vim
|
||||
let s:typeface_dic = vimwiki#vars#get_syntaxlocal('dTypeface')
|
||||
let s:typeface_dic = vimwiki#vars#get_syntaxlocal('typeface')
|
||||
call vimwiki#u#hi_typeface(s:typeface_dic)
|
||||
|
||||
|
||||
@@ -500,7 +492,7 @@ call vimwiki#base#nested_syntax('tex',
|
||||
\ vimwiki#vars#get_syntaxlocal('rxMathEnd'), 'VimwikiMath')
|
||||
|
||||
" LaTeX: Inline
|
||||
for u in syntax_dic.dTypeface.eq
|
||||
for u in syntax_dic.typeface.eq
|
||||
execute 'syntax region textSniptex matchgroup=texSnip'
|
||||
\ . ' start="'.u[0].'" end="'.u[1].'"'
|
||||
\ . ' contains=@texMathZoneGroup'
|
||||
|
@@ -1,74 +0,0 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Description: Defines default syntax
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" s:default_syntax is kind of a reference to the dict in
|
||||
" g:vimwiki_syntax_variables['default']. It is used here simply as an
|
||||
" abbreviation for the latter.
|
||||
let s:default_syntax = g:vimwiki_syntax_variables['default']
|
||||
|
||||
|
||||
" TODO mutualise
|
||||
" Get config: possibly concealed chars
|
||||
let b:vimwiki_syntax_conceal = exists('+conceallevel') ? ' conceal' : ''
|
||||
let b:vimwiki_syntax_concealends = has('conceal') ? ' concealends' : ''
|
||||
|
||||
" text: *strong*
|
||||
let s:default_syntax.dTypeface.bold = vimwiki#u#hi_expand_regex([
|
||||
\ ['\*', '\*']])
|
||||
|
||||
" text: _italic_
|
||||
let s:default_syntax.dTypeface.italic = vimwiki#u#hi_expand_regex([
|
||||
\ ['_', '_']])
|
||||
|
||||
" text: no underline defined
|
||||
let s:default_syntax.dTypeface.underline = []
|
||||
|
||||
" text: *_bold italic_* or _*italic bold*_
|
||||
let s:default_syntax.dTypeface.bold_italic = vimwiki#u#hi_expand_regex([
|
||||
\ ['\*_', '_\*'], ['_\*', '\*_']])
|
||||
|
||||
" generic headers
|
||||
let s:default_syntax.rxH = '='
|
||||
let s:default_syntax.symH = 1
|
||||
|
||||
|
||||
|
||||
" <hr>, horizontal rule
|
||||
let s:default_syntax.rxHR = '^-----*$'
|
||||
|
||||
" Tables. Each line starts and ends with '|'; each cell is separated by '|'
|
||||
let s:default_syntax.rxTableSep = '|'
|
||||
|
||||
" Lists
|
||||
let s:default_syntax.bullet_types = ['-', '*', '#']
|
||||
" 1 means the bullets can be repeatet to indicate the level, like * ** ***
|
||||
" 0 means the bullets stand on their own and the level is indicated by the indentation
|
||||
let s:default_syntax.recurring_bullets = 0
|
||||
let s:default_syntax.number_types = ['1)', '1.', 'i)', 'I)', 'a)', 'A)']
|
||||
"this should contain at least one element
|
||||
"it is used for i_<C-L><C-J> among other things
|
||||
let s:default_syntax.list_markers = ['-', '1.', '*', 'I)', 'a)']
|
||||
let s:default_syntax.rxListDefine = '::\(\s\|$\)'
|
||||
|
||||
" Preformatted text
|
||||
let s:default_syntax.rxPreStart = '{{{'
|
||||
let s:default_syntax.rxPreEnd = '}}}'
|
||||
|
||||
" Math block
|
||||
let s:default_syntax.rxMathStart = '{{\$'
|
||||
let s:default_syntax.rxMathEnd = '}}\$'
|
||||
|
||||
let s:default_syntax.rxMultilineCommentStart = '%%+'
|
||||
let s:default_syntax.rxMultilineCommentEnd = '+%%'
|
||||
let s:default_syntax.rxComment = '^\s*%%.*$'
|
||||
|
||||
let s:default_syntax.header_search = '^\s*\(=\{1,6}\)\([^=].*[^=]\)\1\s*$'
|
||||
let s:default_syntax.header_match = '^\s*\(=\{1,6}\)=\@!\s*__Header__\s*\1=\@!\s*$'
|
||||
let s:default_syntax.bold_search = '\%(^\|\s\|[[:punct:]]\)\@<=\*\zs\%([^*`[:space:]][^*`]*'.
|
||||
\ '[^*`[:space:]]\|[^*`[:space:]]\)\ze\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:default_syntax.bold_match = '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*'.
|
||||
\ '\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:default_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]'
|
@@ -1,39 +0,0 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
" Description: Defines html syntax
|
||||
" Loaded: conditionaly by syntax/vimwiki.vim
|
||||
" Copied from $VIMRUNTIME
|
||||
" Note: The me=s-1 was omited from the region definition
|
||||
" See: `syn region VimwikiBoldUnderlineItalic contained start="<i\>" end="</i\_s*>"me=s-1 contains=VimwikiHTMLTag...`
|
||||
" Note: Not configurable
|
||||
|
||||
let s:html_tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|')
|
||||
exe 'syntax match VimwikiHTMLtag #\c</\?\%('.s:html_tags.'\)\%(\s\{-1}\S\{-}\)\{-}\s*/\?>#'
|
||||
|
||||
|
||||
" Typeface:
|
||||
let html_typeface = {
|
||||
\ 'bold': [['<b>', '</b\_s*>'], ['<strong>', '</strong\_s*>']],
|
||||
\ 'italic': [['<i>', '</i\_s*>'], ['<em>', '</em\_s*>']],
|
||||
\ 'underline': [['<u>', '</u\_s*>']],
|
||||
\ 'code': [['<code>', '</code\_s*>']],
|
||||
\ 'del': [['<del>', '</del\_s*>']],
|
||||
\ 'eq': [],
|
||||
\ 'sup': [['<sup>', '</sup\_s*>']],
|
||||
\ 'sub': [['<sub>', '</sub\_s*>']],
|
||||
\ }
|
||||
call vimwiki#u#hi_typeface(html_typeface)
|
||||
|
||||
|
||||
" Comment: home made
|
||||
execute 'syntax match VimwikiComment /'.vimwiki#vars#get_syntaxlocal('rxComment').
|
||||
\ '/ contains=@Spell,VimwikiTodo'
|
||||
|
||||
" Only do syntax highlighting for multiline comments if they exist
|
||||
let s:mc_start = vimwiki#vars#get_syntaxlocal('rxMultilineCommentStart')
|
||||
let s:mc_end = vimwiki#vars#get_syntaxlocal('rxMultilineCommentEnd')
|
||||
if !empty(s:mc_start) && !empty(s:mc_end)
|
||||
execute 'syntax region VimwikiMultilineComment start=/'.s:mc_start.
|
||||
\ '/ end=/'.s:mc_end.'/ contains=@NoSpell,VimwikiTodo'
|
||||
endif
|
@@ -1,88 +0,0 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
" Description: Defines markdown syntax
|
||||
" Called: vars.vim => Many other (common) variables are defined there
|
||||
" More in u.vim, base.vim (nested_syntax for multiline code)
|
||||
|
||||
let s:markdown_syntax = g:vimwiki_syntax_variables['markdown']
|
||||
|
||||
|
||||
" TODO mutualise
|
||||
" Get config: possibly concealed chars
|
||||
let b:vimwiki_syntax_conceal = exists('+conceallevel') ? ' conceal' : ''
|
||||
let b:vimwiki_syntax_concealends = has('conceal') ? ' concealends' : ''
|
||||
|
||||
|
||||
" text: **bold** or __bold__
|
||||
let s:markdown_syntax.dTypeface.bold = vimwiki#u#hi_expand_regex([
|
||||
\ ['__', '__'], ['\*\*', '\*\*']])
|
||||
|
||||
" text: *italic* or _italic_
|
||||
let s:markdown_syntax.dTypeface.italic = vimwiki#u#hi_expand_regex([
|
||||
\ ['\*', '\*'], ['_', '_']])
|
||||
|
||||
" text: no underline defined
|
||||
let s:markdown_syntax.dTypeface.underline = []
|
||||
|
||||
" text: *_bold italic_* or _*italic bold*_ or ___bi___ or ***bi***
|
||||
let s:markdown_syntax.dTypeface.bold_italic = vimwiki#u#hi_expand_regex([
|
||||
\ ['\*_', '_\*'], ['_\*', '\*_'], ['\*\*\*', '\*\*\*'], ['___', '___']])
|
||||
|
||||
|
||||
" generic headers
|
||||
let s:markdown_syntax.rxH = '#'
|
||||
let s:markdown_syntax.symH = 0
|
||||
|
||||
" <hr>, horizontal rule
|
||||
let s:markdown_syntax.rxHR = '\(^---*$\|^___*$\|^\*\*\**$\)'
|
||||
|
||||
" Tables. Each line starts and ends with '|'; each cell is separated by '|'
|
||||
let s:markdown_syntax.rxTableSep = '|'
|
||||
|
||||
" Lists
|
||||
let s:markdown_syntax.recurring_bullets = 0
|
||||
let s:markdown_syntax.number_types = ['1.']
|
||||
let s:markdown_syntax.list_markers = ['-', '*', '+', '1.']
|
||||
let s:markdown_syntax.rxListDefine = '::\%(\s\|$\)'
|
||||
let s:markdown_syntax.bullet_types = ['*', '-', '+']
|
||||
|
||||
" Preformatted text (code blocks)
|
||||
let s:markdown_syntax.rxPreStart = '\%(`\{3,}\|\~\{3,}\)'
|
||||
let s:markdown_syntax.rxPreEnd = '\%(`\{3,}\|\~\{3,}\)'
|
||||
" TODO see syntax/vimwiki_markdown_custom.vim for more info
|
||||
" let s:markdown_syntax.rxIndentedCodeBlock = '\%(^\n\)\@1<=\%(\%(\s\{4,}\|\t\+\).*\n\)\+'
|
||||
|
||||
" Math block
|
||||
let s:markdown_syntax.rxMathStart = '\$\$'
|
||||
let s:markdown_syntax.rxMathEnd = '\$\$'
|
||||
|
||||
" NOTE: There is no multi-line comment syntax for Markdown
|
||||
let s:markdown_syntax.rxMultilineCommentStart = ''
|
||||
let s:markdown_syntax.rxMultilineCommentEnd = ''
|
||||
let s:markdown_syntax.rxComment = '^\s*%%.*$\|<!--[^>]*-->'
|
||||
|
||||
|
||||
" Used in code (base.vim)
|
||||
"""""""""""""""""""""""""
|
||||
|
||||
" Header
|
||||
" TODO mutualise with rxHeader in vars.vim := Define atx_regex only onces
|
||||
" TODO regex_or function => (1|2)
|
||||
let atx_header_search = '^\s*\(#\{1,6}\)\([^#].*\)$'
|
||||
let atx_header_match = '^\s*\(#\{1,6}\)#\@!\s*__Header__\s*$'
|
||||
|
||||
let setex_header_search = '^\s\{0,3}\zs[^>].*\ze\n'
|
||||
let setex_header_search .= '^\s\{0,3}[=-]\{2,}$'
|
||||
|
||||
let setex_header_match = '^\s\{0,3}>\@!__Header__\n'
|
||||
let setex_header_match .= '^\s\{0,3}[=-][=-]\+$'
|
||||
|
||||
let s:markdown_syntax.header_search = '\%(' . atx_header_search . '\|' . setex_header_search . '\)'
|
||||
let s:markdown_syntax.header_match = '\%(' . atx_header_match . '\|' . setex_header_match . '\)'
|
||||
|
||||
let s:markdown_syntax.bold_search = '\%(^\|\s\|[[:punct:]]\)\@<=\*\zs'.
|
||||
\ '\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)\ze\*\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:markdown_syntax.bold_match = '\%(^\|\s\|[[:punct:]]\)\@<=\*__Text__\*'.
|
||||
\ '\%([[:punct:]]\|\s\|$\)\@='
|
||||
let s:markdown_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]'
|
@@ -1,68 +0,0 @@
|
||||
" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99
|
||||
" Vimwiki syntax file
|
||||
" Description: Defines mediaWiki syntax
|
||||
" Home: https://github.com/vimwiki/vimwiki/
|
||||
|
||||
|
||||
" see the comments in vimwiki_default.vim for some info about this file
|
||||
|
||||
|
||||
let s:media_syntax = g:vimwiki_syntax_variables['media']
|
||||
|
||||
" text: '''strong'''
|
||||
let s:media_syntax.dTypeface['bold'] = [
|
||||
\ ['\S\@<=''''''\|''''''\S\@=', '\S\@<=''''''\|''''''\S\@='],
|
||||
\ ]
|
||||
|
||||
" text: ''italic''
|
||||
let s:media_syntax.dTypeface['italic'] = [
|
||||
\ ['\S\@<=''''\|''''\S\@=', '\S\@<=''''\|''''\S\@='],
|
||||
\ ]
|
||||
|
||||
" text: no underline defined
|
||||
let s:media_syntax.dTypeface['underline'] = []
|
||||
|
||||
" text: '''''strong italic'''''
|
||||
let s:media_syntax.dTypeface['bold_italic'] = [
|
||||
\ ['\S\@<=''''''''''\|''''''''''\S\@=', '\S\@<=''''''''''\|''''''''''\S\@='],
|
||||
\ ]
|
||||
|
||||
|
||||
" generic headers
|
||||
let s:media_syntax.rxH = '='
|
||||
let s:media_syntax.symH = 1
|
||||
|
||||
|
||||
" <hr>, horizontal rule
|
||||
let s:media_syntax.rxHR = '^-----*$'
|
||||
|
||||
" Tables. Each line starts and ends with '|'; each cell is separated by '|'
|
||||
let s:media_syntax.rxTableSep = '|'
|
||||
|
||||
" Lists
|
||||
let s:media_syntax.bullet_types = ['*', '#']
|
||||
let s:media_syntax.recurring_bullets = 1
|
||||
let s:media_syntax.number_types = []
|
||||
let s:media_syntax.list_markers = ['*', '#']
|
||||
let s:media_syntax.rxListDefine = '^\%(;\|:\)\s'
|
||||
|
||||
" Preformatted text
|
||||
let s:media_syntax.rxPreStart = '<pre>'
|
||||
let s:media_syntax.rxPreEnd = '<\/pre>'
|
||||
|
||||
" Math block
|
||||
let s:media_syntax.rxMathStart = '{{\$'
|
||||
let s:media_syntax.rxMathEnd = '}}\$'
|
||||
|
||||
" NOTE: There is no multi-line comment syntax for MediaWiki
|
||||
let s:media_syntax.rxMultilineCommentStart = ''
|
||||
let s:media_syntax.rxMultilineCommentEnd = ''
|
||||
let s:media_syntax.rxComment = '^\s*%%.*$'
|
||||
|
||||
let s:media_syntax.header_search = '^\s*\(=\{1,6}\)\([^=].*[^=]\)\1\s*$'
|
||||
let s:media_syntax.header_match = '^\s*\(=\{1,6}\)=\@!\s*__Header__\s*\1=\@!\s*$'
|
||||
let s:media_syntax.bold_search = "'''\\zs[^']\\+\\ze'''"
|
||||
let s:media_syntax.bold_match = '''''''__Text__'''''''
|
||||
" ^- this strange looking thing is equivalent to "'''__Text__'''" but since we later
|
||||
" want to call escape() on this string, we must keep it in single quotes
|
||||
let s:media_syntax.wikilink = '\[\[\zs[^\\\]|]\+\ze\%(|[^\\\]]\+\)\?\]\]'
|
Reference in New Issue
Block a user