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:
		
							
								
								
									
										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
											
										
									
								
							
		Reference in New Issue
	
	Block a user