Fix: Typeface font highlight VimwikiBoldItalicUnderline was not bold
Fix 2: s:setup_cleared_syntax() was reconfiguring badly Test: for hi VimwikiBold -> cterm=bold
This commit is contained in:
@@ -189,7 +189,7 @@ endfunction
|
||||
|
||||
|
||||
function! s:populate_global_variables() abort
|
||||
" Populate global variable <- user & default
|
||||
" Populate: global variable <- user & default
|
||||
" Called: s:vimwiki#vars#init
|
||||
call s:read_global_settings_from_user()
|
||||
call s:normalize_global_settings()
|
||||
@@ -198,25 +198,32 @@ endfunction
|
||||
|
||||
|
||||
function! s:internal_global_settings() abort
|
||||
" Read nromalized settings and create some more usefull variables to use internally
|
||||
" Declare: normalized settings -> more usefull variables to use internally
|
||||
" non-configurable global variables:
|
||||
|
||||
" Scheme regexes must be defined even if syntax file is not loaded yet cause users should be
|
||||
" able to <leader>w<leader>w without opening any vimwiki file first
|
||||
|
||||
" Know internal schemes
|
||||
let g:vimwiki_global_vars.schemes = join(['wiki\d\+', 'diary', 'local'], '\|')
|
||||
|
||||
" Are used in markdown for image links
|
||||
let g:vimwiki_global_vars.web_schemes1 = join(['http', 'https', 'file', 'ftp', 'gopher',
|
||||
\ 'telnet', 'nntp', 'ldap', 'rsync', 'imap', 'pop', 'irc', 'ircs', 'cvs', 'svn', 'svn+ssh',
|
||||
\ 'git', 'ssh', 'fish', 'sftp'], '\|')
|
||||
|
||||
" Other possible schemes
|
||||
let web_schemes2 =
|
||||
\ join(['mailto', 'news', 'xmpp', 'sip', 'sips', 'doi', 'urn', 'tel', 'data'], '\|')
|
||||
|
||||
" Concatenate known schemes => regex
|
||||
let g:vimwiki_global_vars.rxSchemes = '\%('.
|
||||
\ g:vimwiki_global_vars.schemes . '\|'.
|
||||
\ g:vimwiki_global_vars.web_schemes1 . '\|'.
|
||||
\ web_schemes2 .
|
||||
\ '\)'
|
||||
|
||||
" match URL for common protocols; see http://en.wikipedia.org/wiki/URI_scheme
|
||||
" Match URL for common protocols; see http://en.wikipedia.org/wiki/URI_scheme
|
||||
" http://tools.ietf.org/html/rfc3986
|
||||
let rxWebProtocols =
|
||||
\ '\%('.
|
||||
@@ -227,7 +234,6 @@ function! s:internal_global_settings() abort
|
||||
\ '\|'.
|
||||
\ '\%('.web_schemes2.'\):'.
|
||||
\ '\)'
|
||||
|
||||
let g:vimwiki_global_vars.rxWeblinkUrl = rxWebProtocols . '\S\{-1,}'. '\%(([^ \t()]*)\)\='
|
||||
|
||||
let wikilink_prefix = '[['
|
||||
|
||||
+5
-5
@@ -1150,24 +1150,24 @@ The primary purpose for wiki-include links is to include images.
|
||||
Transclude from a local URL: >
|
||||
{{file:../../images/vimwiki_logo.png}}
|
||||
or from a universal URL: >
|
||||
{{http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png}}
|
||||
{{https://raw.githubusercontent.com/vimwiki/vimwiki/master/doc/splash.png}}
|
||||
|
||||
Transclude image with alternate text: >
|
||||
{{http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png|Vimwiki}}
|
||||
{{https://raw.githubusercontent.com/vimwiki/vimwiki/master/doc/splash.png|Vimwiki}}
|
||||
in HTML: >
|
||||
<img src="http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png"
|
||||
<img src="https://raw.githubusercontent.com/vimwiki/vimwiki/master/doc/splash.png"
|
||||
alt="Vimwiki"/>
|
||||
|
||||
Transclude image with alternate text and some style: >
|
||||
{{http://.../vimwiki_logo.png|cool stuff|style="width:150px;height:120px;"}}
|
||||
in HTML: >
|
||||
<img src="http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png"
|
||||
<img src="https://raw.githubusercontent.com/vimwiki/vimwiki/master/doc/splash.png"
|
||||
alt="cool stuff" style="width:150px; height:120px"/>
|
||||
|
||||
Transclude image _without_ alternate text and with a CSS class: >
|
||||
{{http://.../vimwiki_logo.png||class="center flow blabla"}}
|
||||
in HTML: >
|
||||
<img src="http://vimwiki.googlecode.com/hg/images/vimwiki_logo.png"
|
||||
<img src="https://raw.githubusercontent.com/vimwiki/vimwiki/master/doc/splash.png"
|
||||
alt="" class="center flow blabla"/>
|
||||
|
||||
A trial feature allows you to supply your own handler for wiki-include links.
|
||||
|
||||
+2
-2
@@ -129,8 +129,8 @@ function! s:setup_cleared_syntax() abort
|
||||
" on colorscheme change because they are not linked to Vim-predefined groups
|
||||
hi def VimwikiBold term=bold cterm=bold gui=bold
|
||||
hi def VimwikiItalic term=italic cterm=italic gui=italic
|
||||
hi def VimwikiBoldItalic term=bold cterm=bold gui=bold,italic
|
||||
hi def VimwikiUnderline gui=underline
|
||||
hi def VimwikiBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
|
||||
hi def VimwikiUnderline term=underline cterm=underline gui=underline
|
||||
if vimwiki#vars#get_global('hl_headers') == 1
|
||||
for i in range(1,6)
|
||||
execute 'hi def VimwikiHeader'.i.' guibg=bg guifg='
|
||||
|
||||
+5
-5
@@ -257,10 +257,12 @@ endif
|
||||
" Horizontal Rule: <hr>
|
||||
execute 'syntax match VimwikiHR /'.vimwiki#vars#get_syntaxlocal('rxHR').'/'
|
||||
|
||||
" Preformated Text: `like that`
|
||||
let concealpre = vimwiki#vars#get_global('conceal_pre') ? ' concealends' : ''
|
||||
execute 'syntax region VimwikiPre matchgroup=VimwikiPreDelim start=/'.vimwiki#vars#get_syntaxlocal('rxPreStart').
|
||||
\ '/ end=/'.vimwiki#vars#get_syntaxlocal('rxPreEnd').'/ contains=@NoSpell'.concealpre
|
||||
|
||||
" Equation Text: $like that$
|
||||
execute 'syntax region VimwikiMath start=/'.vimwiki#vars#get_syntaxlocal('rxMathStart').
|
||||
\ '/ end=/'.vimwiki#vars#get_syntaxlocal('rxMathEnd').'/ contains=@NoSpell'
|
||||
|
||||
@@ -281,7 +283,7 @@ if vimwiki#vars#get_global('valid_html_tags') !=? ''
|
||||
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:
|
||||
" Html Typeface: <b>bold text</b>
|
||||
let html_typeface = {
|
||||
\ 'bold': [['<b>', '</b\_s*>'], ['<strong>', '</strong\_s*>']],
|
||||
\ 'italic': [['<i>', '</i\_s*>'], ['<em>', '</em\_s*>']],
|
||||
@@ -292,6 +294,7 @@ if vimwiki#vars#get_global('valid_html_tags') !=? ''
|
||||
\ 'sup': [['<sup>', '</sup\_s*>']],
|
||||
\ 'sub': [['<sub>', '</sub\_s*>']],
|
||||
\ }
|
||||
" Highlight now
|
||||
call vimwiki#u#hi_typeface(html_typeface)
|
||||
endif
|
||||
|
||||
@@ -401,16 +404,13 @@ hi def VimwikiItalicUnderline term=italic,underline cterm=italic,underline gui=i
|
||||
hi def link VimwikiUnderlineItalic VimwikiItalicUnderline
|
||||
|
||||
" Typeface 3
|
||||
hi def VimwikiItalicUnderline term=italic,underline cterm=italic,underline gui=italic,underline
|
||||
hi def VimwikiBoldItalicUnderline term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
|
||||
hi def link VimwikiBoldUnderlineItalic VimwikiBoldItalicUnderline
|
||||
hi def link VimwikiItalicBoldUnderline VimwikiBoldItalicUnderline
|
||||
hi def link VimwikiItalicUnderlineBold VimwikiBoldItalicUnderline
|
||||
hi def link VimwikiUnderlineBoldItalic VimwikiBoldItalicUnderline
|
||||
hi def link VimwikiUnderlineItalicBold VimwikiBoldItalicUnderline
|
||||
|
||||
" Typeface 2
|
||||
hi def VimwikiBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
|
||||
|
||||
" Code
|
||||
hi def link VimwikiCode PreProc
|
||||
hi def link VimwikiCodeT VimwikiCode
|
||||
|
||||
+36
-2
@@ -1,7 +1,5 @@
|
||||
# Syntax and Highlight
|
||||
|
||||
#Given vimwiki (bold and pre):
|
||||
|
||||
# 1 Typeface {{{1
|
||||
#################
|
||||
|
||||
@@ -726,4 +724,40 @@ Execute (Assert math syntax 2):
|
||||
let syntax_12 = SyntaxAt(12, 1)
|
||||
Assert syntax_12 == 'texStatement' || syntax_5 == 'texMathSymbol'
|
||||
|
||||
# 21 Highlight {{{1
|
||||
##################
|
||||
Given vimwiki (One line):
|
||||
content
|
||||
|
||||
Execute (Assert highlight typeface 1):
|
||||
" Typeface 1
|
||||
AssertEqual ['bold'], GetHighlightTerm('VimwikiBold', 'term')
|
||||
AssertEqual ['bold'], GetHighlightTerm('VimwikiBold', 'cterm')
|
||||
AssertEqual ['bold'], GetHighlightTerm('VimwikiBold', 'gui')
|
||||
|
||||
AssertEqual ['italic'], GetHighlightTerm('VimwikiItalic', 'cterm')
|
||||
AssertEqual ['underline'], GetHighlightTerm('VimwikiUnderline', 'gui')
|
||||
|
||||
Execute (Assert highlight typeface 2):
|
||||
" Bold > Italic > Underline
|
||||
AssertEqual sort(['bold', 'italic', '1']), sort(add(GetHighlightTerm('VimwikiBoldItalic', 'gui'), '1'))
|
||||
AssertEqual sort(['bold', 'italic', '2']), sort(add(GetHighlightTerm('VimwikiBoldItalic', 'term'), '2'))
|
||||
|
||||
AssertEqual sort(['bold', 'underline', '3']), sort(add(GetHighlightTerm('VimwikiBoldUnderline', 'cterm'), '3'))
|
||||
AssertEqual sort(['bold', 'underline', '4']), sort(add(GetHighlightTerm('VimwikiUnderlineBold', 'term'), '4'))
|
||||
|
||||
AssertEqual sort(['italic', 'underline', '5']), sort(add(GetHighlightTerm('VimwikiItalicUnderline', 'cterm'), '5'))
|
||||
|
||||
Execute (Assert highlight typeface 3):
|
||||
AssertEqual sort(['bold', 'italic', 'underline', '1']), sort(add(GetHighlightTerm('VimwikiBoldItalicUnderline', 'gui'), '1'))
|
||||
AssertEqual sort(['bold', 'italic', 'underline', '2']), sort(add(GetHighlightTerm('VimwikiBoldUnderlineItalic', 'cterm'), '2'))
|
||||
AssertEqual sort(['bold', 'italic', 'underline', '3']), sort(add(GetHighlightTerm('VimwikiItalicBoldUnderline', 'term'), '3'))
|
||||
AssertEqual sort(['bold', 'italic', 'underline', '4']), sort(add(GetHighlightTerm('VimwikiItalicUnderlineBold', 'gui'), '4'))
|
||||
AssertEqual sort(['bold', 'italic', 'underline', '5']), sort(add(GetHighlightTerm('VimwikiUnderlineBoldItalic', 'cterm'), '5'))
|
||||
AssertEqual sort(['bold', 'italic', 'underline', '6']), sort(add(GetHighlightTerm('VimwikiUnderlineItalicBold', 'term'), '6'))
|
||||
|
||||
Expect (One line):
|
||||
content
|
||||
|
||||
|
||||
# vim: foldmethod=marker foldlevel=30 sw=2
|
||||
|
||||
+35
-16
@@ -87,8 +87,8 @@
|
||||
endif
|
||||
|
||||
" Define functions
|
||||
" Change the syntax using a temporary wiki
|
||||
function! SetSyntax(vw_syn)
|
||||
" Change the syntax using a temporary wiki
|
||||
" Change extension and wiki_nr
|
||||
let index=0
|
||||
if a:vw_syn ==# 'default'
|
||||
@@ -164,13 +164,13 @@
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Source plugin
|
||||
function! LoadVimwiki()
|
||||
" Source plugin
|
||||
runtime! plugin/vimwiki.vim
|
||||
endfunction
|
||||
|
||||
" Reload plugin to change settings
|
||||
function! ReloadVimwiki()
|
||||
" Reload plugin to change settings
|
||||
call UnloadVimwiki()
|
||||
|
||||
" Reset list
|
||||
@@ -185,17 +185,17 @@
|
||||
call vimwiki#vars#init()
|
||||
endfunction
|
||||
|
||||
" Copy wiki test resources so that vimtest user can write them
|
||||
function! CopyResources()
|
||||
" Copy wiki test resources so that vimtest user can write them
|
||||
call system('cp -r /testplugin/test/resources/* $HOME/')
|
||||
" Make diary directory
|
||||
call system('mkdir $HOME/testwiki/diary')
|
||||
call system('mkdir $HOME/testmarkdown/diary')
|
||||
endfunction
|
||||
|
||||
" Delete Hidden buffer, usefull to clean
|
||||
" Stole from: https://stackoverflow.com/a/8459043/2544873
|
||||
function! DeleteHiddenBuffers()
|
||||
" Delete Hidden buffer, usefull to clean
|
||||
" See: https://stackoverflow.com/a/8459043/2544873
|
||||
let tpbl=[]
|
||||
call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))')
|
||||
for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1')
|
||||
@@ -206,14 +206,14 @@
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
" Write current file: helper to hide `set bt=`
|
||||
function! WriteMe()
|
||||
" Write current file: helper to hide `set bt=`
|
||||
set buftype=
|
||||
write! %
|
||||
endfunction
|
||||
|
||||
" Delete a file <- path <string>
|
||||
function! DeleteFile(path)
|
||||
" Delete a file <- path <string>
|
||||
let path = expand(a:path)
|
||||
" Delete file
|
||||
try
|
||||
@@ -225,8 +225,8 @@
|
||||
catch | endtry
|
||||
endfunction
|
||||
|
||||
" Print a command output to the buffer
|
||||
function! PrintCommand(cmd)
|
||||
" Print a command output to the buffer
|
||||
redir => message
|
||||
silent execute a:cmd
|
||||
redir END
|
||||
@@ -237,21 +237,21 @@
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" Destroy a variable is exists (unlet)
|
||||
function! DestroyVar(var)
|
||||
" Destroy a variable is exists (unlet)
|
||||
if ! exists(a:var) | return | endif
|
||||
execute 'unlet ' . a:var
|
||||
endfunction
|
||||
|
||||
" Assert current tab is desired tab
|
||||
function! AssertTab(nr)
|
||||
" Assert current tab is desired tab
|
||||
" Vader is creating 2 tabs
|
||||
AssertEqual a:nr + 2, tabpagenr()
|
||||
endfunction
|
||||
|
||||
function! ConvertWiki2Html()
|
||||
" Convert current buffer: wiki -> html
|
||||
" No side effect (if no bug)
|
||||
function! ConvertWiki2Html()
|
||||
" Save fbuffer number (to come back)
|
||||
let g:buf_vader = bufnr('%')
|
||||
|
||||
@@ -287,8 +287,8 @@
|
||||
call DeleteFile('$HOME/testwiki/test_Convert2Html.wiki')
|
||||
endfunction
|
||||
|
||||
" Get only body
|
||||
function! ConvertWiki2Body()
|
||||
" Get only body
|
||||
call ConvertWiki2Html()
|
||||
|
||||
" Empty b register
|
||||
@@ -307,28 +307,47 @@
|
||||
0d
|
||||
endfunction
|
||||
|
||||
function! GetSyntaxGroup(line, col)
|
||||
" Get normalized syntax group: usefull for boldItalic Vs italicBold
|
||||
" -- Here, Vader's SyntaxAt is not enough
|
||||
" From: https://stackoverflow.com/questions/9464844
|
||||
function! GetSyntaxGroup(line, col)
|
||||
let l:s = synID(a:line, a:col, 1)
|
||||
return synIDattr(synIDtrans(l:s), 'name')
|
||||
endfun
|
||||
|
||||
" Debug helper
|
||||
function! GetSyntaxStack()
|
||||
" Debug helper
|
||||
if !exists('*synstack')
|
||||
return
|
||||
endif
|
||||
return map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
|
||||
endfunc
|
||||
|
||||
" Run Assert only if vim version higth enough
|
||||
function! AssertIfVersion(version, one, two)
|
||||
" Run Assert only if vim version higth enough
|
||||
if v:version < a:version | return | endif
|
||||
AssertEqual a:one, a:two
|
||||
endfunction
|
||||
|
||||
function! GetHighlightTerm(group, term)
|
||||
" Get output of `hi group`
|
||||
" From: https://vi.stackexchange.com/a/12294/5026
|
||||
" Return list ['bold','underline']
|
||||
" Store output of group to variable
|
||||
let out = execute('hi ' . a:group)
|
||||
|
||||
" If links to, call parent
|
||||
let parent = matchstr(out, 'links to *\zs[^ \t\n\r]*')
|
||||
if parent !=# ''
|
||||
" Return list_of_parent, parent
|
||||
return GetHighlightTerm(parent, a:term)
|
||||
endif
|
||||
|
||||
" Return the unique term we are looking for
|
||||
let stg = matchstr(out, a:term.'=\zs[^ \t\n\r]*')
|
||||
return split(stg, ',')
|
||||
endfunction
|
||||
|
||||
|
||||
" Copy Wiki's Resources
|
||||
call CopyResources()
|
||||
|
||||
Reference in New Issue
Block a user