" Vimball Archiver by Charles E. Campbell, Jr., Ph.D. UseVimball finish syntax\vimwiki.vim [[[1 140 " Vimwiki syntax file " Author: Maxim Kim " 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 /\%(^\|[^!]\)\zs'.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 /\%(^\|[^!]\)\zs\<'.g:vimwiki_word1.'\>/' " A [[bracketed wiki word]] execute 'syntax match VimwikiWord /'.g:vimwiki_word2.'/' endif execute 'syntax match VimwikiLink `'.g:vimwiki_rxWeblink.'`' " Emoticons: must come after the Textilisms, as later rules take precedence " over earlier ones. This match is an approximation for the ~70 distinct 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.'/' 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.'/' "
horizontal rule execute 'syntax match VimwikiHR /'.g:vimwiki_rxHR.'/' " 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 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*\[x\].*$/' execute 'syntax match VimwikiCheckBoxDone /'.g:vimwiki_rxListNumber.'\s*\[x\].*$/' endif syntax region VimwikiComment start='' 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 "}}} syntax\vimwiki_default.vim [[[1 76 " Vimwiki syntax file " Default syntax " Author: Maxim Kim " 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.'\)' "
, 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 whitespace(s) then '*' or '#' let g:vimwiki_rxListBullet = '^\s\+\*' let g:vimwiki_rxListNumber = '^\s\+#' let g:vimwiki_rxListDefine = '::\(\s\|$\)' " Preformatted text let g:vimwiki_rxPreStart = '{{{' let g:vimwiki_rxPreEnd = '}}}' syntax\vimwiki_media.vim [[[1 58 " Vimwiki syntax file " MediaWiki syntax " Author: Maxim Kim " 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.'\)' "
, 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 = '
'
let g:vimwiki_rxPreEnd = '<\/pre>'
ftplugin\vimwiki.vim	[[[1
286
" Vimwiki filetype plugin file
" Author: Maxim Kim 
" 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=
" MISC }}}

" GOTO FILE: gf {{{
execute 'setlocal suffixesadd='.VimwikiGet('ext')
setlocal isfname-=[,]
" gf}}}

" COMMENTS: autocreate list items {{{
" for list items, and list items with checkboxes
if VimwikiGet('syntax') == 'default'
  exe 'setl comments=b:\ *\ ['.escape(g:vimwiki_listsyms[0], ' ').
        \ '],b:\ *\ ['.g:vimwiki_listsyms[4].']'
  exe 'setl comments+=b:\ #\ ['.escape(g:vimwiki_listsyms[0], ' ').
        \ '],b:\ #\ ['.g:vimwiki_listsyms[4].']'
  setl comments+=b:\ *,b:\ #
  setl formatlistpat=^\\s\\+[*#]\\s*
else
  exe 'setl comments=n:*\ ['.escape(g:vimwiki_listsyms[0], ' ').
        \ '],n:*\ ['.g:vimwiki_listsyms[4].']'
  exe 'setl comments+=n:#\ ['.escape(g:vimwiki_listsyms[0], ' ').
        \ '],n:#\ ['.g:vimwiki_listsyms[4].']'
  setl comments+=n:*,n:#
endif
setlocal formatoptions=tnro
" 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_empty_lines == 0
    let nnline = getline(nextnonblank(a:lnum + 1))
    if nnline =~ g:vimwiki_rxHeader
      let n = vimwiki#count_first_sym(nnline)
      return '<' . n
    endif
  endif

  " List item folding...
  if g:vimwiki_fold_lists
    let rx_list_item = '\('.
          \ g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.
          \ '\)'

    if line =~ rx_list_item
      let [nnum, nline] = s:find_next_item(rx_list_item, a:lnum)
      if nline =~ rx_list_item
        let level = s:get_li_level(a:lnum, nnum)
        if !(level < 0 && (nnum - a:lnum) > 1)
          return s:fold_marker(level)
        endif
      elseif nnum - a:lnum == 1
        " last single-lined list item in a list
        let level = s:get_li_level_last(a:lnum)
        return s:fold_marker(level)
      endif
    else
      let [pnum, pline] = s:find_prev_item(rx_list_item, a:lnum)
      if pline =~ rx_list_item
        if getline(a:lnum + 1) =~ rx_list_item
          let level = s:get_li_level(pnum, a:lnum + 1)
          if level < 0
            return s:fold_marker(level)
          endif
        endif

        let [nnum, nline] = s:find_next_item(rx_list_item, pnum)
        if nline !~ rx_list_item && nnum-a:lnum == 1
          " last multi-lined list item in a list
          let level = s:get_li_level_last(pnum)
          return s:fold_marker(level)
        endif

      endif
    endif

  endif

  return '='
endfunction "}}}

function! s:fold_marker(level) "{{{
  if a:level > 0
    return "a".a:level
  elseif a:level < 0
    return "s".abs(a:level)
  else
    return "="
  endif
endfunction "}}}

function! s:find_next_item(rx_item, lnum) "{{{
  let lnum = a:lnum + 1

  while lnum <= line('$')
    if getline(lnum) =~ a:rx_item
          \ || getline(lnum) =~ '^\S'
          \ || indent(lnum) <= indent(a:lnum)
      break
    endif
    let lnum += 1
  endwhile

  return [lnum, getline(lnum)]
endfunction "}}}

function! s:find_prev_item(rx_item, lnum) "{{{
  let lnum = a:lnum - 1

  while lnum > 1
    if getline(lnum) =~ a:rx_item
          \ || getline(lnum) =~ '^\S'
      break
    endif
    let lnum -= 1
  endwhile

  return [lnum, getline(lnum)]
endfunction "}}}

function! s:get_li_level(lnum, nnum) "{{{
  if VimwikiGet('syntax') == 'media'
    let level = vimwiki#count_first_sym(getline(a:nnum)) -
          \ vimwiki#count_first_sym(getline(a:lnum))
  else
    let level = ((indent(a:nnum) - indent(a:lnum)) / &sw)
  endif
  return level
endfunction "}}}

function! s:get_li_level_last(lnum) "{{{
  if VimwikiGet('syntax') == 'media'
    return -(vimwiki#count_first_sym(getline(a:lnum)) - 1)
  else
    return -(indent(a:lnum) / &sw - 1)
  endif
endfunction "}}}

function! VimwikiFoldText() "{{{
  let line = getline(v:foldstart)
  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(, )

exe 'command! -buffer -nargs=* Search vimgrep  '.
      \ VimwikiGet('path').'**/*'.VimwikiGet('ext')

" COMMANDS }}}

" KEYBINDINGS {{{
if g:vimwiki_use_mouse
  nmap   
  nmap   
  noremap  <2-LeftMouse> :VimwikiFollowWord
  noremap   :VimwikiSplitWord
  noremap   :VimwikiVSplitWord
  noremap   :VimwikiGoBackWord
endif

if !hasmapto('VimwikiFollowWord')
  nmap   VimwikiFollowWord
endif
noremap