Version 0.9.8
* NEW: Rename g:vimwiki_fold_empty_lines to g:vimwiki_fold_trailing_empty_lines. * NEW: One can use - along with * to start unordered list item. * NEW: List items could be started from the first column. As a result some limitations appeared: * a space after *, - or # for a list item is mandatory. * g:vimwiki_fold_trailing_empty_lines if set to 0 folds one trailing empty line. * NEW: Folding is off by default. Use g:vimwiki_folding to enable it. * NEW: Speed up vimwiki's folding a bit. Should lag a bit less in a long todo lists. * NEW: Centered headers. Start header with at least one space to make it html centered. * NEW: Change in default css: header's colors. * NEW: Vimwiki is aware of GetLatestVimScripts now. * FIX: Use <del> tag instead of custom <span class="strike"> in html. * FIX: There are no text styling in htmlized quoted text. * FIX: set default value of g:vimwiki_fold_lists to 0 as written in this help. * FIX: Issue 33: Folded list items have wrong indentation when 'tabs' are used. * FIX: Issue 34: vimwiki#subdir got wrong dir when VimwikiGet('path') is a symbolic link. Thanks lilydjwg for the patch. * FIX: Issue 28: todo-list auto-indent enhancement. New item should always be unchecked. * FIX: Issue 36: Change the name of the :Search command to :VimwikiSearch as it conflicts with MultipleSearch. Alias :VWS is also available. * NEW: You can generate 'Table of contents' of your wiki page. See :h vimwiki-toc for details.
This commit is contained in:
parent
66c3d9df83
commit
3393774904
676
autoload/vimwiki.vim
Normal file
676
autoload/vimwiki.vim
Normal file
@ -0,0 +1,676 @@
|
|||||||
|
" Vimwiki autoload plugin file
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
|
||||||
|
if exists("g:loaded_vimwiki_auto") || &cp
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_vimwiki_auto = 1
|
||||||
|
|
||||||
|
if has("win32")
|
||||||
|
let s:os_sep = '\'
|
||||||
|
else
|
||||||
|
let s:os_sep = '/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:badsymbols = '['.g:vimwiki_badsyms.g:vimwiki_stripsym.'<>|?*:"]'
|
||||||
|
|
||||||
|
" MISC helper functions {{{
|
||||||
|
|
||||||
|
" This function is double defined.
|
||||||
|
" TODO: refactor common functions into new module.
|
||||||
|
function! s:chomp_slash(str) "{{{
|
||||||
|
return substitute(a:str, '[/\\]\+$', '', '')
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! vimwiki#mkdir(path) "{{{
|
||||||
|
let path = expand(a:path)
|
||||||
|
if !isdirectory(path) && exists("*mkdir")
|
||||||
|
let path = s:chomp_slash(path)
|
||||||
|
call mkdir(path, "p")
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#safe_link(string) "{{{
|
||||||
|
return substitute(a:string, s:badsymbols, g:vimwiki_stripsym, 'g')
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#unsafe_link(string) "{{{
|
||||||
|
return substitute(a:string, g:vimwiki_stripsym, s:badsymbols, 'g')
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#subdir(path, filename)"{{{
|
||||||
|
let path = expand(a:path)
|
||||||
|
let filename = expand(a:filename)
|
||||||
|
let idx = 0
|
||||||
|
while path[idx] == filename[idx]
|
||||||
|
let idx = idx + 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
let p = split(strpart(filename, idx), '[/\\]')
|
||||||
|
let res = join(p[:-2], s:os_sep)
|
||||||
|
if len(res) > 0
|
||||||
|
let res = res.s:os_sep
|
||||||
|
endif
|
||||||
|
return res
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! vimwiki#current_subdir()"{{{
|
||||||
|
return vimwiki#subdir(VimwikiGet('path'), expand('%:p'))
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! s:filename(link) "{{{
|
||||||
|
let result = vimwiki#safe_link(a:link)
|
||||||
|
if a:link =~ '|'
|
||||||
|
let result = vimwiki#safe_link(split(a:link, '|')[0])
|
||||||
|
elseif a:link =~ ']['
|
||||||
|
let result = vimwiki#safe_link(split(a:link, '][')[0])
|
||||||
|
endif
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:is_wiki_word(str) "{{{
|
||||||
|
if a:str =~ g:vimwiki_word1 && a:str !~ '[[:space:]\\/]'
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:edit_file(command, filename) "{{{
|
||||||
|
let fname = escape(a:filename, '% ')
|
||||||
|
call vimwiki#mkdir(fnamemodify(a:filename, ":p:h"))
|
||||||
|
execute a:command.' '.fname
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:search_word(wikiRx, cmd) "{{{
|
||||||
|
let match_line = search(a:wikiRx, 's'.a:cmd)
|
||||||
|
if match_line == 0
|
||||||
|
echomsg "vimwiki: Wiki link not found."
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:get_word_at_cursor(wikiRX) "{{{
|
||||||
|
let col = col('.') - 1
|
||||||
|
let line = getline('.')
|
||||||
|
let ebeg = -1
|
||||||
|
let cont = match(line, a:wikiRX, 0)
|
||||||
|
while (ebeg >= 0 || (0 <= cont) && (cont <= col))
|
||||||
|
let contn = matchend(line, a:wikiRX, cont)
|
||||||
|
if (cont <= col) && (col < contn)
|
||||||
|
let ebeg = match(line, a:wikiRX, cont)
|
||||||
|
let elen = contn - ebeg
|
||||||
|
break
|
||||||
|
else
|
||||||
|
let cont = match(line, a:wikiRX, contn)
|
||||||
|
endif
|
||||||
|
endwh
|
||||||
|
if ebeg >= 0
|
||||||
|
return strpart(line, ebeg, elen)
|
||||||
|
else
|
||||||
|
return ""
|
||||||
|
endif
|
||||||
|
endf "}}}
|
||||||
|
|
||||||
|
function! s:strip_word(word) "{{{
|
||||||
|
let result = a:word
|
||||||
|
if strpart(a:word, 0, 2) == "[["
|
||||||
|
" get rid of [[ and ]]
|
||||||
|
let w = strpart(a:word, 2, strlen(a:word)-4)
|
||||||
|
|
||||||
|
if w =~ '|'
|
||||||
|
" we want "link" from [[link|link desc]]
|
||||||
|
let w = split(w, "|")[0]
|
||||||
|
elseif w =~ ']['
|
||||||
|
" we want "link" from [[link][link desc]]
|
||||||
|
let w = split(w, "][")[0]
|
||||||
|
endif
|
||||||
|
|
||||||
|
let result = vimwiki#safe_link(w)
|
||||||
|
endif
|
||||||
|
return result
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:is_link_to_non_wiki_file(word) "{{{
|
||||||
|
" Check if word is link to a non-wiki file.
|
||||||
|
" The easiest way is to check if it has extension like .txt or .html
|
||||||
|
if a:word =~ '\.\w\{1,4}$'
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:print_wiki_list() "{{{
|
||||||
|
let idx = 0
|
||||||
|
while idx < len(g:vimwiki_list)
|
||||||
|
if idx == g:vimwiki_current_idx
|
||||||
|
let sep = ' * '
|
||||||
|
echohl PmenuSel
|
||||||
|
else
|
||||||
|
let sep = ' '
|
||||||
|
echohl None
|
||||||
|
endif
|
||||||
|
echo (idx + 1).sep.VimwikiGet('path', idx)
|
||||||
|
let idx += 1
|
||||||
|
endwhile
|
||||||
|
echohl None
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:wiki_select(wnum)"{{{
|
||||||
|
if a:wnum < 1 || a:wnum > len(g:vimwiki_list)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let b:vimwiki_idx = g:vimwiki_current_idx
|
||||||
|
let g:vimwiki_current_idx = a:wnum - 1
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:update_wiki_link(fname, old, new) " {{{
|
||||||
|
echo "Updating links in ".a:fname
|
||||||
|
let has_updates = 0
|
||||||
|
let dest = []
|
||||||
|
for line in readfile(a:fname)
|
||||||
|
if !has_updates && match(line, a:old) != -1
|
||||||
|
let has_updates = 1
|
||||||
|
endif
|
||||||
|
call add(dest, substitute(line, a:old, escape(a:new, "&"), "g"))
|
||||||
|
endfor
|
||||||
|
" add exception handling...
|
||||||
|
if has_updates
|
||||||
|
call rename(a:fname, a:fname.'#vimwiki_upd#')
|
||||||
|
call writefile(dest, a:fname)
|
||||||
|
call delete(a:fname.'#vimwiki_upd#')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:update_wiki_links_dir(dir, old_fname, new_fname) " {{{
|
||||||
|
let old_fname = substitute(a:old_fname, '[/\\]', '[/\\\\]', 'g')
|
||||||
|
let new_fname = a:new_fname
|
||||||
|
|
||||||
|
if !s:is_wiki_word(new_fname)
|
||||||
|
let new_fname = '[['.new_fname.']]'
|
||||||
|
endif
|
||||||
|
if !s:is_wiki_word(old_fname)
|
||||||
|
let old_fname = '\[\['.vimwiki#unsafe_link(old_fname).
|
||||||
|
\ '\%(|.*\)\?\%(\]\[.*\)\?\]\]'
|
||||||
|
else
|
||||||
|
let old_fname = '\<'.old_fname.'\>'
|
||||||
|
endif
|
||||||
|
let files = split(glob(VimwikiGet('path').a:dir.'*'.VimwikiGet('ext')), '\n')
|
||||||
|
for fname in files
|
||||||
|
call s:update_wiki_link(fname, old_fname, new_fname)
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:tail_name(fname) "{{{
|
||||||
|
let result = substitute(a:fname, ":", "__colon__", "g")
|
||||||
|
let result = fnamemodify(result, ":t:r")
|
||||||
|
let result = substitute(result, "__colon__", ":", "g")
|
||||||
|
return result
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:update_wiki_links(old_fname, new_fname) " {{{
|
||||||
|
let old_fname = s:tail_name(a:old_fname)
|
||||||
|
let new_fname = s:tail_name(a:new_fname)
|
||||||
|
|
||||||
|
let subdirs = split(a:old_fname, '[/\\]')[: -2]
|
||||||
|
|
||||||
|
" TODO: Use Dictionary here...
|
||||||
|
let dirs_keys = ['']
|
||||||
|
let dirs_vals = ['']
|
||||||
|
if len(subdirs) > 0
|
||||||
|
let dirs_keys = ['']
|
||||||
|
let dirs_vals = [join(subdirs, '/').'/']
|
||||||
|
let idx = 0
|
||||||
|
while idx < len(subdirs) - 1
|
||||||
|
call add(dirs_keys, join(subdirs[: idx], '/').'/')
|
||||||
|
call add(dirs_vals, join(subdirs[idx+1 :], '/').'/')
|
||||||
|
let idx = idx + 1
|
||||||
|
endwhile
|
||||||
|
call add(dirs_keys,join(subdirs, '/').'/')
|
||||||
|
call add(dirs_vals, '')
|
||||||
|
endif
|
||||||
|
|
||||||
|
let idx = 0
|
||||||
|
while idx < len(dirs_keys)
|
||||||
|
let dir = dirs_keys[idx]
|
||||||
|
let new_dir = dirs_vals[idx]
|
||||||
|
call s:update_wiki_links_dir(dir,
|
||||||
|
\ new_dir.old_fname, new_dir.new_fname)
|
||||||
|
let idx = idx + 1
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:get_wiki_buffers() "{{{
|
||||||
|
let blist = []
|
||||||
|
let bcount = 1
|
||||||
|
while bcount<=bufnr("$")
|
||||||
|
if bufexists(bcount)
|
||||||
|
let bname = fnamemodify(bufname(bcount), ":p")
|
||||||
|
if bname =~ VimwikiGet('ext')."$"
|
||||||
|
let bitem = [bname, getbufvar(bname, "vimwiki_prev_word")]
|
||||||
|
call add(blist, bitem)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let bcount = bcount + 1
|
||||||
|
endwhile
|
||||||
|
return blist
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! s:open_wiki_buffer(item) "{{{
|
||||||
|
call s:edit_file('e', a:item[0])
|
||||||
|
if !empty(a:item[1])
|
||||||
|
call setbufvar(a:item[0], "vimwiki_prev_word", a:item[1])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" SYNTAX highlight {{{
|
||||||
|
function! vimwiki#WikiHighlightWords() "{{{
|
||||||
|
" search all wiki files in 'path' and its subdirs.
|
||||||
|
let subdir = vimwiki#current_subdir()
|
||||||
|
let wikies = glob(VimwikiGet('path').subdir.'**/*'.VimwikiGet('ext'))
|
||||||
|
|
||||||
|
" remove .wiki extensions
|
||||||
|
let wikies = substitute(wikies, '\'.VimwikiGet('ext'), "", "g")
|
||||||
|
let g:vimwiki_wikiwords = split(wikies, '\n')
|
||||||
|
|
||||||
|
" remove backup files (.wiki~)
|
||||||
|
call filter(g:vimwiki_wikiwords, 'v:val !~ ''.*\~$''')
|
||||||
|
|
||||||
|
" remove paths
|
||||||
|
let rem_path = escape(expand(VimwikiGet('path')).subdir, '\')
|
||||||
|
call map(g:vimwiki_wikiwords, 'substitute(v:val, rem_path, "", "g")')
|
||||||
|
|
||||||
|
" Links with subdirs should be highlighted for linux and windows separators
|
||||||
|
" Change \ or / to [/\\]
|
||||||
|
let os_p = '[/\\]'
|
||||||
|
let os_p2 = escape(os_p, '\')
|
||||||
|
call map(g:vimwiki_wikiwords, 'substitute(v:val, os_p, os_p2, "g")')
|
||||||
|
|
||||||
|
for word in g:vimwiki_wikiwords
|
||||||
|
if g:vimwiki_camel_case &&
|
||||||
|
\ word =~ g:vimwiki_word1 && !s:is_link_to_non_wiki_file(word)
|
||||||
|
execute 'syntax match VimwikiWord /\%(^\|[^!]\)\@<=\<'.word.'\>/'
|
||||||
|
endif
|
||||||
|
execute 'syntax match VimwikiWord /\[\[\<'.
|
||||||
|
\ vimwiki#unsafe_link(word).
|
||||||
|
\ '\>\%(|\+.*\)*\]\]/'
|
||||||
|
execute 'syntax match VimwikiWord /\[\[\<'.
|
||||||
|
\ vimwiki#unsafe_link(word).
|
||||||
|
\ '\>\]\[.\+\]\]/'
|
||||||
|
endfor
|
||||||
|
execute 'syntax match VimwikiWord /\[\[.\+\.\%(jpg\|png\|gif\)\%(|\+.*\)*\]\]/'
|
||||||
|
execute 'syntax match VimwikiWord /\[\[.\+\.\%(jpg\|png\|gif\)\]\[.\+\]\]/'
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#hl_exists(hl)"{{{
|
||||||
|
if !hlexists(a:hl)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
redir => hlstatus
|
||||||
|
exe "silent hi" a:hl
|
||||||
|
redir END
|
||||||
|
return (hlstatus !~ "cleared")
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#nested_syntax(filetype, start, end, textSnipHl) abort "{{{
|
||||||
|
" From http://vim.wikia.com/wiki/VimTip857
|
||||||
|
let ft=toupper(a:filetype)
|
||||||
|
let group='textGroup'.ft
|
||||||
|
if exists('b:current_syntax')
|
||||||
|
let s:current_syntax=b:current_syntax
|
||||||
|
" Remove current syntax definition, as some syntax files (e.g. cpp.vim)
|
||||||
|
" do nothing if b:current_syntax is defined.
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Some syntax files set up iskeyword which might scratch vimwiki a bit.
|
||||||
|
" Let us save and restore it later.
|
||||||
|
" let b:skip_set_iskeyword = 1
|
||||||
|
let is_keyword = &iskeyword
|
||||||
|
|
||||||
|
execute 'syntax include @'.group.' syntax/'.a:filetype.'.vim'
|
||||||
|
try
|
||||||
|
execute 'syntax include @'.group.' after/syntax/'.a:filetype.'.vim'
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
|
||||||
|
let &iskeyword = is_keyword
|
||||||
|
|
||||||
|
if exists('s:current_syntax')
|
||||||
|
let b:current_syntax=s:current_syntax
|
||||||
|
else
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
execute 'syntax region textSnip'.ft.'
|
||||||
|
\ matchgroup='.a:textSnipHl.'
|
||||||
|
\ start="'.a:start.'" end="'.a:end.'"
|
||||||
|
\ contains=@'.group
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" WIKI functions {{{
|
||||||
|
function! vimwiki#WikiNextWord() "{{{
|
||||||
|
call s:search_word(g:vimwiki_rxWikiWord.'\|'.g:vimwiki_rxWeblink, '')
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiPrevWord() "{{{
|
||||||
|
call s:search_word(g:vimwiki_rxWikiWord.'\|'.g:vimwiki_rxWeblink, 'b')
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiFollowWord(split) "{{{
|
||||||
|
if a:split == "split"
|
||||||
|
let cmd = ":split "
|
||||||
|
elseif a:split == "vsplit"
|
||||||
|
let cmd = ":vsplit "
|
||||||
|
else
|
||||||
|
let cmd = ":e "
|
||||||
|
endif
|
||||||
|
|
||||||
|
let word = s:strip_word(s:get_word_at_cursor(g:vimwiki_rxWikiWord))
|
||||||
|
if word == ""
|
||||||
|
let weblink = s:strip_word(s:get_word_at_cursor(g:vimwiki_rxWeblink))
|
||||||
|
if weblink != ""
|
||||||
|
call VimwikiWeblinkHandler(weblink)
|
||||||
|
else
|
||||||
|
execute "normal! \n"
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:is_link_to_non_wiki_file(word)
|
||||||
|
call s:edit_file(cmd, word)
|
||||||
|
else
|
||||||
|
let vimwiki_prev_word = [expand('%:p'), getpos('.')]
|
||||||
|
let subdir = vimwiki#current_subdir()
|
||||||
|
call s:edit_file(cmd, VimwikiGet('path').subdir.word.VimwikiGet('ext'))
|
||||||
|
let b:vimwiki_prev_word = vimwiki_prev_word
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiGoBackWord() "{{{
|
||||||
|
if exists("b:vimwiki_prev_word")
|
||||||
|
" go back to saved WikiWord
|
||||||
|
let prev_word = b:vimwiki_prev_word
|
||||||
|
execute ":e ".substitute(prev_word[0], '\s', '\\\0', 'g')
|
||||||
|
call setpos('.', prev_word[1])
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiGoHome(index) "{{{
|
||||||
|
call s:wiki_select(a:index)
|
||||||
|
call vimwiki#mkdir(VimwikiGet('path'))
|
||||||
|
|
||||||
|
try
|
||||||
|
execute ':e '.fnameescape(
|
||||||
|
\ VimwikiGet('path').VimwikiGet('index').VimwikiGet('ext'))
|
||||||
|
catch /E37/ " catch 'No write since last change' error
|
||||||
|
" this is really unsecure!!!
|
||||||
|
execute ':'.VimwikiGet('gohome').' '.
|
||||||
|
\ VimwikiGet('path').
|
||||||
|
\ VimwikiGet('index').
|
||||||
|
\ VimwikiGet('ext')
|
||||||
|
catch /E325/ " catch 'ATTENTION' error (:h E325)
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiDeleteWord() "{{{
|
||||||
|
"" file system funcs
|
||||||
|
"" Delete WikiWord you are in from filesystem
|
||||||
|
let val = input('Delete ['.expand('%').'] (y/n)? ', "")
|
||||||
|
if val != 'y'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let fname = expand('%:p')
|
||||||
|
try
|
||||||
|
call delete(fname)
|
||||||
|
catch /.*/
|
||||||
|
echomsg 'vimwiki: Cannot delete "'.expand('%:t:r').'"!'
|
||||||
|
return
|
||||||
|
endtry
|
||||||
|
execute "bdelete! ".escape(fname, " ")
|
||||||
|
|
||||||
|
" reread buffer => deleted WikiWord should appear as non-existent
|
||||||
|
if expand('%:p') != ""
|
||||||
|
execute "e"
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiRenameWord() "{{{
|
||||||
|
"" Rename WikiWord, update all links to renamed WikiWord
|
||||||
|
let subdir = vimwiki#current_subdir()
|
||||||
|
let old_fname = subdir.expand('%:t')
|
||||||
|
|
||||||
|
" there is no file (new one maybe)
|
||||||
|
if glob(expand('%:p')) == ''
|
||||||
|
echomsg 'vimwiki: Cannot rename "'.expand('%:p').
|
||||||
|
\'". It does not exist! (New file? Save it before renaming.)'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let val = input('Rename "'.expand('%:t:r').'" (y/n)? ', "")
|
||||||
|
if val!='y'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let new_link = input('Enter new name: ', "")
|
||||||
|
|
||||||
|
if new_link =~ '[/\\]'
|
||||||
|
" It is actually doable but I do not have free time to do it.
|
||||||
|
echomsg 'vimwiki: Cannot rename to a filename with path!'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let new_link = subdir.new_link
|
||||||
|
|
||||||
|
" check new_fname - it should be 'good', not empty
|
||||||
|
if substitute(new_link, '\s', '', 'g') == ''
|
||||||
|
echomsg 'vimwiki: Cannot rename to an empty filename!'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
if s:is_link_to_non_wiki_file(new_link)
|
||||||
|
echomsg 'vimwiki: Cannot rename to a filename with extension (ie .txt .html)!'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let new_link = s:strip_word(new_link)
|
||||||
|
let new_fname = VimwikiGet('path').s:filename(new_link).VimwikiGet('ext')
|
||||||
|
|
||||||
|
" do not rename if word with such name exists
|
||||||
|
let fname = glob(new_fname)
|
||||||
|
if fname != ''
|
||||||
|
echomsg 'vimwiki: Cannot rename to "'.new_fname.
|
||||||
|
\ '". File with that name exist!'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
" rename WikiWord file
|
||||||
|
try
|
||||||
|
echomsg "Renaming ".VimwikiGet('path').old_fname." to ".new_fname
|
||||||
|
let res = rename(expand('%:p'), expand(new_fname))
|
||||||
|
if res != 0
|
||||||
|
throw "Cannot rename!"
|
||||||
|
end
|
||||||
|
catch /.*/
|
||||||
|
echomsg 'vimwiki: Cannot rename "'.expand('%:t:r').'" to "'.new_fname.'"'
|
||||||
|
return
|
||||||
|
endtry
|
||||||
|
|
||||||
|
let &buftype="nofile"
|
||||||
|
|
||||||
|
let cur_buffer = [expand('%:p'),
|
||||||
|
\getbufvar(expand('%:p'), "vimwiki_prev_word")]
|
||||||
|
|
||||||
|
let blist = s:get_wiki_buffers()
|
||||||
|
|
||||||
|
" save wiki buffers
|
||||||
|
for bitem in blist
|
||||||
|
execute ':b '.escape(bitem[0], ' ')
|
||||||
|
execute ':update'
|
||||||
|
endfor
|
||||||
|
|
||||||
|
execute ':b '.escape(cur_buffer[0], ' ')
|
||||||
|
|
||||||
|
" remove wiki buffers
|
||||||
|
for bitem in blist
|
||||||
|
execute 'bwipeout '.escape(bitem[0], ' ')
|
||||||
|
endfor
|
||||||
|
|
||||||
|
let setting_more = &more
|
||||||
|
setlocal nomore
|
||||||
|
|
||||||
|
" update links
|
||||||
|
call s:update_wiki_links(old_fname, new_link)
|
||||||
|
|
||||||
|
" restore wiki buffers
|
||||||
|
for bitem in blist
|
||||||
|
if bitem[0] != cur_buffer[0]
|
||||||
|
call s:open_wiki_buffer(bitem)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call s:open_wiki_buffer([new_fname,
|
||||||
|
\ cur_buffer[1]])
|
||||||
|
" execute 'bwipeout '.escape(cur_buffer[0], ' ')
|
||||||
|
|
||||||
|
echomsg old_fname." is renamed to ".new_fname
|
||||||
|
|
||||||
|
let &more = setting_more
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
function! vimwiki#WikiUISelect()"{{{
|
||||||
|
call s:print_wiki_list()
|
||||||
|
let idx = input("Select Wiki (specify number): ")
|
||||||
|
if idx == ""
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
call vimwiki#WikiGoHome(idx)
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" TEXT OBJECTS functions {{{
|
||||||
|
|
||||||
|
function! vimwiki#TO_header(inner, visual) "{{{
|
||||||
|
if !search('^\(=\+\)[^=]\+\1\s*$', 'bcW')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let sel_start = line("'<")
|
||||||
|
let sel_end = line("'>")
|
||||||
|
let block_start = line(".")
|
||||||
|
let advance = 0
|
||||||
|
|
||||||
|
let level = vimwiki#count_first_sym(getline('.'))
|
||||||
|
|
||||||
|
let is_header_selected = sel_start == block_start
|
||||||
|
\ && sel_start != sel_end
|
||||||
|
|
||||||
|
if a:visual && is_header_selected
|
||||||
|
if level > 1
|
||||||
|
let level -= 1
|
||||||
|
call search('^\(=\{'.level.'\}\)[^=]\+\1\s*$', 'bcW')
|
||||||
|
else
|
||||||
|
let advance = 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
normal! V
|
||||||
|
|
||||||
|
if a:visual && is_header_selected
|
||||||
|
call cursor(sel_end + advance, 0)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if search('^\(=\{1,'.level.'}\)[^=]\+\1\s*$', 'W')
|
||||||
|
call cursor(line('.') - 1, 0)
|
||||||
|
else
|
||||||
|
call cursor(line('$'), 0)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if a:inner && getline(line('.')) =~ '^\s*$'
|
||||||
|
let lnum = prevnonblank(line('.') - 1)
|
||||||
|
call cursor(lnum, 0)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#count_first_sym(line) "{{{
|
||||||
|
let first_sym = matchstr(a:line, '\S')
|
||||||
|
return len(matchstr(a:line, first_sym.'\+'))
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! vimwiki#AddHeaderLevel() "{{{
|
||||||
|
let lnum = line('.')
|
||||||
|
let line = getline(lnum)
|
||||||
|
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if line =~ '^\s*\(=\+\).\+\1\s*$'
|
||||||
|
let level = vimwiki#count_first_sym(line)
|
||||||
|
if level < 6
|
||||||
|
let line = substitute(line, '\(=\+\).\+\1', '=&=', '')
|
||||||
|
call setline(lnum, line)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let line = substitute(line, '^\s*', '&= ', '')
|
||||||
|
let line = substitute(line, '\s*$', ' =&', '')
|
||||||
|
call setline(lnum, line)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
function! vimwiki#RemoveHeaderLevel() "{{{
|
||||||
|
let lnum = line('.')
|
||||||
|
let line = getline(lnum)
|
||||||
|
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if line =~ '^\s*\(=\+\).\+\1\s*$'
|
||||||
|
let level = vimwiki#count_first_sym(line)
|
||||||
|
let old = repeat('=', level)
|
||||||
|
let new = repeat('=', level - 1)
|
||||||
|
|
||||||
|
let chomp = line =~ '=\s'
|
||||||
|
|
||||||
|
let line = substitute(line, old, new, 'g')
|
||||||
|
|
||||||
|
if level == 1 && chomp
|
||||||
|
let line = substitute(line, '^\s', '', 'g')
|
||||||
|
let line = substitute(line, '\s$', '', 'g')
|
||||||
|
endif
|
||||||
|
call setline(lnum, line)
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" }}}
|
1099
autoload/vimwiki_html.vim
Normal file
1099
autoload/vimwiki_html.vim
Normal file
File diff suppressed because it is too large
Load Diff
361
autoload/vimwiki_lst.vim
Normal file
361
autoload/vimwiki_lst.vim
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
" Vimwiki autoload plugin file
|
||||||
|
" Todo lists related stuff here.
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
|
||||||
|
if exists("g:loaded_vimwiki_list_auto") || &cp
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_vimwiki_lst_auto = 1
|
||||||
|
|
||||||
|
" Script variables {{{
|
||||||
|
let s:rx_li_box = '\[.\?\]'
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" Script functions {{{
|
||||||
|
|
||||||
|
" Get checkbox regexp
|
||||||
|
function! s:rx_li_symbol(rate) "{{{
|
||||||
|
let result = ''
|
||||||
|
if a:rate == 100
|
||||||
|
let result = g:vimwiki_listsyms[4]
|
||||||
|
elseif a:rate == 0
|
||||||
|
let result = g:vimwiki_listsyms[0]
|
||||||
|
elseif a:rate >= 67
|
||||||
|
let result = g:vimwiki_listsyms[3]
|
||||||
|
elseif a:rate >= 34
|
||||||
|
let result = g:vimwiki_listsyms[2]
|
||||||
|
else
|
||||||
|
let result = g:vimwiki_listsyms[1]
|
||||||
|
endif
|
||||||
|
|
||||||
|
return '\['.result.'\]'
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Get regexp of the list item.
|
||||||
|
function! s:rx_list_item() "{{{
|
||||||
|
return '\('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)'
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Get regexp of the list item with checkbox.
|
||||||
|
function! s:rx_cb_list_item() "{{{
|
||||||
|
" return s:rx_list_item().'\s*\zs\[.\?\]'
|
||||||
|
return s:rx_list_item().'\s*\zs\[.\?\]'
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Get level of the list item.
|
||||||
|
function! s:get_level(lnum) "{{{
|
||||||
|
if VimwikiGet('syntax') == 'media'
|
||||||
|
let level = vimwiki#count_first_sym(getline(a:lnum))
|
||||||
|
else
|
||||||
|
let level = indent(a:lnum)
|
||||||
|
endif
|
||||||
|
return level
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Get previous list item.
|
||||||
|
" Returns: line number or 0.
|
||||||
|
function! s:prev_list_item(lnum) "{{{
|
||||||
|
let c_lnum = a:lnum - 1
|
||||||
|
while c_lnum >= 1
|
||||||
|
let line = getline(c_lnum)
|
||||||
|
if line =~ s:rx_list_item()
|
||||||
|
return c_lnum
|
||||||
|
endif
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let c_lnum -= 1
|
||||||
|
endwhile
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Get next list item in the list.
|
||||||
|
" Returns: line number or 0.
|
||||||
|
function! s:next_list_item(lnum) "{{{
|
||||||
|
let c_lnum = a:lnum + 1
|
||||||
|
while c_lnum <= line('$')
|
||||||
|
let line = getline(c_lnum)
|
||||||
|
if line =~ s:rx_list_item()
|
||||||
|
return c_lnum
|
||||||
|
endif
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let c_lnum += 1
|
||||||
|
endwhile
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Find next list item in the buffer.
|
||||||
|
" Returns: line number or 0.
|
||||||
|
function! s:find_next_list_item(lnum) "{{{
|
||||||
|
let c_lnum = a:lnum + 1
|
||||||
|
while c_lnum <= line('$')
|
||||||
|
let line = getline(c_lnum)
|
||||||
|
if line =~ s:rx_list_item()
|
||||||
|
return c_lnum
|
||||||
|
endif
|
||||||
|
let c_lnum += 1
|
||||||
|
endwhile
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Set state of the list item on line number "lnum" to [ ] or [x]
|
||||||
|
function! s:set_state(lnum, rate) "{{{
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
let state = s:rx_li_symbol(a:rate)
|
||||||
|
let line = substitute(line, s:rx_li_box, state, '')
|
||||||
|
call setline(a:lnum, line)
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Get state of the list item on line number "lnum"
|
||||||
|
function! s:get_state(lnum) "{{{
|
||||||
|
let state = 0
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
let opt = matchstr(line, s:rx_cb_list_item())
|
||||||
|
if opt =~ s:rx_li_symbol(100)
|
||||||
|
let state = 100
|
||||||
|
elseif opt =~ s:rx_li_symbol(0)
|
||||||
|
let state = 0
|
||||||
|
elseif opt =~ s:rx_li_symbol(25)
|
||||||
|
let state = 25
|
||||||
|
elseif opt =~ s:rx_li_symbol(50)
|
||||||
|
let state = 50
|
||||||
|
elseif opt =~ s:rx_li_symbol(75)
|
||||||
|
let state = 75
|
||||||
|
endif
|
||||||
|
return state
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Returns 1 if there is checkbox on a list item, 0 otherwise.
|
||||||
|
function! s:is_cb_list_item(lnum) "{{{
|
||||||
|
return getline(a:lnum) =~ s:rx_cb_list_item()
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Returns start line number of list item, 0 if it is not a list.
|
||||||
|
function! s:is_list_item(lnum) "{{{
|
||||||
|
let c_lnum = a:lnum
|
||||||
|
while c_lnum >= 1
|
||||||
|
let line = getline(c_lnum)
|
||||||
|
if line =~ s:rx_list_item()
|
||||||
|
return c_lnum
|
||||||
|
endif
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
if indent(c_lnum) > indent(a:lnum)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let c_lnum -= 1
|
||||||
|
endwhile
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Returns char column of checkbox. Used in parent/child checks.
|
||||||
|
function! s:get_li_pos(lnum) "{{{
|
||||||
|
return stridx(getline(a:lnum), '[')
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Returns list of line numbers of parent and all its child items.
|
||||||
|
function! s:get_child_items(lnum) "{{{
|
||||||
|
let result = []
|
||||||
|
let lnum = a:lnum
|
||||||
|
let p_pos = s:get_level(lnum)
|
||||||
|
|
||||||
|
" add parent
|
||||||
|
call add(result, lnum)
|
||||||
|
|
||||||
|
let lnum = s:next_list_item(lnum)
|
||||||
|
while lnum != 0 && s:is_list_item(lnum) && s:get_level(lnum) > p_pos
|
||||||
|
call add(result, lnum)
|
||||||
|
let lnum = s:next_list_item(lnum)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return result
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Returns list of line numbers of all items of the same level.
|
||||||
|
function! s:get_sibling_items(lnum) "{{{
|
||||||
|
let result = []
|
||||||
|
let lnum = a:lnum
|
||||||
|
let ind = s:get_level(lnum)
|
||||||
|
|
||||||
|
while s:get_level(lnum) >= ind &&
|
||||||
|
\ lnum != 0
|
||||||
|
|
||||||
|
if s:get_level(lnum) == ind && s:is_cb_list_item(lnum)
|
||||||
|
call add(result, lnum)
|
||||||
|
endif
|
||||||
|
let lnum = s:next_list_item(lnum)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
let lnum = s:prev_list_item(a:lnum)
|
||||||
|
while s:get_level(lnum) >= ind &&
|
||||||
|
\ lnum != 0
|
||||||
|
|
||||||
|
if s:get_level(lnum) == ind && s:is_cb_list_item(lnum)
|
||||||
|
call add(result, lnum)
|
||||||
|
endif
|
||||||
|
let lnum = s:prev_list_item(lnum)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return result
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Returns line number of the parent of lnum item
|
||||||
|
function! s:get_parent_item(lnum) "{{{
|
||||||
|
let lnum = a:lnum
|
||||||
|
let ind = s:get_level(lnum)
|
||||||
|
|
||||||
|
let lnum = s:prev_list_item(lnum)
|
||||||
|
while lnum != 0 && s:is_list_item(lnum) && s:get_level(lnum) >= ind
|
||||||
|
let lnum = s:prev_list_item(lnum)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if s:is_cb_list_item(lnum)
|
||||||
|
return lnum
|
||||||
|
else
|
||||||
|
return a:lnum
|
||||||
|
endif
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Creates checkbox in a list item.
|
||||||
|
function! s:create_cb_list_item(lnum) "{{{
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
let m = matchstr(line, s:rx_list_item())
|
||||||
|
if m != ''
|
||||||
|
let li_content = substitute(strpart(line, len(m)), '^\s*', '', '')
|
||||||
|
let line = m.'[ ] '.li_content
|
||||||
|
call setline(a:lnum, line)
|
||||||
|
endif
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Tells if all of the sibling list items are checked or not.
|
||||||
|
function! s:all_siblings_checked(lnum) "{{{
|
||||||
|
let result = 0
|
||||||
|
let cnt = 0
|
||||||
|
let siblings = s:get_sibling_items(a:lnum)
|
||||||
|
for lnum in siblings
|
||||||
|
let cnt += s:get_state(lnum)/100.0
|
||||||
|
endfor
|
||||||
|
let result = (cnt*100.0)/len(siblings)
|
||||||
|
return result
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Creates checkbox on a list item if there is no one.
|
||||||
|
function! s:TLI_create_checkbox(lnum) "{{{
|
||||||
|
if a:lnum && !s:is_cb_list_item(a:lnum)
|
||||||
|
if g:vimwiki_auto_checkbox
|
||||||
|
call s:create_cb_list_item(a:lnum)
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Switch state of the child list items.
|
||||||
|
function! s:TLI_switch_child_state(lnum) "{{{
|
||||||
|
let current_state = s:get_state(a:lnum)
|
||||||
|
if current_state == 100
|
||||||
|
let new_state = 0
|
||||||
|
else
|
||||||
|
let new_state = 100
|
||||||
|
endif
|
||||||
|
for lnum in s:get_child_items(a:lnum)
|
||||||
|
call s:set_state(lnum, new_state)
|
||||||
|
endfor
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Switch state of the parent list items.
|
||||||
|
function! s:TLI_switch_parent_state(lnum) "{{{
|
||||||
|
let c_lnum = a:lnum
|
||||||
|
while s:is_cb_list_item(c_lnum)
|
||||||
|
let parent_lnum = s:get_parent_item(c_lnum)
|
||||||
|
if parent_lnum == c_lnum
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
call s:set_state(parent_lnum, s:all_siblings_checked(c_lnum))
|
||||||
|
|
||||||
|
let c_lnum = parent_lnum
|
||||||
|
endwhile
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:TLI_toggle(lnum) "{{{
|
||||||
|
if !s:TLI_create_checkbox(a:lnum)
|
||||||
|
call s:TLI_switch_child_state(a:lnum)
|
||||||
|
endif
|
||||||
|
call s:TLI_switch_parent_state(a:lnum)
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" Script functions }}}
|
||||||
|
|
||||||
|
" Toggle list item between [ ] and [X]
|
||||||
|
function! vimwiki_lst#ToggleListItem(line1, line2) "{{{
|
||||||
|
let line1 = a:line1
|
||||||
|
let line2 = a:line2
|
||||||
|
|
||||||
|
if line1 != line2 && !s:is_list_item(line1)
|
||||||
|
let line1 = s:find_next_list_item(line1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let c_lnum = line1
|
||||||
|
while c_lnum != 0 && c_lnum <= line2
|
||||||
|
let li_lnum = s:is_list_item(c_lnum)
|
||||||
|
|
||||||
|
if li_lnum
|
||||||
|
let li_level = s:get_level(li_lnum)
|
||||||
|
if c_lnum == line1
|
||||||
|
let start_li_level = li_level
|
||||||
|
endif
|
||||||
|
|
||||||
|
if li_level <= start_li_level
|
||||||
|
call s:TLI_toggle(li_lnum)
|
||||||
|
let start_li_level = li_level
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let c_lnum = s:find_next_list_item(c_lnum)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! vimwiki_lst#insertCR() "{{{
|
||||||
|
" This function is heavily relies on proper 'set comments' option.
|
||||||
|
let cr = "\<CR>"
|
||||||
|
if getline('.') =~ s:rx_cb_list_item()
|
||||||
|
let cr .= '[ ] '
|
||||||
|
endif
|
||||||
|
return cr
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! vimwiki_lst#insertOo(cmd) "{{{
|
||||||
|
" cmd should be 'o' or 'O'
|
||||||
|
|
||||||
|
let beg_lnum = foldclosed('.')
|
||||||
|
let end_lnum = foldclosedend('.')
|
||||||
|
if end_lnum != -1 && a:cmd ==# 'o'
|
||||||
|
let lnum = end_lnum
|
||||||
|
let line = getline(beg_lnum)
|
||||||
|
else
|
||||||
|
let line = getline('.')
|
||||||
|
let lnum = line('.')
|
||||||
|
endif
|
||||||
|
|
||||||
|
let res = ''
|
||||||
|
if line =~ s:rx_cb_list_item()
|
||||||
|
let res = matchstr(line, s:rx_list_item()).'[ ] '
|
||||||
|
elseif line =~ s:rx_list_item()
|
||||||
|
let res = matchstr(line, s:rx_list_item())
|
||||||
|
elseif &autoindent || &smartindent
|
||||||
|
let res = matchstr(line, '^\s*')
|
||||||
|
endif
|
||||||
|
if a:cmd ==# 'o'
|
||||||
|
call append(lnum, res)
|
||||||
|
call cursor(lnum + 1, col('$'))
|
||||||
|
else
|
||||||
|
call append(lnum - 1, res)
|
||||||
|
call cursor(lnum, col('$'))
|
||||||
|
endif
|
||||||
|
endfunction "}}}
|
||||||
|
|
1547
doc/vimwiki.txt
Normal file
1547
doc/vimwiki.txt
Normal file
File diff suppressed because it is too large
Load Diff
299
ftplugin/vimwiki.vim
Normal file
299
ftplugin/vimwiki.vim
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
" Vimwiki filetype plugin file
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1 " Don't load another plugin for this buffer
|
||||||
|
|
||||||
|
" UNDO list {{{
|
||||||
|
" Reset the following options to undo this plugin.
|
||||||
|
let b:undo_ftplugin = "setlocal wrap< linebreak< ".
|
||||||
|
\ "suffixesadd< isfname< comments< ".
|
||||||
|
\ "autowriteall< ".
|
||||||
|
\ "formatoptions< foldtext< ".
|
||||||
|
\ "foldmethod< foldexpr< commentstring< "
|
||||||
|
" UNDO }}}
|
||||||
|
|
||||||
|
" MISC STUFF {{{
|
||||||
|
|
||||||
|
setlocal wrap
|
||||||
|
setlocal linebreak
|
||||||
|
setlocal autowriteall
|
||||||
|
setlocal commentstring=<!--%s-->
|
||||||
|
" MISC }}}
|
||||||
|
|
||||||
|
" GOTO FILE: gf {{{
|
||||||
|
execute 'setlocal suffixesadd='.VimwikiGet('ext')
|
||||||
|
setlocal isfname-=[,]
|
||||||
|
" gf}}}
|
||||||
|
|
||||||
|
" Autocreate list items {{{
|
||||||
|
" for list items, and list items with checkboxes
|
||||||
|
if VimwikiGet('syntax') == 'default'
|
||||||
|
setl comments=b:*,b:#,b:-
|
||||||
|
setl formatlistpat=^\\s*[*#-]\\s*
|
||||||
|
else
|
||||||
|
setl comments=n:*,n:#
|
||||||
|
endif
|
||||||
|
setlocal formatoptions=tnro
|
||||||
|
|
||||||
|
inoremap <expr> <CR> vimwiki_lst#insertCR()
|
||||||
|
nnoremap o :call vimwiki_lst#insertOo('o')<CR>a
|
||||||
|
nnoremap O :call vimwiki_lst#insertOo('O')<CR>a
|
||||||
|
|
||||||
|
" COMMENTS }}}
|
||||||
|
|
||||||
|
" FOLDING for headers and list items using expr fold method. {{{
|
||||||
|
if g:vimwiki_folding == 1
|
||||||
|
setlocal fdm=expr
|
||||||
|
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
|
||||||
|
setlocal foldtext=VimwikiFoldText()
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! VimwikiFoldLevel(lnum) "{{{
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
|
||||||
|
" Header folding...
|
||||||
|
if line =~ g:vimwiki_rxHeader
|
||||||
|
let n = vimwiki#count_first_sym(line)
|
||||||
|
return '>'.n
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:vimwiki_fold_trailing_empty_lines == 0
|
||||||
|
if line =~ '^\s*$'
|
||||||
|
let nnline = getline(nextnonblank(a:lnum + 1))
|
||||||
|
if nnline =~ g:vimwiki_rxHeader
|
||||||
|
let n = vimwiki#count_first_sym(nnline)
|
||||||
|
return '<'.n
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" List item folding...
|
||||||
|
if g:vimwiki_fold_lists
|
||||||
|
let base_level = s:get_base_level(a:lnum)
|
||||||
|
|
||||||
|
let rx_list_item = '\('.
|
||||||
|
\ g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.
|
||||||
|
\ '\)'
|
||||||
|
|
||||||
|
|
||||||
|
if line =~ rx_list_item
|
||||||
|
let [nnum, nline] = s:find_forward(rx_list_item, a:lnum)
|
||||||
|
let level = s:get_li_level(a:lnum)
|
||||||
|
let leveln = s:get_li_level(nnum)
|
||||||
|
let adj = s:get_li_level(s:get_start_list(rx_list_item, a:lnum))
|
||||||
|
|
||||||
|
if leveln > level
|
||||||
|
return ">".(base_level+leveln-adj)
|
||||||
|
else
|
||||||
|
return (base_level+level-adj)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
" process multilined list items
|
||||||
|
let [pnum, pline] = s:find_backward(rx_list_item, a:lnum)
|
||||||
|
if pline =~ rx_list_item
|
||||||
|
if indent(a:lnum) > indent(pnum)
|
||||||
|
let level = s:get_li_level(pnum)
|
||||||
|
let adj = s:get_li_level(s:get_start_list(rx_list_item, pnum))
|
||||||
|
|
||||||
|
let [nnum, nline] = s:find_forward(rx_list_item, a:lnum)
|
||||||
|
if nline =~ rx_list_item
|
||||||
|
let leveln = s:get_li_level(nnum)
|
||||||
|
if leveln > level
|
||||||
|
return (base_level+leveln-adj)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
return (base_level+level-adj)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
return base_level
|
||||||
|
endif
|
||||||
|
|
||||||
|
return -1
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:get_base_level(lnum) "{{{
|
||||||
|
let lnum = a:lnum - 1
|
||||||
|
while lnum > 0
|
||||||
|
if getline(lnum) =~ g:vimwiki_rxHeader
|
||||||
|
return vimwiki#count_first_sym(getline(lnum))
|
||||||
|
endif
|
||||||
|
let lnum -= 1
|
||||||
|
endwhile
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:find_forward(rx_item, lnum) "{{{
|
||||||
|
let lnum = a:lnum + 1
|
||||||
|
|
||||||
|
while lnum <= line('$')
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~ a:rx_item
|
||||||
|
\ || line =~ '^\S'
|
||||||
|
\ || line =~ g:vimwiki_rxHeader
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum += 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return [lnum, getline(lnum)]
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:find_backward(rx_item, lnum) "{{{
|
||||||
|
let lnum = a:lnum - 1
|
||||||
|
|
||||||
|
while lnum > 1
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~ a:rx_item
|
||||||
|
\ || line =~ '^\S'
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let lnum -= 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return [lnum, getline(lnum)]
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:get_li_level(lnum) "{{{
|
||||||
|
if VimwikiGet('syntax') == 'media'
|
||||||
|
let level = vimwiki#count_first_sym(getline(a:lnum))
|
||||||
|
else
|
||||||
|
let level = (indent(a:lnum) / &sw)
|
||||||
|
endif
|
||||||
|
return level
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:get_start_list(rx_item, lnum) "{{{
|
||||||
|
let lnum = a:lnum
|
||||||
|
while lnum >= 1
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line !~ a:rx_item && line =~ '^\S'
|
||||||
|
return nextnonblank(lnum + 1)
|
||||||
|
endif
|
||||||
|
let lnum -= 1
|
||||||
|
endwhile
|
||||||
|
return 0
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! VimwikiFoldText() "{{{
|
||||||
|
let line = substitute(getline(v:foldstart), '\t',
|
||||||
|
\ repeat(' ', &tabstop), 'g')
|
||||||
|
return line.' ['.(v:foldend - v:foldstart).']'
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" FOLDING }}}
|
||||||
|
|
||||||
|
" COMMANDS {{{
|
||||||
|
command! -buffer Vimwiki2HTML
|
||||||
|
\ call vimwiki_html#Wiki2HTML(expand(VimwikiGet('path_html')),
|
||||||
|
\ expand('%'))
|
||||||
|
command! -buffer VimwikiAll2HTML
|
||||||
|
\ call vimwiki_html#WikiAll2HTML(expand(VimwikiGet('path_html')))
|
||||||
|
|
||||||
|
command! -buffer VimwikiNextWord call vimwiki#WikiNextWord()
|
||||||
|
command! -buffer VimwikiPrevWord call vimwiki#WikiPrevWord()
|
||||||
|
command! -buffer VimwikiDeleteWord call vimwiki#WikiDeleteWord()
|
||||||
|
command! -buffer VimwikiRenameWord call vimwiki#WikiRenameWord()
|
||||||
|
command! -buffer VimwikiFollowWord call vimwiki#WikiFollowWord('nosplit')
|
||||||
|
command! -buffer VimwikiGoBackWord call vimwiki#WikiGoBackWord()
|
||||||
|
command! -buffer VimwikiSplitWord call vimwiki#WikiFollowWord('split')
|
||||||
|
command! -buffer VimwikiVSplitWord call vimwiki#WikiFollowWord('vsplit')
|
||||||
|
|
||||||
|
command! -buffer -range VimwikiToggleListItem call vimwiki_lst#ToggleListItem(<line1>, <line2>)
|
||||||
|
|
||||||
|
exe 'command! -buffer -nargs=* VimwikiSearch vimgrep <args> '.
|
||||||
|
\ escape(VimwikiGet('path').'**/*'.VimwikiGet('ext'), ' ')
|
||||||
|
|
||||||
|
exe 'command! -buffer -nargs=* VWS vimgrep <args> '.
|
||||||
|
\ escape(VimwikiGet('path').'**/*'.VimwikiGet('ext'), ' ')
|
||||||
|
|
||||||
|
" COMMANDS }}}
|
||||||
|
|
||||||
|
" KEYBINDINGS {{{
|
||||||
|
if g:vimwiki_use_mouse
|
||||||
|
nmap <buffer> <S-LeftMouse> <NOP>
|
||||||
|
nmap <buffer> <C-LeftMouse> <NOP>
|
||||||
|
noremap <silent><buffer> <2-LeftMouse> :VimwikiFollowWord<CR>
|
||||||
|
noremap <silent><buffer> <S-2-LeftMouse> <LeftMouse>:VimwikiSplitWord<CR>
|
||||||
|
noremap <silent><buffer> <C-2-LeftMouse> <LeftMouse>:VimwikiVSplitWord<CR>
|
||||||
|
noremap <silent><buffer> <RightMouse><LeftMouse> :VimwikiGoBackWord<CR>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiFollowWord')
|
||||||
|
nmap <silent><buffer> <CR> <Plug>VimwikiFollowWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiFollowWord :VimwikiFollowWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiSplitWord')
|
||||||
|
nmap <silent><buffer> <S-CR> <Plug>VimwikiSplitWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiSplitWord :VimwikiSplitWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiVSplitWord')
|
||||||
|
nmap <silent><buffer> <C-CR> <Plug>VimwikiVSplitWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiVSplitWord :VimwikiVSplitWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiGoBackWord')
|
||||||
|
nmap <silent><buffer> <BS> <Plug>VimwikiGoBackWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiGoBackWord :VimwikiGoBackWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiNextWord')
|
||||||
|
nmap <silent><buffer> <TAB> <Plug>VimwikiNextWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiNextWord :VimwikiNextWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiPrevWord')
|
||||||
|
nmap <silent><buffer> <S-TAB> <Plug>VimwikiPrevWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiPrevWord :VimwikiPrevWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiDeleteWord')
|
||||||
|
nmap <silent><buffer> <Leader>wd <Plug>VimwikiDeleteWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiDeleteWord :VimwikiDeleteWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiRenameWord')
|
||||||
|
nmap <silent><buffer> <Leader>wr <Plug>VimwikiRenameWord
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiRenameWord :VimwikiRenameWord<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiToggleListItem')
|
||||||
|
nmap <silent><buffer> <C-Space> <Plug>VimwikiToggleListItem
|
||||||
|
vmap <silent><buffer> <C-Space> <Plug>VimwikiToggleListItem
|
||||||
|
if has("unix")
|
||||||
|
nmap <silent><buffer> <C-@> <Plug>VimwikiToggleListItem
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
noremap <silent><script><buffer>
|
||||||
|
\ <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
|
||||||
|
|
||||||
|
|
||||||
|
" Text objects {{{
|
||||||
|
omap <silent><buffer> ah :<C-U>call vimwiki#TO_header(0, 0)<CR>
|
||||||
|
vmap <silent><buffer> ah :<C-U>call vimwiki#TO_header(0, 1)<CR>
|
||||||
|
|
||||||
|
omap <silent><buffer> ih :<C-U>call vimwiki#TO_header(1, 0)<CR>
|
||||||
|
vmap <silent><buffer> ih :<C-U>call vimwiki#TO_header(1, 1)<CR>
|
||||||
|
|
||||||
|
nmap <silent><buffer> = :call vimwiki#AddHeaderLevel()<CR>
|
||||||
|
nmap <silent><buffer> - :call vimwiki#RemoveHeaderLevel()<CR>
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" KEYBINDINGS }}}
|
336
plugin/vimwiki.vim
Normal file
336
plugin/vimwiki.vim
Normal file
@ -0,0 +1,336 @@
|
|||||||
|
" Vimwiki plugin file
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
" GetLatestVimScripts: 2226 1 :AutoInstall: vimwiki
|
||||||
|
|
||||||
|
if exists("loaded_vimwiki") || &cp
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let loaded_vimwiki = 1
|
||||||
|
|
||||||
|
let s:old_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" HELPER functions {{{
|
||||||
|
function! s:default(varname, value) "{{{
|
||||||
|
if !exists('g:vimwiki_'.a:varname)
|
||||||
|
let g:vimwiki_{a:varname} = a:value
|
||||||
|
endif
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! Str_common_part(str1, str2)"{{{
|
||||||
|
let idx = 0
|
||||||
|
let minlen = min([len(a:str1), len(a:str2)])
|
||||||
|
while (idx < minlen) && (a:str1[idx] == a:str2[idx])
|
||||||
|
let idx = idx + 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return strpart(a:str1, 0, idx)
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! s:chomp_slash(str)"{{{
|
||||||
|
return substitute(a:str, '[/\\]\+$', '', '')
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! s:find_wiki(path) "{{{
|
||||||
|
let idx = 0
|
||||||
|
while idx < len(g:vimwiki_list)
|
||||||
|
let path = s:chomp_slash(expand(VimwikiGet('path', idx)))
|
||||||
|
if Str_common_part(path, a:path) == path
|
||||||
|
return idx
|
||||||
|
endif
|
||||||
|
let idx += 1
|
||||||
|
endwhile
|
||||||
|
return -1
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:setup_buffer_leave()"{{{
|
||||||
|
if &filetype == 'vimwiki' && !exists("b:vimwiki_idx")
|
||||||
|
let b:vimwiki_idx = g:vimwiki_current_idx
|
||||||
|
endif
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
function! s:setup_buffer_enter() "{{{
|
||||||
|
if exists("b:vimwiki_idx")
|
||||||
|
let g:vimwiki_current_idx = b:vimwiki_idx
|
||||||
|
else
|
||||||
|
" Find what wiki current buffer belongs to.
|
||||||
|
" If wiki does not exist in g:vimwiki_list -- add new wiki there with
|
||||||
|
" buffer's path and ext.
|
||||||
|
" Else set g:vimwiki_current_idx to that wiki index.
|
||||||
|
let path = expand('%:p:h')
|
||||||
|
let ext = '.'.expand('%:e')
|
||||||
|
let idx = s:find_wiki(path)
|
||||||
|
|
||||||
|
" The buffer's file is not in the path and user do not want his wiki
|
||||||
|
" extension to be global -- do not add new wiki.
|
||||||
|
if idx == -1 && g:vimwiki_global_ext == 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if idx == -1
|
||||||
|
call add(g:vimwiki_list, {'path': path, 'ext': ext})
|
||||||
|
let g:vimwiki_current_idx = len(g:vimwiki_list) - 1
|
||||||
|
else
|
||||||
|
let g:vimwiki_current_idx = idx
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:vimwiki_idx = g:vimwiki_current_idx
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:setup_colors()
|
||||||
|
|
||||||
|
if &filetype != 'vimwiki'
|
||||||
|
setlocal ft=vimwiki
|
||||||
|
else
|
||||||
|
setlocal syntax=vimwiki
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Settings foldmethod, foldexpr and foldtext are local to window. Thus in a
|
||||||
|
" new tab with the same buffer folding is reset to vim defaults. So we
|
||||||
|
" insist vimwiki folding here.
|
||||||
|
" TODO: remove the same from ftplugin.
|
||||||
|
if g:vimwiki_folding == 1 && &fdm != 'expr'
|
||||||
|
setlocal fdm=expr
|
||||||
|
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
|
||||||
|
setlocal foldtext=VimwikiFoldText()
|
||||||
|
endif
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
function! s:setup_colors()"{{{
|
||||||
|
if g:vimwiki_hl_headers == 0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if &background == 'light'
|
||||||
|
hi def VimwikiHeader1 guibg=bg guifg=#aa5858 gui=bold ctermfg=DarkRed
|
||||||
|
hi def VimwikiHeader2 guibg=bg guifg=#309010 gui=bold ctermfg=DarkGreen
|
||||||
|
hi def VimwikiHeader3 guibg=bg guifg=#1030a0 gui=bold ctermfg=DarkBlue
|
||||||
|
hi def VimwikiHeader4 guibg=bg guifg=#103040 gui=bold ctermfg=Black
|
||||||
|
hi def VimwikiHeader5 guibg=bg guifg=#001020 gui=bold ctermfg=Black
|
||||||
|
hi def VimwikiHeader6 guibg=bg guifg=#000000 gui=bold ctermfg=Black
|
||||||
|
else
|
||||||
|
hi def VimwikiHeader1 guibg=bg guifg=#e08090 gui=bold ctermfg=Red
|
||||||
|
hi def VimwikiHeader2 guibg=bg guifg=#80e090 gui=bold ctermfg=Green
|
||||||
|
hi def VimwikiHeader3 guibg=bg guifg=#6090e0 gui=bold ctermfg=Blue
|
||||||
|
hi def VimwikiHeader4 guibg=bg guifg=#c0c0f0 gui=bold ctermfg=White
|
||||||
|
hi def VimwikiHeader5 guibg=bg guifg=#e0e0f0 gui=bold ctermfg=White
|
||||||
|
hi def VimwikiHeader6 guibg=bg guifg=#f0f0f0 gui=bold ctermfg=White
|
||||||
|
endif
|
||||||
|
endfunction"}}}
|
||||||
|
|
||||||
|
" OPTION get/set functions {{{
|
||||||
|
" return value of option for current wiki or if second parameter exists for
|
||||||
|
" wiki with a given index.
|
||||||
|
function! VimwikiGet(option, ...) "{{{
|
||||||
|
if a:0 == 0
|
||||||
|
let idx = g:vimwiki_current_idx
|
||||||
|
else
|
||||||
|
let idx = a:1
|
||||||
|
endif
|
||||||
|
if !has_key(g:vimwiki_list[idx], a:option) &&
|
||||||
|
\ has_key(s:vimwiki_defaults, a:option)
|
||||||
|
if a:option == 'path_html'
|
||||||
|
let g:vimwiki_list[idx][a:option] =
|
||||||
|
\VimwikiGet('path', idx)[:-2].'_html/'
|
||||||
|
else
|
||||||
|
let g:vimwiki_list[idx][a:option] =
|
||||||
|
\s:vimwiki_defaults[a:option]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" if path's ending is not a / or \
|
||||||
|
" then add it
|
||||||
|
if a:option == 'path' || a:option == 'path_html'
|
||||||
|
let p = g:vimwiki_list[idx][a:option]
|
||||||
|
" resolve doesn't work quite right with symlinks ended with / or \
|
||||||
|
let p = substitute(p, '[/\\]\+$', '', '')
|
||||||
|
let p = resolve(expand(p))
|
||||||
|
let g:vimwiki_list[idx][a:option] = p.'/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return g:vimwiki_list[idx][a:option]
|
||||||
|
endfunction "}}}
|
||||||
|
|
||||||
|
" set option for current wiki or if third parameter exists for
|
||||||
|
" wiki with a given index.
|
||||||
|
function! VimwikiSet(option, value, ...) "{{{
|
||||||
|
if a:0 == 0
|
||||||
|
let idx = g:vimwiki_current_idx
|
||||||
|
else
|
||||||
|
let idx = a:1
|
||||||
|
endif
|
||||||
|
let g:vimwiki_list[idx][a:option] = a:value
|
||||||
|
endfunction "}}}
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
" CALLBACK function "{{{
|
||||||
|
" User can redefine it.
|
||||||
|
if !exists("*VimwikiWeblinkHandler") "{{{
|
||||||
|
function VimwikiWeblinkHandler(weblink)
|
||||||
|
for browser in g:vimwiki_browsers
|
||||||
|
if executable(browser)
|
||||||
|
if has("win32")
|
||||||
|
execute '!start "'.browser.'" ' . a:weblink
|
||||||
|
else
|
||||||
|
execute '!'.browser.' ' . a:weblink
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
endif "}}}
|
||||||
|
" CALLBACK }}}
|
||||||
|
|
||||||
|
" DEFAULT wiki {{{
|
||||||
|
let s:vimwiki_defaults = {}
|
||||||
|
let s:vimwiki_defaults.path = '~/vimwiki/'
|
||||||
|
let s:vimwiki_defaults.path_html = '~/vimwiki_html/'
|
||||||
|
let s:vimwiki_defaults.css_name = 'style.css'
|
||||||
|
let s:vimwiki_defaults.index = 'index'
|
||||||
|
let s:vimwiki_defaults.ext = '.wiki'
|
||||||
|
let s:vimwiki_defaults.maxhi = 1
|
||||||
|
let s:vimwiki_defaults.syntax = 'default'
|
||||||
|
let s:vimwiki_defaults.gohome = 'split'
|
||||||
|
let s:vimwiki_defaults.html_header = ''
|
||||||
|
let s:vimwiki_defaults.html_footer = ''
|
||||||
|
let s:vimwiki_defaults.nested_syntaxes = {}
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" DEFAULT options {{{
|
||||||
|
call s:default('list', [s:vimwiki_defaults])
|
||||||
|
if &encoding == 'utf-8'
|
||||||
|
call s:default('upper', 'A-Z\u0410-\u042f')
|
||||||
|
call s:default('lower', 'a-z\u0430-\u044f')
|
||||||
|
else
|
||||||
|
call s:default('upper', 'A-Z')
|
||||||
|
call s:default('lower', 'a-z')
|
||||||
|
endif
|
||||||
|
call s:default('other', '0-9')
|
||||||
|
call s:default('stripsym', '_')
|
||||||
|
call s:default('badsyms', '')
|
||||||
|
call s:default('auto_checkbox', 1)
|
||||||
|
call s:default('use_mouse', 0)
|
||||||
|
call s:default('folding', 0)
|
||||||
|
call s:default('fold_trailing_empty_lines', 0)
|
||||||
|
call s:default('fold_lists', 0)
|
||||||
|
call s:default('menu', 'Vimwiki')
|
||||||
|
call s:default('global_ext', 1)
|
||||||
|
call s:default('hl_headers', 0)
|
||||||
|
call s:default('hl_cb_checked', 0)
|
||||||
|
call s:default('camel_case', 1)
|
||||||
|
call s:default('list_ignore_newline', 1)
|
||||||
|
call s:default('listsyms', ' .oOX')
|
||||||
|
if has("win32")
|
||||||
|
call s:default('browsers',
|
||||||
|
\ [
|
||||||
|
\ expand('~').'\Local Settings\Application Data\Google\Chrome\Application\chrome.exe',
|
||||||
|
\ 'C:\Program Files\Opera\opera.exe',
|
||||||
|
\ 'C:\Program Files\Mozilla Firefox\firefox.exe',
|
||||||
|
\ 'C:\Program Files\Internet Explorer\iexplore.exe',
|
||||||
|
\ ])
|
||||||
|
else
|
||||||
|
call s:default('browsers',
|
||||||
|
\ [
|
||||||
|
\ 'opera',
|
||||||
|
\ 'firefox',
|
||||||
|
\ 'konqueror',
|
||||||
|
\ ])
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:default('current_idx', 0)
|
||||||
|
|
||||||
|
let upp = g:vimwiki_upper
|
||||||
|
let low = g:vimwiki_lower
|
||||||
|
let oth = g:vimwiki_other
|
||||||
|
let nup = low.oth
|
||||||
|
let nlo = upp.oth
|
||||||
|
let any = upp.nup
|
||||||
|
|
||||||
|
let g:vimwiki_word1 = '\C\<['.upp.']['.nlo.']*['.
|
||||||
|
\ low.']['.nup.']*['.upp.']['.any.']*\>'
|
||||||
|
let g:vimwiki_word2 = '\[\[[^\]]\+\]\]'
|
||||||
|
let g:vimwiki_word3 = '\[\[[^\]]\+\]\[[^\]]\+\]\]'
|
||||||
|
if g:vimwiki_camel_case
|
||||||
|
let g:vimwiki_rxWikiWord = g:vimwiki_word1.'\|'.g:vimwiki_word2.'\|'.g:vimwiki_word3
|
||||||
|
else
|
||||||
|
let g:vimwiki_rxWikiWord = g:vimwiki_word2.'\|'.g:vimwiki_word3
|
||||||
|
endif
|
||||||
|
let g:vimwiki_rxWeblink = '\%("[^"(]\+\((\([^)]\+\))\)\?":\)\?'.
|
||||||
|
\'\%(https\?\|ftp\|gopher\|telnet\|file\|notes\|ms-help\):'.
|
||||||
|
\'\%(\%(\%(//\)\|\%(\\\\\)\)\+[A-Za-z0-9:#@%/;,$~()_?+=.&\\\-]*\)'
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" FILETYPE setup for all known wiki extensions {{{
|
||||||
|
" Getting all extensions that different wikies could have
|
||||||
|
let extensions = {}
|
||||||
|
for wiki in g:vimwiki_list
|
||||||
|
if has_key(wiki, 'ext')
|
||||||
|
let extensions[wiki.ext] = 1
|
||||||
|
else
|
||||||
|
let extensions['.wiki'] = 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
augroup filetypedetect
|
||||||
|
" clear FlexWiki's stuff
|
||||||
|
au! * *.wiki
|
||||||
|
augroup end
|
||||||
|
|
||||||
|
augroup vimwiki
|
||||||
|
autocmd!
|
||||||
|
for ext in keys(extensions)
|
||||||
|
execute 'autocmd BufEnter *'.ext.' call s:setup_buffer_enter()'
|
||||||
|
execute 'autocmd BufLeave,BufHidden *'.ext.' call s:setup_buffer_leave()'
|
||||||
|
|
||||||
|
" ColorScheme could have or could have not a VimwikiHeader1..VimwikiHeader6
|
||||||
|
" highlight groups. We need to refresh syntax after colorscheme change.
|
||||||
|
execute 'autocmd ColorScheme *'.ext.' call s:setup_colors() | set syntax=vimwiki'
|
||||||
|
endfor
|
||||||
|
augroup END
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" COMMANDS {{{
|
||||||
|
command! VimwikiUISelect call vimwiki#WikiUISelect()
|
||||||
|
command! -count VimwikiGoHome
|
||||||
|
\ call vimwiki#WikiGoHome(v:count1)
|
||||||
|
command! -count VimwikiTabGoHome tabedit <bar>
|
||||||
|
\ call vimwiki#WikiGoHome(v:count1)
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" MAPPINGS {{{
|
||||||
|
if !hasmapto('<Plug>VimwikiGoHome')
|
||||||
|
map <silent><unique> <Leader>ww <Plug>VimwikiGoHome
|
||||||
|
endif
|
||||||
|
noremap <unique><script> <Plug>VimwikiGoHome :VimwikiGoHome<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiTabGoHome')
|
||||||
|
map <silent><unique> <Leader>wt <Plug>VimwikiTabGoHome
|
||||||
|
endif
|
||||||
|
noremap <unique><script> <Plug>VimwikiTabGoHome :VimwikiTabGoHome<CR>
|
||||||
|
|
||||||
|
if !hasmapto('<Plug>VimwikiUISelect')
|
||||||
|
map <silent><unique> <Leader>ws <Plug>VimwikiUISelect
|
||||||
|
endif
|
||||||
|
noremap <unique><script> <Plug>VimwikiUISelect :VimwikiUISelect<CR>
|
||||||
|
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" MENU {{{
|
||||||
|
function! s:build_menu(path)
|
||||||
|
let idx = 0
|
||||||
|
while idx < len(g:vimwiki_list)
|
||||||
|
execute 'menu '.a:path.'.'.VimwikiGet('path', idx).
|
||||||
|
\ ' :call vimwiki#WikiGoHome('.(idx + 1).')<CR>'
|
||||||
|
let idx += 1
|
||||||
|
endwhile
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if !empty(g:vimwiki_menu)
|
||||||
|
call s:build_menu(g:vimwiki_menu)
|
||||||
|
endif
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
let &cpo = s:old_cpo
|
141
syntax/vimwiki.vim
Normal file
141
syntax/vimwiki.vim
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
" Vimwiki syntax file
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
" vim:tw=79:
|
||||||
|
|
||||||
|
" Quit if syntax file is already loaded
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
"" use max highlighting - could be quite slow if there are too many wikifiles
|
||||||
|
if VimwikiGet('maxhi')
|
||||||
|
" Every WikiWord is nonexistent
|
||||||
|
if g:vimwiki_camel_case
|
||||||
|
execute 'syntax match VimwikiNoExistsWord /\%(^\|[^!]\)\@<='.g:vimwiki_word1.'/'
|
||||||
|
endif
|
||||||
|
execute 'syntax match VimwikiNoExistsWord /'.g:vimwiki_word2.'/'
|
||||||
|
execute 'syntax match VimwikiNoExistsWord /'.g:vimwiki_word3.'/'
|
||||||
|
" till we find them in vimwiki's path
|
||||||
|
call vimwiki#WikiHighlightWords()
|
||||||
|
else
|
||||||
|
" A WikiWord (unqualifiedWikiName)
|
||||||
|
execute 'syntax match VimwikiWord /\%(^\|[^!]\)\@<=\<'.g:vimwiki_word1.'\>/'
|
||||||
|
" A [[bracketed wiki word]]
|
||||||
|
execute 'syntax match VimwikiWord /'.g:vimwiki_word2.'/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiLink `'.g:vimwiki_rxWeblink.'`'
|
||||||
|
|
||||||
|
" Emoticons
|
||||||
|
syntax match VimwikiEmoticons /\%((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
|
||||||
|
|
||||||
|
let g:vimwiki_rxTodo = '\C\%(TODO:\|DONE:\|FIXME:\|FIXED:\|XXX:\)'
|
||||||
|
execute 'syntax match VimwikiTodo /'. g:vimwiki_rxTodo .'/'
|
||||||
|
|
||||||
|
" Load concrete Wiki syntax
|
||||||
|
execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim'
|
||||||
|
|
||||||
|
" Tables
|
||||||
|
execute 'syntax match VimwikiTable /'.g:vimwiki_rxTable.'/'
|
||||||
|
|
||||||
|
" List items
|
||||||
|
execute 'syntax match VimwikiList /'.g:vimwiki_rxListBullet.'/'
|
||||||
|
execute 'syntax match VimwikiList /'.g:vimwiki_rxListNumber.'/'
|
||||||
|
execute 'syntax match VimwikiList /'.g:vimwiki_rxListDefine.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiBold /'.g:vimwiki_rxBold.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiItalic /'.g:vimwiki_rxItalic.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiBoldItalic /'.g:vimwiki_rxBoldItalic.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiItalicBold /'.g:vimwiki_rxItalicBold.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiDelText /'.g:vimwiki_rxDelText.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiSuperScript /'.g:vimwiki_rxSuperScript.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiSubScript /'.g:vimwiki_rxSubScript.'/'
|
||||||
|
|
||||||
|
execute 'syntax match VimwikiCode /'.g:vimwiki_rxCode.'/'
|
||||||
|
|
||||||
|
" <hr> horizontal rule
|
||||||
|
execute 'syntax match VimwikiHR /'.g:vimwiki_rxHR.'/'
|
||||||
|
|
||||||
|
execute 'syntax region VimwikiPre start=/'.g:vimwiki_rxPreStart.
|
||||||
|
\ '/ end=/'.g:vimwiki_rxPreEnd.'/ contains=VimwikiComment'
|
||||||
|
|
||||||
|
" List item checkbox
|
||||||
|
syntax match VimwikiCheckBox /\[.\?\]/
|
||||||
|
if g:vimwiki_hl_cb_checked
|
||||||
|
execute 'syntax match VimwikiCheckBoxDone /'.
|
||||||
|
\ g:vimwiki_rxListBullet.'\s*\['.g:vimwiki_listsyms[4].'\].*$/'
|
||||||
|
execute 'syntax match VimwikiCheckBoxDone /'.
|
||||||
|
\ g:vimwiki_rxListNumber.'\s*\['.g:vimwiki_listsyms[4].'\].*$/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
syntax region VimwikiComment start='<!--' end='-->'
|
||||||
|
|
||||||
|
if !vimwiki#hl_exists("VimwikiHeader1")
|
||||||
|
execute 'syntax match VimwikiHeader /'.g:vimwiki_rxHeader.'/'
|
||||||
|
else
|
||||||
|
" Header levels, 1-6
|
||||||
|
execute 'syntax match VimwikiHeader1 /'.g:vimwiki_rxH1.'/'
|
||||||
|
execute 'syntax match VimwikiHeader2 /'.g:vimwiki_rxH2.'/'
|
||||||
|
execute 'syntax match VimwikiHeader3 /'.g:vimwiki_rxH3.'/'
|
||||||
|
execute 'syntax match VimwikiHeader4 /'.g:vimwiki_rxH4.'/'
|
||||||
|
execute 'syntax match VimwikiHeader5 /'.g:vimwiki_rxH5.'/'
|
||||||
|
execute 'syntax match VimwikiHeader6 /'.g:vimwiki_rxH6.'/'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" group names "{{{
|
||||||
|
if !vimwiki#hl_exists("VimwikiHeader1")
|
||||||
|
hi def link VimwikiHeader Title
|
||||||
|
else
|
||||||
|
hi def link VimwikiHeader1 Title
|
||||||
|
hi def link VimwikiHeader2 Title
|
||||||
|
hi def link VimwikiHeader3 Title
|
||||||
|
hi def link VimwikiHeader4 Title
|
||||||
|
hi def link VimwikiHeader5 Title
|
||||||
|
hi def link VimwikiHeader6 Title
|
||||||
|
endif
|
||||||
|
|
||||||
|
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 link VimwikiItalicBold VimwikiBoldItalic
|
||||||
|
|
||||||
|
hi def link VimwikiCode PreProc
|
||||||
|
hi def link VimwikiWord Underlined
|
||||||
|
hi def link VimwikiNoExistsWord Error
|
||||||
|
|
||||||
|
hi def link VimwikiPre SpecialComment
|
||||||
|
hi def link VimwikiLink Underlined
|
||||||
|
hi def link VimwikiList Function
|
||||||
|
hi def link VimwikiCheckBox VimwikiList
|
||||||
|
hi def link VimwikiCheckBoxDone Comment
|
||||||
|
hi def link VimwikiTable PreProc
|
||||||
|
hi def link VimwikiEmoticons Character
|
||||||
|
hi def link VimwikiDelText Constant
|
||||||
|
hi def link VimwikiSuperScript Number
|
||||||
|
hi def link VimwikiSubScript Number
|
||||||
|
hi def link VimwikiTodo Todo
|
||||||
|
hi def link VimwikiComment Comment
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
let b:current_syntax="vimwiki"
|
||||||
|
|
||||||
|
" EMBEDDED syntax setup "{{{
|
||||||
|
let nested = VimwikiGet('nested_syntaxes')
|
||||||
|
if !empty(nested)
|
||||||
|
for [hl_syntax, vim_syntax] in items(nested)
|
||||||
|
call vimwiki#nested_syntax(vim_syntax,
|
||||||
|
\ '^{{{\%(.*[[:blank:][:punct:]]\)\?'.
|
||||||
|
\ hl_syntax.'\%([[:blank:][:punct:]].*\)\?',
|
||||||
|
\ '^}}}', 'VimwikiPre')
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
"}}}
|
76
syntax/vimwiki_default.vim
Normal file
76
syntax/vimwiki_default.vim
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
" Vimwiki syntax file
|
||||||
|
" Default syntax
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
" vim:tw=78:
|
||||||
|
|
||||||
|
" text: *strong*
|
||||||
|
" let g:vimwiki_rxBold = '\*[^*]\+\*'
|
||||||
|
let g:vimwiki_rxBold = '\%(^\|\s\|[[:punct:]]\)\@<='.
|
||||||
|
\'\*'.
|
||||||
|
\'\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`]\)'.
|
||||||
|
\'\*'.
|
||||||
|
\'\%([[:punct:]]\|\s\|$\)\@='
|
||||||
|
|
||||||
|
" text: _emphasis_
|
||||||
|
" let g:vimwiki_rxItalic = '_[^_]\+_'
|
||||||
|
let g:vimwiki_rxItalic = '\%(^\|\s\|[[:punct:]]\)\@<='.
|
||||||
|
\'_'.
|
||||||
|
\'\%([^_`[:space:]][^_`]*[^_`[:space:]]\|[^_`]\)'.
|
||||||
|
\'_'.
|
||||||
|
\'\%([[:punct:]]\|\s\|$\)\@='
|
||||||
|
|
||||||
|
" text: *_bold italic_* or _*italic bold*_
|
||||||
|
let g:vimwiki_rxBoldItalic = '\%(^\|\s\|[[:punct:]]\)\@<='.
|
||||||
|
\'\*_'.
|
||||||
|
\'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`]\)'.
|
||||||
|
\'_\*'.
|
||||||
|
\'\%([[:punct:]]\|\s\|$\)\@='
|
||||||
|
|
||||||
|
let g:vimwiki_rxItalicBold = '\%(^\|\s\|[[:punct:]]\)\@<='.
|
||||||
|
\'_\*'.
|
||||||
|
\'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`]\)'.
|
||||||
|
\'\*_'.
|
||||||
|
\'\%([[:punct:]]\|\s\|$\)\@='
|
||||||
|
|
||||||
|
" text: `code`
|
||||||
|
let g:vimwiki_rxCode = '`[^`]\+`'
|
||||||
|
|
||||||
|
" text: ~~deleted text~~
|
||||||
|
let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~'
|
||||||
|
|
||||||
|
" text: ^superscript^
|
||||||
|
let g:vimwiki_rxSuperScript = '\^[^^`]\+\^'
|
||||||
|
|
||||||
|
" text: ,,subscript,,
|
||||||
|
let g:vimwiki_rxSubScript = ',,[^,`]\+,,'
|
||||||
|
|
||||||
|
" Header levels, 1-6
|
||||||
|
let g:vimwiki_rxH1 = '^\s*=\{1}[^=]\+.*[^=]\+=\{1}\s*$'
|
||||||
|
let g:vimwiki_rxH2 = '^\s*=\{2}[^=]\+.*[^=]\+=\{2}\s*$'
|
||||||
|
let g:vimwiki_rxH3 = '^\s*=\{3}[^=]\+.*[^=]\+=\{3}\s*$'
|
||||||
|
let g:vimwiki_rxH4 = '^\s*=\{4}[^=]\+.*[^=]\+=\{4}\s*$'
|
||||||
|
let g:vimwiki_rxH5 = '^\s*=\{5}[^=]\+.*[^=]\+=\{5}\s*$'
|
||||||
|
let g:vimwiki_rxH6 = '^\s*=\{6}[^=]\+.*[^=]\+=\{6}\s*$'
|
||||||
|
let g:vimwiki_rxHeader = '\%('.g:vimwiki_rxH1.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH2.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH3.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH4.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH5.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH6.'\)'
|
||||||
|
|
||||||
|
" <hr>, horizontal rule
|
||||||
|
let g:vimwiki_rxHR = '^----.*$'
|
||||||
|
|
||||||
|
" Tables. Each line starts and ends with '||'; each cell is separated by '||'
|
||||||
|
let g:vimwiki_rxTable = '||'
|
||||||
|
|
||||||
|
" List items start with optional whitespace(s) then '* ' or '# '
|
||||||
|
let g:vimwiki_rxListBullet = '^\s*\%(\*\|-\)\s'
|
||||||
|
let g:vimwiki_rxListNumber = '^\s*#\s'
|
||||||
|
|
||||||
|
let g:vimwiki_rxListDefine = '::\(\s\|$\)'
|
||||||
|
|
||||||
|
" Preformatted text
|
||||||
|
let g:vimwiki_rxPreStart = '{{{'
|
||||||
|
let g:vimwiki_rxPreEnd = '}}}'
|
58
syntax/vimwiki_media.vim
Normal file
58
syntax/vimwiki_media.vim
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
" Vimwiki syntax file
|
||||||
|
" MediaWiki syntax
|
||||||
|
" Author: Maxim Kim <habamax@gmail.com>
|
||||||
|
" Home: http://code.google.com/p/vimwiki/
|
||||||
|
" vim:tw=78:
|
||||||
|
|
||||||
|
" text: '''strong'''
|
||||||
|
let g:vimwiki_rxBold = "'''[^']\\+'''"
|
||||||
|
|
||||||
|
" text: ''emphasis''
|
||||||
|
let g:vimwiki_rxItalic = "''[^']\\+''"
|
||||||
|
|
||||||
|
" text: '''''strong italic'''''
|
||||||
|
let g:vimwiki_rxBoldItalic = "'''''[^']\\+'''''"
|
||||||
|
let g:vimwiki_rxItalicBold = g:vimwiki_rxBoldItalic
|
||||||
|
|
||||||
|
" text: `code`
|
||||||
|
let g:vimwiki_rxCode = '`[^`]\+`'
|
||||||
|
|
||||||
|
" text: ~~deleted text~~
|
||||||
|
let g:vimwiki_rxDelText = '\~\~[^~]\+\~\~'
|
||||||
|
|
||||||
|
" text: ^superscript^
|
||||||
|
let g:vimwiki_rxSuperScript = '\^[^^]\+\^'
|
||||||
|
|
||||||
|
" text: ,,subscript,,
|
||||||
|
let g:vimwiki_rxSubScript = ',,[^,]\+,,'
|
||||||
|
|
||||||
|
" Header levels, 1-6
|
||||||
|
let g:vimwiki_rxH1 = '^\s*=\{1}[^=]\+.*[^=]\+=\{1}\s*$'
|
||||||
|
let g:vimwiki_rxH2 = '^\s*=\{2}[^=]\+.*[^=]\+=\{2}\s*$'
|
||||||
|
let g:vimwiki_rxH3 = '^\s*=\{3}[^=]\+.*[^=]\+=\{3}\s*$'
|
||||||
|
let g:vimwiki_rxH4 = '^\s*=\{4}[^=]\+.*[^=]\+=\{4}\s*$'
|
||||||
|
let g:vimwiki_rxH5 = '^\s*=\{5}[^=]\+.*[^=]\+=\{5}\s*$'
|
||||||
|
let g:vimwiki_rxH6 = '^\s*=\{6}[^=]\+.*[^=]\+=\{6}\s*$'
|
||||||
|
let g:vimwiki_rxHeader = '\%('.g:vimwiki_rxH1.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH2.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH3.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH4.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH5.'\)\|'.
|
||||||
|
\ '\%('.g:vimwiki_rxH6.'\)'
|
||||||
|
|
||||||
|
" <hr>, horizontal rule
|
||||||
|
let g:vimwiki_rxHR = '^----.*$'
|
||||||
|
|
||||||
|
" Tables. Each line starts and ends with '||'; each cell is separated by '||'
|
||||||
|
let g:vimwiki_rxTable = '||'
|
||||||
|
|
||||||
|
" Bulleted list items start with whitespace(s), then '*'
|
||||||
|
" highlight only bullets and digits.
|
||||||
|
let g:vimwiki_rxListBullet = '^\s*\*\+\([^*]*$\)\@='
|
||||||
|
let g:vimwiki_rxListNumber = '^\s*#\+'
|
||||||
|
|
||||||
|
let g:vimwiki_rxListDefine = '^\%(;\|:\)\s'
|
||||||
|
|
||||||
|
" Preformatted text
|
||||||
|
let g:vimwiki_rxPreStart = '<pre>'
|
||||||
|
let g:vimwiki_rxPreEnd = '<\/pre>'
|
4361
vimwiki_0_9_701.vba
4361
vimwiki_0_9_701.vba
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user