Version 0.9.9

* NEW: Diary. Help in making daily notes. See ':h vimwiki-diary'. Now you
  can really easy add information into vimwiki that should be sorted out
  later.
* NEW: Tables are redesigned. Syntax is changed. Now they are
  auto-formattable. You can navigate them with <tab> and <cr> in insert
  mode. See 'vimwiki-syntax-tables' and 'vimwiki-tables' for more details.
* NEW: Keyword STARTED: is added.
* NEW: Words TODO:, DONE:, STARTED:, XXX:, FIXME:, FIXED: are highlighed
  inside headers.
* FIX: Export to html external links with 'file://' protocol. Ex:
  '[file:///home/user1/book.pdf my book]'.
* FIX: Menu is corrupted if wiki's path contains spaces.
* FIX: Settings 'wrap' and 'linebreak' are removed from ftplugin. Add them
  into your personal settings file '.vim/after/ftplugin/vimwiki.vim' if
  needed.
* NEW: Headers are highlighted in different colors by default.  See ':h
  g:vimwiki_hl_headers' to turn it off.
* FIX: Issue 40: Links with russian subdirs don't work.
* NEW: It is now possible to generate HTML files automatically on page
  save. See ':h vimwiki-option-auto_export'.
This commit is contained in:
Maxim Kim 2010-02-23 00:00:00 +00:00 committed by Able Scraper
parent 74160d8e3e
commit bb1f5b3c46
8 changed files with 1179 additions and 184 deletions

View File

@ -23,10 +23,17 @@ function! s:chomp_slash(str) "{{{
return substitute(a:str, '[/\\]\+$', '', '') return substitute(a:str, '[/\\]\+$', '', '')
endfunction "}}} endfunction "}}}
function! s:is_windows()
return has("win32") || has("win64") || has("win95") || has("win16")
endfunction
function! vimwiki#mkdir(path) "{{{ function! vimwiki#mkdir(path) "{{{
let path = expand(a:path) let path = expand(a:path)
if !isdirectory(path) && exists("*mkdir") if !isdirectory(path) && exists("*mkdir")
let path = s:chomp_slash(path) let path = s:chomp_slash(path)
if s:is_windows() && !empty(g:vimwiki_w32_dir_enc)
let path = iconv(path, &enc, g:vimwiki_w32_dir_enc)
endif
call mkdir(path, "p") call mkdir(path, "p")
endif endif
endfunction endfunction
@ -62,6 +69,25 @@ function! vimwiki#current_subdir()"{{{
return vimwiki#subdir(VimwikiGet('path'), expand('%:p')) return vimwiki#subdir(VimwikiGet('path'), expand('%:p'))
endfunction"}}} endfunction"}}}
function! vimwiki#open_link(cmd, link, ...) "{{{
if s:is_link_to_non_wiki_file(a:link)
call s:edit_file(a:cmd, a:link)
else
if a:0
let vimwiki_prev_link = [a:1, []]
elseif &ft == 'vimwiki'
let vimwiki_prev_link = [expand('%:p'), getpos('.')]
endif
call s:edit_file(a:cmd, VimwikiGet('path').a:link.VimwikiGet('ext'))
if exists('vimwiki_prev_link')
let b:vimwiki_prev_link = vimwiki_prev_link
endif
endif
endfunction
" }}}
function! s:filename(link) "{{{ function! s:filename(link) "{{{
let result = vimwiki#safe_link(a:link) let result = vimwiki#safe_link(a:link)
if a:link =~ '|' if a:link =~ '|'
@ -165,11 +191,13 @@ function! s:print_wiki_list() "{{{
endfunction endfunction
" }}} " }}}
function! s:wiki_select(wnum)"{{{ function! vimwiki#select(wnum)"{{{
if a:wnum < 1 || a:wnum > len(g:vimwiki_list) if a:wnum < 1 || a:wnum > len(g:vimwiki_list)
return return
endif endif
let b:vimwiki_idx = g:vimwiki_current_idx if &ft == 'vimwiki'
let b:vimwiki_idx = g:vimwiki_current_idx
endif
let g:vimwiki_current_idx = a:wnum - 1 let g:vimwiki_current_idx = a:wnum - 1
endfunction endfunction
" }}} " }}}
@ -260,7 +288,7 @@ function! s:get_wiki_buffers() "{{{
if bufexists(bcount) if bufexists(bcount)
let bname = fnamemodify(bufname(bcount), ":p") let bname = fnamemodify(bufname(bcount), ":p")
if bname =~ VimwikiGet('ext')."$" if bname =~ VimwikiGet('ext')."$"
let bitem = [bname, getbufvar(bname, "vimwiki_prev_word")] let bitem = [bname, getbufvar(bname, "vimwiki_prev_link")]
call add(blist, bitem) call add(blist, bitem)
endif endif
endif endif
@ -273,7 +301,7 @@ endfunction
function! s:open_wiki_buffer(item) "{{{ function! s:open_wiki_buffer(item) "{{{
call s:edit_file('e', a:item[0]) call s:edit_file('e', a:item[0])
if !empty(a:item[1]) if !empty(a:item[1])
call setbufvar(a:item[0], "vimwiki_prev_word", a:item[1]) call setbufvar(a:item[0], "vimwiki_prev_link", a:item[1])
endif endif
endfunction endfunction
" }}} " }}}
@ -388,8 +416,8 @@ function! vimwiki#WikiFollowWord(split) "{{{
let cmd = ":e " let cmd = ":e "
endif endif
let word = s:strip_word(s:get_word_at_cursor(g:vimwiki_rxWikiWord)) let link = s:strip_word(s:get_word_at_cursor(g:vimwiki_rxWikiWord))
if word == "" if link == ""
let weblink = s:strip_word(s:get_word_at_cursor(g:vimwiki_rxWeblink)) let weblink = s:strip_word(s:get_word_at_cursor(g:vimwiki_rxWeblink))
if weblink != "" if weblink != ""
call VimwikiWeblinkHandler(weblink) call VimwikiWeblinkHandler(weblink)
@ -399,21 +427,16 @@ function! vimwiki#WikiFollowWord(split) "{{{
return return
endif endif
if s:is_link_to_non_wiki_file(word) let subdir = vimwiki#current_subdir()
call s:edit_file(cmd, word) call vimwiki#open_link(cmd, subdir.link)
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 endfunction
" }}} " }}}
function! vimwiki#WikiGoBackWord() "{{{ function! vimwiki#WikiGoBackWord() "{{{
if exists("b:vimwiki_prev_word") if exists("b:vimwiki_prev_link")
" go back to saved WikiWord " go back to saved WikiWord
let prev_word = b:vimwiki_prev_word let prev_word = b:vimwiki_prev_link
execute ":e ".substitute(prev_word[0], '\s', '\\\0', 'g') execute ":e ".substitute(prev_word[0], '\s', '\\\0', 'g')
call setpos('.', prev_word[1]) call setpos('.', prev_word[1])
endif endif
@ -421,7 +444,7 @@ endfunction
" }}} " }}}
function! vimwiki#WikiGoHome(index) "{{{ function! vimwiki#WikiGoHome(index) "{{{
call s:wiki_select(a:index) call vimwiki#select(a:index)
call vimwiki#mkdir(VimwikiGet('path')) call vimwiki#mkdir(VimwikiGet('path'))
try try
@ -523,7 +546,7 @@ function! vimwiki#WikiRenameWord() "{{{
let &buftype="nofile" let &buftype="nofile"
let cur_buffer = [expand('%:p'), let cur_buffer = [expand('%:p'),
\getbufvar(expand('%:p'), "vimwiki_prev_word")] \getbufvar(expand('%:p'), "vimwiki_prev_link")]
let blist = s:get_wiki_buffers() let blist = s:get_wiki_buffers()

216
autoload/vimwiki_diary.vim Normal file
View File

@ -0,0 +1,216 @@
" Vimwiki autoload plugin file
" Desc: Handle diary notes
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" Load only once {{{
if exists("g:loaded_vimwiki_diary_auto") || &cp
finish
endif
let g:loaded_vimwiki_diary_auto = 1
"}}}
function! s:prefix_zero(num) "{{{
if a:num < 10
return '0'.a:num
endif
return a:num
endfunction "}}}
function! s:desc(d1, d2) "{{{
return a:d1 == a:d2 ? 0 : a:d1 < a:d2 ? 1 : -1
endfunction "}}}
function! s:get_date_link(fmt) "{{{
return strftime(a:fmt)
endfunction "}}}
function! s:link_exists(lines, link) "{{{
let link_exists = 0
for line in a:lines
if line =~ escape(a:link, '[]\')
let link_exists = 1
break
endif
endfor
return link_exists
endfunction "}}}
function! s:diary_path() "{{{
return VimwikiGet('path').VimwikiGet('diary_rel_path')
endfunction "}}}
function! s:diary_index() "{{{
return s:diary_path().VimwikiGet('diary_index').VimwikiGet('ext')
endfunction "}}}
function! s:get_diary_range(lines, header) "{{{
let rx = '\[\[\d\{4}-\d\d-\d\d\]\]'
let idx = 0
let ln_start = -1
let ln_end = -1
for line in a:lines
if ln_start != -1
if line =~ '^\s*\(=\)\+.*\1\s*$' || (line !~ rx && line !~ '^\s*$')
break
endif
endif
if line =~ '^\s*\(=\)\+\s*'.a:header.'\s*\1\s*$'
let ln_start = idx + 1
endif
let idx += 1
endfor
let ln_end = idx - 1
return [ln_start, ln_end]
endfunction "}}}
function! s:diary_date_link() "{{{
return s:get_date_link(VimwikiGet('diary_link_fmt'))
endfunction "}}}
function! s:get_file_contents(file_name) "{{{
let lines = []
let bufnr = bufnr(expand(a:file_name))
if bufnr != -1
let lines = getbufline(bufnr, 1, '$')
else
try
let lines = readfile(expand(a:file_name))
catch
endtry
endif
return [lines, bufnr]
endfunction "}}}
function! s:get_links() "{{{
let rx = '\d\{4}-\d\d-\d\d'
let s_links = glob(VimwikiGet('path').VimwikiGet('diary_rel_path').'*.wiki')
"let s_links = substitute(s_links, '\'.VimwikiGet('ext'), "", "g")
let s_links = substitute(s_links, '\.wiki', "", "g")
let links = split(s_links, '\n')
" remove backup files (.wiki~)
call filter(links, 'v:val !~ ''.*\~$''')
" remove paths
call map(links, 'fnamemodify(v:val, ":t")')
call filter(links, 'v:val =~ "'.escape(rx, '\').'"')
call map(links, '"[[".v:val."]]"')
return links
endfunction "}}}
function! s:format_links(links) "{{{
let lines = []
let line = '| '
let idx = 0
let trigger = 0
while idx < len(a:links)
if idx/VimwikiGet('diary_link_count') > trigger
let trigger = idx/VimwikiGet('diary_link_count')
call add(lines, substitute(line, '\s\+$', '', ''))
let line = '| '
endif
let line .= a:links[idx].' | '
let idx += 1
endwhile
call add(lines, substitute(line, '\s\+$', '', ''))
call extend(lines, [''])
return lines
endfunction "}}}
function! s:add_link(page, header, link) "{{{
let [lines, bufnr] = s:get_file_contents(a:page)
let [ln_start, ln_end] = s:get_diary_range(lines, a:header)
let link = '[['.a:link.']]'
let link_exists = s:link_exists(lines[ln_start : ln_end], link)
if !link_exists
if ln_start == -1
call insert(lines, '= '.a:header.' =')
let ln_start = 1
endif
" removing 'old' links
let idx = ln_end - ln_start
while idx > 0
call remove(lines, ln_start)
let idx -= 1
endwhile
" get all diary links from filesystem
let links = s:get_links()
" add current link
if index(links, link) == -1
call add(links, link)
endif
let links = sort(links, 's:desc')
call extend(lines, s:format_links(links), ln_start)
if bufnr != -1
exe 'buffer '.bufnr
if !&readonly
1,$delete _
call append(1, lines)
1,1delete _
endif
else
call writefile(lines, expand(a:page))
endif
endif
endfunction "}}}
function! s:make_date_link(...) "{{{
if a:0
let link = a:1
else
let link = s:diary_date_link()
endif
let header = VimwikiGet('diary_header')
call s:add_link(s:diary_index(), header, link)
return VimwikiGet('diary_rel_path').link
endfunction "}}}
function! vimwiki_diary#make_note(index, ...) "{{{
call vimwiki#select(a:index)
call vimwiki#mkdir(VimwikiGet('path').VimwikiGet('diary_rel_path'))
if a:0
let link = s:make_date_link(a:1)
else
let link = s:make_date_link()
endif
call vimwiki#open_link(':e ', link, s:diary_index())
endfunction "}}}
" Calendar.vim callback.
function! vimwiki_diary#calendar_action(day, month, year, week, dir) "{{{
let day = s:prefix_zero(a:day)
let month = s:prefix_zero(a:month)
let link = a:year.'-'.month.'-'.day
if winnr('#') == 0
if a:dir == 'V'
vsplit
else
split
endif
else
wincmd p
if !&hidden && &modified
new
endif
endif
" Create diary note for a selected date in default wiki.
call vimwiki_diary#make_note(1, link)
endfunction

View File

@ -3,6 +3,8 @@
" Author: Maxim Kim <habamax@gmail.com> " Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/ " Home: http://code.google.com/p/vimwiki/
" XXX: This file should be refactored!
" Load only once {{{ " Load only once {{{
if exists("g:loaded_vimwiki_html_auto") || &cp if exists("g:loaded_vimwiki_html_auto") || &cp
finish finish
@ -32,7 +34,7 @@ function! s:remove_blank_lines(lines) " {{{
endfunction "}}} endfunction "}}}
function! s:is_web_link(lnk) "{{{ function! s:is_web_link(lnk) "{{{
if a:lnk =~ '^\%(https://\|http://\|www.\|ftp://\)' if a:lnk =~ '^\%(https://\|http://\|www.\|ftp://\|file://\)'
return 1 return 1
endif endif
return 0 return 0
@ -83,7 +85,8 @@ function! s:create_default_CSS(path) " {{{
call add(lines, 'img {border: none;}') call add(lines, 'img {border: none;}')
call add(lines, 'pre {border-left: 1px solid #ccc; margin-left: 2em; padding-left: 0.5em;}') call add(lines, 'pre {border-left: 1px solid #ccc; margin-left: 2em; padding-left: 0.5em;}')
call add(lines, 'blockquote {padding: 0.4em; background-color: #f6f5eb;}') call add(lines, 'blockquote {padding: 0.4em; background-color: #f6f5eb;}')
call add(lines, 'td {border: 1px solid #ccc; padding: 0.3em;}') call add(lines, 'th, td {border: 1px solid #ccc; padding: 0.3em;}')
call add(lines, 'th {background-color: #f0f0f0;}')
call add(lines, 'hr {border: none; border-top: 1px solid #ccc; width: 100%;}') call add(lines, 'hr {border: none; border-top: 1px solid #ccc; width: 100%;}')
call add(lines, 'del {text-decoration: line-through; color: #777777;}') call add(lines, 'del {text-decoration: line-through; color: #777777;}')
call add(lines, '.toc li {list-style-type: none;}') call add(lines, '.toc li {list-style-type: none;}')
@ -515,9 +518,9 @@ function! s:close_tag_para(para, ldest) "{{{
endfunction "}}} endfunction "}}}
function! s:close_tag_table(table, ldest) "{{{ function! s:close_tag_table(table, ldest) "{{{
if a:table if len(a:table)
call insert(a:ldest, "</table>") call insert(a:ldest, "</table>")
return 0 return []
endif endif
return a:table return a:table
endfunction "}}} endfunction "}}}
@ -774,45 +777,54 @@ function! s:process_tag_hr(line) "{{{
endfunction "}}} endfunction "}}}
function! s:process_tag_table(line, table) "{{{ function! s:process_tag_table(line, table) "{{{
" XXX: This should be refactored!!!
let table = a:table let table = a:table
let lines = [] let lines = []
let processed = 0 let processed = 0
if a:line =~ '^||.\+||.*'
if !table if a:line =~ '^\s*|[-+]\+|\s*$' && len(table)
call add(lines, "<table>") call add(table, [])
let table = 1 let processed = 1
elseif a:line =~ '^\s*|.\+|\s*$'
if empty(table)
let table = [[]]
else
call add(table, [])
endif endif
let processed = 1 let processed = 1
call add(lines, "<tr>") call extend(table[-1], split(a:line, '\s*|\s*'))
let pos1 = 0
let pos2 = 0
let done = 0
while !done
let pos1 = stridx(a:line, '||', pos2)
let pos2 = stridx(a:line, '||', pos1+2)
if pos1==-1 || pos2==-1
let done = 1
let pos2 = len(a:line)
endif
let line = strpart(a:line, pos1+2, pos2-pos1-2)
if line == ''
continue
endif
if strpart(line, 0, 1) == ' ' &&
\ strpart(line, len(line) - 1, 1) == ' '
call add(lines, '<td class="justcenter">'.line.'</td>')
elseif strpart(line, 0, 1) == ' '
call add(lines, '<td class="justright">'.line.'</td>')
else
call add(lines, '<td class="justleft">'.line.'</td>')
endif
endwhile
call add(lines, "</tr>")
elseif table elseif len(table)
call add(lines, "<table>")
let head = 0
for idx in range(len(table))
if empty(table[idx])
let head = idx
break
endif
endfor
if head > 0
for row in table[: head-1]
call add(lines, '<tr>')
call extend(lines, map(row, '"<th>".v:val."</th>"'))
call add(lines, '</tr>')
endfor
for row in table[head+1 :]
call add(lines, '<tr>')
call extend(lines, map(row, '"<td>".v:val."</td>"'))
call add(lines, '</tr>')
endfor
else
for row in table
call add(lines, '<tr>')
call extend(lines, map(row, '"<td>".v:val."</td>"'))
call add(lines, '</tr>')
endfor
endif
call add(lines, "</table>") call add(lines, "</table>")
let table = 0 let table = []
endif endif
return [processed, lines, table] return [processed, lines, table]
endfunction "}}} endfunction "}}}
@ -820,12 +832,12 @@ endfunction "}}}
"}}} "}}}
" WIKI2HTML "{{{ " WIKI2HTML "{{{
function! s:wiki2html(line, state) " {{{ function! s:parse_line(line, state) " {{{
let state = {} let state = {}
let state.para = a:state.para let state.para = a:state.para
let state.quote = a:state.quote let state.quote = a:state.quote
let state.pre = a:state.pre let state.pre = a:state.pre
let state.table = a:state.table let state.table = a:state.table[:]
let state.lists = a:state.lists[:] let state.lists = a:state.lists[:]
let state.deflist = a:state.deflist let state.deflist = a:state.deflist
let state.placeholder = a:state.placeholder let state.placeholder = a:state.placeholder
@ -838,7 +850,7 @@ function! s:wiki2html(line, state) " {{{
let processed = 0 let processed = 0
" toc -- placeholder " toc -- placeholder "{{{
if !processed if !processed
if line =~ '^\s*%toc' if line =~ '^\s*%toc'
let processed = 1 let processed = 1
@ -846,14 +858,15 @@ function! s:wiki2html(line, state) " {{{
let state.placeholder = ['toc', param] let state.placeholder = ['toc', param]
endif endif
endif endif
"}}}
" pres " pres "{{{
if !processed if !processed
let [processed, lines, state.pre] = s:process_tag_pre(line, state.pre) let [processed, lines, state.pre] = s:process_tag_pre(line, state.pre)
if processed && len(state.lists) if processed && len(state.lists)
call s:close_tag_list(state.lists, lines) call s:close_tag_list(state.lists, lines)
endif endif
if processed && state.table if processed && len(state.table)
let state.table = s:close_tag_table(state.table, lines) let state.table = s:close_tag_table(state.table, lines)
endif endif
if processed && state.deflist if processed && state.deflist
@ -867,8 +880,9 @@ function! s:wiki2html(line, state) " {{{
endif endif
call extend(res_lines, lines) call extend(res_lines, lines)
endif endif
"}}}
" lists " lists "{{{
if !processed if !processed
let [processed, lines] = s:process_tag_list(line, state.lists) let [processed, lines] = s:process_tag_list(line, state.lists)
if processed && state.quote if processed && state.quote
@ -877,7 +891,7 @@ function! s:wiki2html(line, state) " {{{
if processed && state.pre if processed && state.pre
let state.pre = s:close_tag_pre(state.pre, lines) let state.pre = s:close_tag_pre(state.pre, lines)
endif endif
if processed && state.table if processed && len(state.table)
let state.table = s:close_tag_table(state.table, lines) let state.table = s:close_tag_table(state.table, lines)
endif endif
if processed && state.deflist if processed && state.deflist
@ -891,8 +905,9 @@ function! s:wiki2html(line, state) " {{{
call extend(res_lines, lines) call extend(res_lines, lines)
endif endif
"}}}
" headers " headers "{{{
if !processed if !processed
let [processed, line, h_level, h_text, h_id] = s:process_tag_h(line, state.toc_id) let [processed, line, h_level, h_text, h_id] = s:process_tag_h(line, state.toc_id)
if processed if processed
@ -900,6 +915,9 @@ function! s:wiki2html(line, state) " {{{
let state.table = s:close_tag_table(state.table, res_lines) let state.table = s:close_tag_table(state.table, res_lines)
let state.pre = s:close_tag_pre(state.pre, res_lines) let state.pre = s:close_tag_pre(state.pre, res_lines)
let state.quote = s:close_tag_quote(state.quote, res_lines) let state.quote = s:close_tag_quote(state.quote, res_lines)
let line = s:make_tag(line, g:vimwiki_rxTodo, 's:tag_todo')
call add(res_lines, line) call add(res_lines, line)
" gather information for table of contents " gather information for table of contents
@ -907,8 +925,9 @@ function! s:wiki2html(line, state) " {{{
let state.toc_id += 1 let state.toc_id += 1
endif endif
endif endif
"}}}
" quotes " quotes "{{{
if !processed if !processed
let [processed, lines, state.quote] = s:process_tag_quote(line, state.quote) let [processed, lines, state.quote] = s:process_tag_quote(line, state.quote)
if processed && len(state.lists) if processed && len(state.lists)
@ -917,7 +936,7 @@ function! s:wiki2html(line, state) " {{{
if processed && state.deflist if processed && state.deflist
let state.deflist = s:close_tag_def_list(state.deflist, lines) let state.deflist = s:close_tag_def_list(state.deflist, lines)
endif endif
if processed && state.table if processed && len(state.table)
let state.table = s:close_tag_table(state.table, lines) let state.table = s:close_tag_table(state.table, lines)
endif endif
if processed && state.pre if processed && state.pre
@ -931,17 +950,9 @@ function! s:wiki2html(line, state) " {{{
call extend(res_lines, lines) call extend(res_lines, lines)
endif endif
"}}}
" definition lists " tables "{{{
if !processed
let [processed, lines, state.deflist] = s:process_tag_def_list(line, state.deflist)
call map(lines, 's:process_inline_tags(v:val)')
call extend(res_lines, lines)
endif
" tables
if !processed if !processed
let [processed, lines, state.table] = s:process_tag_table(line, state.table) let [processed, lines, state.table] = s:process_tag_table(line, state.table)
@ -949,8 +960,9 @@ function! s:wiki2html(line, state) " {{{
call extend(res_lines, lines) call extend(res_lines, lines)
endif endif
"}}}
" horizontal lines " horizontal rules "{{{
if !processed if !processed
let [processed, line] = s:process_tag_hr(line) let [processed, line] = s:process_tag_hr(line)
if processed if processed
@ -960,8 +972,19 @@ function! s:wiki2html(line, state) " {{{
call add(res_lines, line) call add(res_lines, line)
endif endif
endif endif
"}}}
"" P " definition lists "{{{
if !processed
let [processed, lines, state.deflist] = s:process_tag_def_list(line, state.deflist)
call map(lines, 's:process_inline_tags(v:val)')
call extend(res_lines, lines)
endif
"}}}
"" P "{{{
if !processed if !processed
let [processed, lines, state.para] = s:process_tag_para(line, state.para) let [processed, lines, state.para] = s:process_tag_para(line, state.para)
if processed && len(state.lists) if processed && len(state.lists)
@ -973,7 +996,7 @@ function! s:wiki2html(line, state) " {{{
if processed && state.pre if processed && state.pre
let state.pre = s:close_tag_pre(state.pre, res_lines) let state.pre = s:close_tag_pre(state.pre, res_lines)
endif endif
if processed && state.table if processed && len(state.table)
let state.table = s:close_tag_table(state.table, res_lines) let state.table = s:close_tag_table(state.table, res_lines)
endif endif
@ -981,6 +1004,7 @@ function! s:wiki2html(line, state) " {{{
call extend(res_lines, lines) call extend(res_lines, lines)
endif endif
"}}}
"" add the rest "" add the rest
if !processed if !processed
@ -1015,7 +1039,7 @@ function! vimwiki_html#Wiki2HTML(path, wikifile) "{{{
let state.para = 0 let state.para = 0
let state.quote = 0 let state.quote = 0
let state.pre = 0 let state.pre = 0
let state.table = 0 let state.table = []
let state.deflist = 0 let state.deflist = 0
let state.lists = [] let state.lists = []
let state.placeholder = [] let state.placeholder = []
@ -1024,7 +1048,7 @@ function! vimwiki_html#Wiki2HTML(path, wikifile) "{{{
for line in lsource for line in lsource
let oldquote = state.quote let oldquote = state.quote
let [lines, state] = s:wiki2html(line, state) let [lines, state] = s:parse_line(line, state)
" Hack: There could be a lot of empty strings before s:process_tag_quote " Hack: There could be a lot of empty strings before s:process_tag_quote
" find out `quote` is over. So we should delete them all. Think of the way " find out `quote` is over. So we should delete them all. Think of the way

335
autoload/vimwiki_tbl.vim Normal file
View File

@ -0,0 +1,335 @@
" Vimwiki autoload plugin file
" Desc: Tables
" | Easily | manageable | text | tables | ! |
" |--------+------------+-------+--------+---------|
" | Have | fun! | Drink | tea | Period. |
"
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" Load only once {{{
if exists("g:loaded_vimwiki_tbl_auto") || &cp
finish
endif
let g:loaded_vimwiki_tbl_auto = 1
"}}}
let s:textwidth = &tw
" Misc functions {{{
function! s:wide_len(str) "{{{
return strlen(substitute(a:str, '.', 'x', 'g'))
endfunction "}}}
function! s:is_table(line) "{{{
return a:line =~ '^\s*\%(|[^|]\+\)\+|\s*$' || s:is_separator(a:line)
endfunction "}}}
function! s:is_separator(line) "{{{
return a:line =~ '^\s*|\s*-\+'
endfunction "}}}
function! s:is_last_column(lnum, cnum) "{{{
return strpart(getline(a:lnum), a:cnum - 1) =~ '^[^|]*|\s*$'
endfunction "}}}
function! s:count_separators(lnum) "{{{
let lnum = a:lnum + 1
while lnum < line('$')
if !s:is_separator(getline(lnum))
break
endif
let lnum += 1
endwhile
return (lnum-a:lnum)
endfunction "}}}
function! s:create_empty_row(cols) "{{{
let first_cell = "| |"
let cell = " |"
let row = first_cell
for c in range(a:cols - 1)
let row .= cell
endfor
return row
endfunction "}}}
function! s:create_row_sep(cols) "{{{
let first_cell = "|---+"
let cell = "---+"
let last_cell = "---|"
if a:cols < 2
return "|---|"
endif
let row = first_cell
for c in range(a:cols - 2)
let row .= cell
endfor
let row .= last_cell
return row
endfunction "}}}
function! s:get_values(line) "{{{
let cells = []
let cnt = 0
let idx = 0
while idx != -1 && idx < strlen(a:line) - 1
let cell = matchstr(a:line, '|\zs[^|]\+\ze|', idx)
let cell = substitute(cell, '^\s*\(.\{-}\)\s*$', '\1', 'g')
call add(cells, [cnt, cell])
let cnt += 1
let idx = matchend(a:line, '|\zs[^|]\+\ze|', idx)
endwhile
return cells
endfunction "}}}
function! s:get_rows(lnum) "{{{
if !s:is_table(getline(a:lnum))
return
endif
let upper_rows = []
let lower_rows = []
let lnum = a:lnum - 1
while lnum > 1
let line = getline(lnum)
if s:is_table(line)
call add(upper_rows, [lnum, line])
else
break
endif
let lnum -= 1
endwhile
call reverse(upper_rows)
let lnum = a:lnum
while lnum <= line('$')
let line = getline(lnum)
if s:is_table(line)
call add(lower_rows, [lnum, line])
else
break
endif
let lnum += 1
endwhile
return upper_rows + lower_rows
endfunction "}}}
function! s:get_cell_max_lens(lnum) "{{{
let max_lens = {}
for [lnum, row] in s:get_rows(a:lnum)
if s:is_separator(row)
continue
endif
for [idx, cell] in s:get_values(row)
if has_key(max_lens, idx)
let max_lens[idx] = max([s:wide_len(cell), max_lens[idx]])
else
let max_lens[idx] = s:wide_len(cell)
endif
endfor
endfor
return max_lens
endfunction "}}}
function! s:get_aligned_rows(lnum, max_lens) "{{{
let rows = []
for [lnum, row] in s:get_rows(a:lnum)
if s:is_separator(row)
let new_row = s:fmt_sep(a:max_lens)
else
let new_row = s:fmt_row(row, a:max_lens)
endif
call add(rows, [lnum, new_row])
endfor
return rows
endfunction "}}}
" }}}
" Format functions {{{
function! s:fmt_cell(cell, max_len) "{{{
let cell = ' '.a:cell.' '
let diff = a:max_len - s:wide_len(a:cell)
if diff == 0 && empty(a:cell)
let diff = 1
endif
let cell .= repeat(' ', diff)
return cell
endfunction "}}}
function! s:fmt_row(line, max_lens) "{{{
let new_line = '|'
let values = s:get_values(a:line)
for [idx, cell] in values
let new_line .= s:fmt_cell(cell, a:max_lens[idx]).'|'
endfor
let idx = len(values)
while idx < len(a:max_lens)
let new_line .= s:fmt_cell('', a:max_lens[idx]).'|'
let idx += 1
endwhile
return new_line
endfunction "}}}
function! s:fmt_cell_sep(max_len) "{{{
if a:max_len == 0
return repeat('-', 3)
else
return repeat('-', a:max_len+2)
endif
endfunction "}}}
function! s:fmt_sep(max_lens) "{{{
let sep = '|'
for idx in range(len(a:max_lens))
let sep .= s:fmt_cell_sep(a:max_lens[idx]).'+'
endfor
let sep = substitute(sep, '+$', '|', '')
return sep
endfunction "}}}
"}}}
" Keyboard functions "{{{
function! s:kbd_create_new_row(cols, goto_first) "{{{
let cmd = "\<ESC>o".s:create_empty_row(a:cols)
let cmd .= "\<ESC>:call vimwiki_tbl#format(line('.'))\<CR>"
if a:goto_first
let cmd .= "0f|T|a"
else
let cmd .= "0".(col('.')-1)."lT|a"
endif
return cmd
endfunction "}}}
function! s:kbd_goto_next_row() "{{{
let cmd = "\<ESC>jt|T|a"
return cmd
endfunction "}}}
function! s:kbd_goto_next_col(last) "{{{
if col('.') == 1
let cmd = "\<ESC>la"
else
if a:last
let seps = s:count_separators(line('.'))
let cmd = "\<ESC>".seps."j0f|F|la"
else
let cmd = "\<ESC>f|la"
endif
endif
return cmd
endfunction "}}}
"}}}
" Global functions {{{
function! vimwiki_tbl#kbd_cr() "{{{
let lnum = line('.')
if !s:is_table(getline(lnum))
return "\<CR>"
endif
if s:is_separator(getline(lnum+1)) || !s:is_table(getline(lnum+1))
let cols = len(s:get_values(getline(lnum)))
return s:kbd_create_new_row(cols, 0)
else
return s:kbd_goto_next_row()
endif
endfunction "}}}
function! vimwiki_tbl#kbd_tab() "{{{
let lnum = line('.')
if !s:is_table(getline(lnum))
return "\<Tab>"
endif
let last = s:is_last_column(lnum, col('.'))
if last && !s:is_table(getline(lnum+1))
let cols = len(s:get_values(getline(lnum)))
return s:kbd_create_new_row(cols, 1)
endif
return s:kbd_goto_next_col(last)
endfunction "}}}
function! vimwiki_tbl#format(lnum) "{{{
let line = getline(a:lnum)
if !s:is_table(line)
return
endif
let max_lens = s:get_cell_max_lens(a:lnum)
for [lnum, row] in s:get_aligned_rows(a:lnum, max_lens)
call setline(lnum, row)
endfor
let &tw = s:textwidth
endfunction "}}}
function! vimwiki_tbl#create(...) "{{{
if a:0 > 1
let cols = a:1
let rows = a:2
elseif a:0 == 1
let cols = a:1
let rows = 2
elseif a:0 == 0
let cols = 5
let rows = 2
endif
if cols < 1
let cols = 5
endif
if rows < 1
let rows = 2
endif
let lines = []
let row = s:create_empty_row(cols)
call add(lines, row)
if rows > 1
call add(lines, s:create_row_sep(cols))
endif
for r in range(rows - 1)
call add(lines, row)
endfor
call append(line('.'), lines)
endfunction "}}}
function! vimwiki_tbl#align_or_cmd(cmd) "{{{
if s:is_table(getline('.'))
call vimwiki_tbl#format(line('.'))
else
exe 'normal! '.a:cmd
endif
endfunction "}}}
function! vimwiki_tbl#reset_tw(lnum) "{{{
let line = getline(a:lnum)
if !s:is_table(line)
return
endif
let s:textwidth = &tw
let &tw = 0
endfunction "}}}
"}}}

View File

@ -1,4 +1,4 @@
*vimwiki.txt* A Personal Wiki for Vim *vimwiki.txt* A Personal Wiki for Vim
__ __ ______ __ __ ______ __ __ ______ ~ __ __ ______ __ __ ______ __ __ ______ ~
/\ \/\ \/\__ _\ /'\_/`\/\ \ __/\ \/\__ _\ /\ \/\ \ /\__ _\ ~ /\ \/\ \/\__ _\ /'\_/`\/\ \ __/\ \/\__ _\ /\ \/\ \ /\__ _\ ~
@ -8,39 +8,41 @@
\ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~ \ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~
`\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~ `\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~
Version: 0.9.801 ~ Version: 0.9.9
============================================================================== ==============================================================================
CONTENTS *vimwiki-contents* CONTENTS *vimwiki-contents*
1. Intro ...................................|vimwiki| 1. Intro |vimwiki|
2. Prerequisites ...........................|vimwiki-prerequisites| 2. Prerequisites |vimwiki-prerequisites|
3. Mappings ................................|vimwiki-mappings| 3. Mappings |vimwiki-mappings|
3.1. Global mappings .....................|vimwiki-global-mappings| 3.1. Global mappings |vimwiki-global-mappings|
3.2. Local mappings ......................|vimwiki-local-mappings| 3.2. Local mappings |vimwiki-local-mappings|
3.3. Text objects ........................|vimwiki-text-objects| 3.3. Text objects |vimwiki-text-objects|
4. Commands ................................|vimwiki-commands| 4. Commands |vimwiki-commands|
4.1. Global commands .....................|vimwiki-global-commands| 4.1. Global commands |vimwiki-global-commands|
4.2. Local commands ......................|vimwiki-local-commands| 4.2. Local commands |vimwiki-local-commands|
5. Wiki syntax .............................|vimwiki-syntax| 5. Wiki syntax |vimwiki-syntax|
5.1. Typefaces ...........................|vimwiki-syntax-typefaces| 5.1. Typefaces |vimwiki-syntax-typefaces|
5.2. Links ...............................|vimwiki-syntax-links| 5.2. Links |vimwiki-syntax-links|
5.3. Headers .............................|vimwiki-syntax-headers| 5.3. Headers |vimwiki-syntax-headers|
5.4. Paragraphs...........................|vimwiki-syntax-paragraphs| 5.4. Paragraphs |vimwiki-syntax-paragraphs|
5.5. Lists ...............................|vimwiki-syntax-lists| 5.5. Lists |vimwiki-syntax-lists|
5.6. Tables ..............................|vimwiki-syntax-tables| 5.6. Tables |vimwiki-syntax-tables|
5.7. Preformatted text ...................|vimwiki-syntax-preformatted| 5.7. Preformatted text |vimwiki-syntax-preformatted|
5.8. Blockquotes .........................|vimwiki-syntax-blockquotes| 5.8. Blockquotes |vimwiki-syntax-blockquotes|
5.9. Comments ............................|vimwiki-syntax-comments| 5.9. Comments |vimwiki-syntax-comments|
6. Folding/Outline .........................|vimwiki-folding| 6. Folding/Outline |vimwiki-folding|
7. Placeholders ............................|vimwiki-placeholders| 7. Placeholders |vimwiki-placeholders|
7.1 Table of Contents ....................|vimwiki-table-of-contents| 7.1 Table of Contents |vimwiki-table-of-contents|
8. Todo lists...............................|vimwiki-todo-lists| 8. Todo lists |vimwiki-todo-lists|
9. Options .................................|vimwiki-options| 9. Tables |vimwiki-tables|
10. Help ...................................|vimwiki-help| 10. Diary |vimwiki-diary|
11. Author .................................|vimwiki-author| 11. Options |vimwiki-options|
12. Changelog ..............................|vimwiki-changelog| 12. Help |vimwiki-help|
13. License ................................|vimwiki-license| 13. Author |vimwiki-author|
14. Changelog |vimwiki-changelog|
15. License |vimwiki-license|
============================================================================== ==============================================================================
@ -49,10 +51,10 @@ CONTENTS *vimwiki-contents*
Vimwiki is a personal wiki for Vim -- a number of linked text files that have Vimwiki is a personal wiki for Vim -- a number of linked text files that have
their own syntax highlighting. their own syntax highlighting.
With vimwiki you can With vimwiki you can:
- organize notes and ideas - organize notes and ideas;
- manage todo-lists - manage todo-lists;
- write documentation - write documentation.
To do a quick start press <Leader>ww (this is usually \ww) to go to your index To do a quick start press <Leader>ww (this is usually \ww) to go to your index
wiki file. By default it is located in: > wiki file. By default it is located in: >
@ -71,8 +73,8 @@ errors. These are links in CamelCase form that do not exists yet. (CamelCase
form -- capitalized word connected with other capitalized words) form -- capitalized word connected with other capitalized words)
Place cursor on ProjectGutenberg and press <Enter>. Now you are in Place cursor on ProjectGutenberg and press <Enter>. Now you are in
ProjectGutenberg. Edit and save it, then press Backspace to return to parent ProjectGutenberg. Edit and save it, then press Backspace to return to previous
wiki page. You should see the difference now -- ProjectGutenberg is wiki file. You should see the difference now -- ProjectGutenberg is
highlighted as a link. highlighted as a link.
@ -95,8 +97,9 @@ There are global and local mappings in vimwiki.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.1. Global mappings *vimwiki-global-mappings* 3.1. Global mappings *vimwiki-global-mappings*
<Leader>ww or <Plug>VimwikiGoHome [count]<Leader>ww or <Plug>VimwikiGoHome
Open index file of the [count]'s wiki. Open index file of the [count]'s wiki.
<Leader>ww opens first wiki from |g:vimwiki_list|. <Leader>ww opens first wiki from |g:vimwiki_list|.
1<Leader>ww as above opens first wiki from |g:vimwiki_list|. 1<Leader>ww as above opens first wiki from |g:vimwiki_list|.
2<Leader>ww opens second wiki from |g:vimwiki_list|. 2<Leader>ww opens second wiki from |g:vimwiki_list|.
@ -107,8 +110,10 @@ There are global and local mappings in vimwiki.
< <
See also|:VimwikiGoHome| See also|:VimwikiGoHome|
<Leader>wt or <Plug>VimwikiTabGoHome
[count]<Leader>wt or <Plug>VimwikiTabGoHome
Open index file of the [count]'s wiki in a new tab. Open index file of the [count]'s wiki in a new tab.
<Leader>wt tabopens first wiki from |g:vimwiki_list|. <Leader>wt tabopens first wiki from |g:vimwiki_list|.
1<Leader>wt as above tabopens first wiki from |g:vimwiki_list|. 1<Leader>wt as above tabopens first wiki from |g:vimwiki_list|.
2<Leader>wt tabopens second wiki from |g:vimwiki_list|. 2<Leader>wt tabopens second wiki from |g:vimwiki_list|.
@ -119,6 +124,7 @@ See also|:VimwikiGoHome|
< <
See also|:VimwikiTabGoHome| See also|:VimwikiTabGoHome|
<Leader>ws or <Plug>VimwikiUISelect <Leader>ws or <Plug>VimwikiUISelect
List and select available wikies. List and select available wikies.
To remap: > To remap: >
@ -127,10 +133,46 @@ See also|:VimwikiTabGoHome|
See also|:VimwikiUISelect| See also|:VimwikiUISelect|
------------------------------------------------------------------------------ [count]<Leader>w<Leader>w or <Plug>VimwikiMakeDiaryNote
3.2. Local mappings *vimwiki-local-mappings* Open diary wiki-file for today of the [count]'s wiki.
Normal mode (Keyboard):~ <Leader>w<Leader>w opens diary wiki-file for today in the first wiki
from |g:vimwiki_list|.
1<Leader>w<Leader>w as above opens diary wiki-file for today in the
first wiki from |g:vimwiki_list|.
2<Leader>w<Leader>w opens diary wiki-file for today in the second wiki
from |g:vimwiki_list|.
3<Leader>w<Leader>w opens diary wiki-file for today in the third wiki
from |g:vimwiki_list|.
etc.
To remap: >
:map <Leader>d <Plug>VimwikiMakeDiaryNote
<
See also|:VimwikiMakeDiaryNote|
[count]<Leader>w<Leader>t or <Plug>VimwikiTabMakeDiaryNote
Open diary wiki-file for today of the [count]'s wiki in a new tab.
<Leader>w<Leader>t tabopens diary wiki-file for today in the first
wiki from |g:vimwiki_list|.
1<Leader>w<Leader>t as above tabopens diary wiki-file for today in the
first wiki from |g:vimwiki_list|.
2<Leader>w<Leader>t tabopens diary wiki-file for today in the second
wiki from |g:vimwiki_list|.
3<Leader>w<Leader>t tabopens diary wiki-file for today in the third
wiki from |g:vimwiki_list|.
etc.
To remap: >
:map <Leader>dt <Plug>VimwikiTabMakeDiaryNote
<
See also|:VimwikiTabMakeDiaryNote|
------------------------------------------------------------------------------
3.2. Local mappings
NORMAL MODE *vimwiki-local-mappings*
*vimwiki_<CR>* *vimwiki_<CR>*
<CR> Follow/Create WikiWord. <CR> Follow/Create WikiWord.
Maps to|:VimwikiFollowWord|. Maps to|:VimwikiFollowWord|.
@ -194,15 +236,39 @@ Normal mode (Keyboard):~
*vimwiki_-* *vimwiki_-*
- Remove header level. - Remove header level.
Normal mode (Mouse): ~
*vimwiki_gqq* *vimwiki_gww*
gqq Format table. If you did some changes to a table
or without swapping insert/normal modes this command
gww reformat it.
Works only if |g:vimwiki_use_mouse| is set to 1. Works only if |g:vimwiki_use_mouse| is set to 1.
<2-LeftMouse> Follow/Create WikiWord <2-LeftMouse> Follow/Create WikiWord
<S-2-LeftMouse> Split and follow/create WikiWord <S-2-LeftMouse> Split and follow/create WikiWord
<C-2-LeftMouse> Vertical split and follow/create WikiWord <C-2-LeftMouse> Vertical split and follow/create WikiWord
<RightMouse><LeftMouse> Go back to previous WikiWord <RightMouse><LeftMouse> Go back to previous WikiWord
Note: <2-LeftMouse> is just left double click. Note: <2-LeftMouse> is just left double click.
INSERT MODE *vimwiki-table-mappings*
*vimwiki_i_<CR>*
<CR> Goto table cell down to the current, create new row if
on the last one.
*vimwiki_i_<Tab>*
<Tab> Goto next table cell, create new row if on the last
cell.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
3.3. Text objects *vimwiki-text-objects* 3.3. Text objects *vimwiki-text-objects*
@ -210,7 +276,7 @@ ah A Header with leading empty lines.
ih Inner Header without leading empty lines. ih Inner Header without leading empty lines.
You can 'vah' to select a header with its contents or 'dah' to delete it or You can 'vah' to select a header with its contents or 'dah' to delete it or
'yah' to yank it or 'cah' to change it. ;) 'yah' to yank it or 'cah' to change it.
============================================================================== ==============================================================================
@ -228,48 +294,75 @@ You can 'vah' to select a header with its contents or 'dah' to delete it or
*:VimwikiUISelect* *:VimwikiUISelect*
Open index file of the selected wiki. Open index file of the selected wiki.
*:VimwikiMakeDiaryNote*
Open diary wiki-file for today of the current wiki.
*:VimwikiTabMakeDiaryNote*
Open diary wiki-file for today of the current wiki in a new tab.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
4.2. Local commands *vimwiki-local-commands* 4.2. Local commands *vimwiki-local-commands*
*:VimwikiFollowWord* *:VimwikiFollowWord*
Follow/create WikiWord. Follow/create WikiWord.
*:VimwikiGoBackWord* *:VimwikiGoBackWord*
Go back to previous WikiWord you come from. Go back to previous WikiWord you come from.
*:VimwikiSplitWord* *:VimwikiSplitWord*
Split and follow/create WikiWord. Split and follow/create WikiWord.
*:VimwikiVSplitWord* *:VimwikiVSplitWord*
Vertical split and follow/create WikiWord. Vertical split and follow/create WikiWord.
*:VimwikiNextWord* *:VimwikiNextWord*
Find next WikiWord. Find next WikiWord.
*:VimwikiPrevWord* *:VimwikiPrevWord*
Find previous WikiWord. Find previous WikiWord.
*:VimwikiDeleteWord* *:VimwikiDeleteWord*
Delete WikiWord you are in. Delete WikiWord you are in.
*:VimwikiRenameWord* *:VimwikiRenameWord*
Rename WikiWord you are in. Rename WikiWord you are in.
*:Vimwiki2HTML* *:Vimwiki2HTML*
Convert current WikiPage to HTML. Convert current WikiPage to HTML.
*:VimwikiAll2HTML* *:VimwikiAll2HTML*
Convert all WikiPages to HTML. Convert all WikiPages to HTML.
*:VimwikiToggleListItem* *:VimwikiToggleListItem*
Toggle list item on/off (checked/unchecked) Toggle list item on/off (checked/unchecked)
See |vimwiki-todo-lists|. See |vimwiki-todo-lists|.
*:VimwikiSearch* /pattern/ *:VimwikiSearch* /pattern/
*:VWS* /pattern/ *:VWS* /pattern/
Search for /pattern/ in current wiki. Search for /pattern/ in current wiki.
*:VimwikiTable*
Create a table with 5 cols and 2 rows.
:VimwikiTable cols rows
Create a table with a given cols and rows
:VimwikiTable cols
Create a table with a given cols and 2 rows
============================================================================== ==============================================================================
5. Wiki syntax *vimwiki-syntax* 5. Wiki syntax *vimwiki-syntax*
@ -506,30 +599,31 @@ Term 2::
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
5.6. Tables *vimwiki-syntax-tables* 5.6. Tables *vimwiki-syntax-tables*
Tables are created by entering the content of each cell separated by || Tables are created by entering the content of each cell separated by |
delimiters. You can insert other inline wiki syntax in table cells, including delimiters. You can insert other inline wiki syntax in table cells, including
typeface formatting and links. typeface formatting and links.
For example: For example: >
||*Year*s||*Temperature (low)*||*Temperature (high)*|| | Year | Temperature (low) | Temperature (high) |
||1900 ||-10 ||25 || |------+-------------------+--------------------|
||1910 ||-15 ||30 || | 1900 | -10 | 25 |
||1920 ||-10 ||32 || | 1910 | -15 | 30 |
||1930 ||_N/A_ ||_N/A_ || | 1920 | -10 | 32 |
||1940 ||-2 ||40 || | 1930 | _N/A_ | _N/A_ |
| 1940 | -2 | 40 |
>
In html the following part >
| Year | Temperature (low) | Temperature (high) |
|------+-------------------+--------------------|
>
is higlighted as a table header.
For HTML, contents of table cell could be aligned to the right, left and See |vimwiki-tables| for more details on how to manage tables.
center:
|| Center || Center || Center || Note: You can not use [[link|description]] type of links in tables. Use
||Left || Center || Right|| [[link][description]] instead.
|| Right||Left || Center ||
|| Center || Right||Left ||
No spaces on the left side -- left alignment.
No spaces on the right side -- right alignment.
Spaces on the left and on the right -- center alignment.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
@ -697,8 +791,89 @@ percentage of toggled child items(see also |g:vimwiki_listsyms|): >
It is possible to toggle several list items using visual mode. It is possible to toggle several list items using visual mode.
============================================================================== ==============================================================================
9. Options *vimwiki-options* 9. Tables *vimwiki-tables*
Use :VimwikiTable command to create default table with 5 columns and 2 rows: >
| | | | | |
|---+---+---+---+---|
| | | | | |
<
Tables are auto-formattable. Let's add some text into first cell: >
| First Name | | | | |
|---+---+---+---+---|
| | | | | |
<
Whenever you press <TAB>, <CR> or leave Insert mode table is formatted: >
| First Name | | | | |
|------------+---+---+---+---|
| | | | | |
<
You can easily create nice looking text tables, just press <TAB> and enter new
values: >
| First Name | Last Name | Age | City | e-mail |
|------------+------------+-----+----------+----------------------|
| Vladislav | Pokrishkin | 31 | Moscow | vlad_pok@smail.com |
| James | Esfandiary | 27 | Istanbul | esfandiary@tmail.com |
<
==============================================================================
10. Diary *vimwiki-diary*
Diary helps you make daily notes. You can really easy add information into
vimwiki that should be sorted out later. Just hit <Leader>w<Leader>w to create
new daily note with name based on current date. The link to this newly created
file is added to a diary wiki file.
Usage example with default settings: >
Consider today is 2010-01-27.
Hit \w\w .
~/vimwiki/diary.wiki is created.
2 following lines are added to ~/vimwiki/diary/diary.wiki :
= Diary =
| [[2010-01-27]] |
~/vimwiki/diary/2010-01-27.wiki is created.
You are ready to add your information there.
-------------------------------------------
On the next day.
Hit \w\w .
The first line after = Diary = is changed in ~/vimwiki/diary/diary.wiki :
= Diary =
| [[2010-01-28]] | [[2010-01-27]] |
~/vimwiki/diary/2010-01-28.wiki is created.
You are ready to add your information there.
>
By default there are 4 links on the line. All links are sorted by their dates.
Calendar integration *vimwiki-calendar*
------------------------------------------------------------------------------
If you have Calendar.vim installed you can use it to create diary notes.
Just open calendar with :Calendar and tap <Enter> on the date. Wiki file would
be created in default wiki's diary.
Get it from http://www.vim.org/scripts/script.php?script_id=52
==============================================================================
11. Options *vimwiki-options*
There are global and per wiki(local) options available to tune vimwiki. There are global and per wiki(local) options available to tune vimwiki.
All global options are set using the following template: > All global options are set using the following template: >
@ -733,10 +908,12 @@ Empty |Dictionary| in the g:vimwiki_list is the wiki with default options: >
< <
Per wiki options PER WIKI OPTIONS *viwmiki-local-options*
*vimwiki-option-path* *vimwiki-option-path*
--------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
path ~/vimwiki/ path ~/vimwiki/
@ -746,7 +923,7 @@ Wiki files location: >
< <
*vimwiki-option-path_html* *vimwiki-option-path_html*
-------------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
path_html ~/vimwiki_html/ path_html ~/vimwiki_html/
@ -760,9 +937,20 @@ If you omit this option path_html would be path - '/' + '_html/': >
ie, path_html = '~/okidoki_html/' ie, path_html = '~/okidoki_html/'
*vimwiki-option-auto_export*
------------------------------------------------------------------------------
Key Default value Values~
auto_export 0 0, 1
Description~
Set this option to 1 to automatically generate HTML file when corresponding
wiki page is saved: >
let g:vimwiki_list = [{'path': '~/my_site/', 'auto_export': 1}]
This will keep you HTML files up to date.
*vimwiki-option-index* *vimwiki-option-index*
---------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
index index index index
@ -774,7 +962,7 @@ NOTE: Do not add extension.
*vimwiki-option-ext* *vimwiki-option-ext*
-------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
ext .wiki ext .wiki
@ -785,7 +973,7 @@ Extension of wiki files: >
< <
*vimwiki-option-syntax* *vimwiki-option-syntax*
----------------------- ------------------------------------------------------------------------------
Key Default value Values~ Key Default value Values~
syntax default default, media syntax default default, media
@ -799,7 +987,7 @@ To use MediaWiki's wiki markup: >
< <
*vimwiki-option-html_header* *vimwiki-option-html_header*
---------------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
html_header html_header
@ -826,7 +1014,7 @@ where
*vimwiki-option-html_footer* *vimwiki-option-html_footer*
---------------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
html_footer html_footer
@ -842,7 +1030,7 @@ This footer.tpl could look like: >
< <
*vimwiki-option-css_name* *vimwiki-option-css_name*
------------------------- ------------------------------------------------------------------------------
Key Default value~ Key Default value~
css_name style.css css_name style.css
@ -857,7 +1045,7 @@ or even >
< <
*vimwiki-option-gohome* *vimwiki-option-gohome*
----------------------- ------------------------------------------------------------------------------
Key Default value Values~ Key Default value Values~
gohome split split, vsplit, tabe gohome split split, vsplit, tabe
@ -871,7 +1059,7 @@ Ex: >
< <
*vimwiki-option-maxhi* *vimwiki-option-maxhi*
---------------------- ------------------------------------------------------------------------------
Key Default value Values~ Key Default value Values~
maxhi 1 0, 1 maxhi 1 0, 1
@ -884,7 +1072,7 @@ This disables filesystem checks for WikiWords.
*vimwiki-option-nested_syntaxes* *vimwiki-option-nested_syntaxes*
-------------------------------- ------------------------------------------------------------------------------
Key Default value Values~ Key Default value Values~
nested_syntaxes {} pairs of highlight keyword and vim filetype nested_syntaxes {} pairs of highlight keyword and vim filetype
@ -927,7 +1115,51 @@ or in: >
Global options *vimwiki-option-diary_rel_path*
------------------------------------------------------------------------------
Key Default value~
diary_rel_path diary/
Description~
Related to |vimwiki-option-path| path for diary wiki-files.
*vimwiki-option-diary_index*
------------------------------------------------------------------------------
Key Default value~
diary_index diary
Description~
Name of wiki-file that holds all links to dated wiki-files.
*vimwiki-option-diary_header*
------------------------------------------------------------------------------
Key Default value~
diary_header Diary
Description~
Name of the header in |vimwiki-option-diary_index| where links to dated
wiki-files are located.
*vimwiki-option-diary_link_count*
------------------------------------------------------------------------------
Key Default value~
diary_link_count 4
Description~
Number of maximum dated links placed on one line.
Ex:
= Diary =
|| [[2010-01-30]] || [[2010-01-29]] || [[2010-01-28]] || [[2010-01-27]] ||
|| [[2010-01-26]] || [[2010-01-25]] ||
GLOBAL OPTIONS *viwmiki-global-options*
Use: > Use: >
let g:option_name=option_value let g:option_name=option_value
to set them. to set them.
@ -942,7 +1174,7 @@ Value Description~
0 Use |hl-Title| or VimwikiHeader1-VimwikiHeader6 (if defined 0 Use |hl-Title| or VimwikiHeader1-VimwikiHeader6 (if defined
in a colorscheme) in a colorscheme)
Default: 0 Default: 1
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
@ -1115,6 +1347,19 @@ Value Description~
Default: 1 Default: 1
------------------------------------------------------------------------------
*g:vimwiki_use_calendar*
Create new or open existing diary wiki-file for the date selected in Calendar.
See |vimwiki-calendar|.
Value Description~
0 Do not use calendar.
1 Use calendar.
Default: 1
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*g:vimwiki_browsers* *VimwikiWeblinkHandler* *g:vimwiki_browsers* *VimwikiWeblinkHandler*
@ -1136,8 +1381,37 @@ or redefine VimwikiWeblinkHandler function: >
endfunction endfunction
------------------------------------------------------------------------------
*g:vimwiki_table_auto_fmt*
Turn on/off table auto-formatting.
Value Description~
0 Do not auto-format tables.
1 Auto-format tables.
Default: 1
------------------------------------------------------------------------------
*g:vimwiki_w32_dir_enc*
Convert directory name from current |encoding| into 'g:vimwiki_w32_dir_enc'
before it is created.
If have 'enc=utf-8' and you set up >
let g:vimwiki_w32_dir_enc = 'cp1251'
<
then following the next link with <CR>: >
[[привет/мир]]
>
would convert utf-8 'привет' to cp1251 and create directory with that name.
Default value: ''
============================================================================== ==============================================================================
10. Help *vimwiki-help* 12. Help *vimwiki-help*
As you could see I am not native English speaker (not a writer as well). As you could see I am not native English speaker (not a writer as well).
Please send me correct phrases instead of that incorrect stuff I have used Please send me correct phrases instead of that incorrect stuff I have used
@ -1146,7 +1420,7 @@ here.
Any help is really appreciated! Any help is really appreciated!
============================================================================== ==============================================================================
11. Author *vimwiki-author* 13. Author *vimwiki-author*
I live in Moscow and you may believe me -- there are no polar bears (no brown I live in Moscow and you may believe me -- there are no polar bears (no brown
too) here in the streets. too) here in the streets.
@ -1165,7 +1439,30 @@ Vimwiki's website: http://code.google.com/p/vimwiki/
Vim plugins website: http://www.vim.org/scripts/script.php?script_id=2226 Vim plugins website: http://www.vim.org/scripts/script.php?script_id=2226
============================================================================== ==============================================================================
12. Changelog *vimwiki-changelog* 14. Changelog *vimwiki-changelog*
0.9.9~
* NEW: Diary. Help in making daily notes. See |vimwiki-diary|. Now you can
really easy add information into vimwiki that should be sorted out
later.
* NEW: Tables are redesigned. Syntax is changed. Now they are
auto-formattable. You can navigate them with <tab> and <cr> in insert
mode. See |vimwiki-syntax-tables| and |vimwiki-tables| for more details.
* NEW: Keyword STARTED: is added.
* NEW: Words TODO:, DONE:, STARTED:, XXX:, FIXME:, FIXED: are highlighed
inside headers.
* FIX: Export to html external links with 'file://' protocol. Ex:
[file:///home/user1/book.pdf my book].
* FIX: Menu is corrupted if wiki's path contains spaces.
* FIX: Settings |wrap| and |linebreak| are removed from ftplugin. Add them
into your personal settings file `.vim/after/ftplugin/vimwiki.vim` if
needed.
* NEW: Headers are highlighted in different colors by default.
See |g:vimwiki_hl_headers| to turn it off.
* FIX: Issue 40: Links with russian subdirs don't work.
* NEW: It is now possible to generate HTML files automatically on page
save. See |vimwiki-option-auto_export|.
0.9.8~ 0.9.8~
* NEW: Rename |g:vimwiki_fold_empty_lines| to * NEW: Rename |g:vimwiki_fold_empty_lines| to
@ -1517,12 +1814,12 @@ Vim plugins website: http://www.vim.org/scripts/script.php?script_id=2226
* First public version. * First public version.
============================================================================== ==============================================================================
13. License *vimwiki-license* 15. License *vimwiki-license*
The MIT Licence The MIT Licence
http://www.opensource.org/licenses/mit-license.php http://www.opensource.org/licenses/mit-license.php
Copyright (c) 2009 Maxim Kim Copyright (c) 2010 Maxim Kim
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -9,7 +9,7 @@ let b:did_ftplugin = 1 " Don't load another plugin for this buffer
" UNDO list {{{ " UNDO list {{{
" Reset the following options to undo this plugin. " Reset the following options to undo this plugin.
let b:undo_ftplugin = "setlocal wrap< linebreak< ". let b:undo_ftplugin = "setlocal ".
\ "suffixesadd< isfname< comments< ". \ "suffixesadd< isfname< comments< ".
\ "autowriteall< ". \ "autowriteall< ".
\ "formatoptions< foldtext< ". \ "formatoptions< foldtext< ".
@ -18,8 +18,6 @@ let b:undo_ftplugin = "setlocal wrap< linebreak< ".
" MISC STUFF {{{ " MISC STUFF {{{
setlocal wrap
setlocal linebreak
setlocal autowriteall setlocal autowriteall
setlocal commentstring=<!--%s--> setlocal commentstring=<!--%s-->
" MISC }}} " MISC }}}
@ -39,9 +37,9 @@ else
endif endif
setlocal formatoptions=tnro setlocal formatoptions=tnro
inoremap <expr> <CR> vimwiki_lst#insertCR() inoremap <buffer> <expr> <CR> vimwiki_lst#insertCR()
nnoremap o :call vimwiki_lst#insertOo('o')<CR>a nnoremap <buffer> o :call vimwiki_lst#insertOo('o')<CR>a
nnoremap O :call vimwiki_lst#insertOo('O')<CR>a nnoremap <buffer> O :call vimwiki_lst#insertOo('O')<CR>a
" COMMENTS }}} " COMMENTS }}}
@ -213,6 +211,11 @@ exe 'command! -buffer -nargs=* VimwikiSearch vimgrep <args> '.
exe 'command! -buffer -nargs=* VWS vimgrep <args> '. exe 'command! -buffer -nargs=* VWS vimgrep <args> '.
\ escape(VimwikiGet('path').'**/*'.VimwikiGet('ext'), ' ') \ escape(VimwikiGet('path').'**/*'.VimwikiGet('ext'), ' ')
" table commands
command! -buffer -nargs=* VimwikiTable call vimwiki_tbl#create(<f-args>)
command! -buffer VimwikiTableAlignQ call vimwiki_tbl#align_or_cmd('gqq')
command! -buffer VimwikiTableAlignW call vimwiki_tbl#align_or_cmd('gww')
" COMMANDS }}} " COMMANDS }}}
" KEYBINDINGS {{{ " KEYBINDINGS {{{
@ -284,6 +287,16 @@ noremap <silent><script><buffer>
\ <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR> \ <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
" Table mappings
if g:vimwiki_table_auto_fmt
inoremap <expr> <buffer> <CR> vimwiki_tbl#kbd_cr()
inoremap <expr> <buffer> <Tab> vimwiki_tbl#kbd_tab()
endif
nnoremap <buffer> gqq :VimwikiTableAlignQ<CR>
nnoremap <buffer> gww :VimwikiTableAlignW<CR>
" Text objects {{{ " Text objects {{{
omap <silent><buffer> ah :<C-U>call vimwiki#TO_header(0, 0)<CR> 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> vmap <silent><buffer> ah :<C-U>call vimwiki#TO_header(0, 1)<CR>
@ -297,3 +310,13 @@ nmap <silent><buffer> - :call vimwiki#RemoveHeaderLevel()<CR>
" }}} " }}}
" KEYBINDINGS }}} " KEYBINDINGS }}}
" AUTOCOMMANDS {{{
if VimwikiGet('auto_export')
" Automatically generate HTML on page write.
augroup vimwiki
au BufWritePost <buffer> Vimwiki2HTML
augroup END
endif
" AUTOCOMMANDS }}}

View File

@ -48,6 +48,11 @@ function! s:setup_buffer_leave()"{{{
if &filetype == 'vimwiki' && !exists("b:vimwiki_idx") if &filetype == 'vimwiki' && !exists("b:vimwiki_idx")
let b:vimwiki_idx = g:vimwiki_current_idx let b:vimwiki_idx = g:vimwiki_current_idx
endif endif
" Set up menu
if g:vimwiki_menu != ""
exe 'nmenu disable '.g:vimwiki_menu.'.Table'
endif
endfunction"}}} endfunction"}}}
function! s:setup_buffer_enter() "{{{ function! s:setup_buffer_enter() "{{{
@ -95,6 +100,11 @@ function! s:setup_buffer_enter() "{{{
setlocal foldexpr=VimwikiFoldLevel(v:lnum) setlocal foldexpr=VimwikiFoldLevel(v:lnum)
setlocal foldtext=VimwikiFoldText() setlocal foldtext=VimwikiFoldText()
endif endif
" Set up menu
if g:vimwiki_menu != ""
exe 'nmenu enable '.g:vimwiki_menu.'.Table'
endif
endfunction "}}} endfunction "}}}
function! s:setup_colors()"{{{ function! s:setup_colors()"{{{
@ -197,6 +207,18 @@ let s:vimwiki_defaults.gohome = 'split'
let s:vimwiki_defaults.html_header = '' let s:vimwiki_defaults.html_header = ''
let s:vimwiki_defaults.html_footer = '' let s:vimwiki_defaults.html_footer = ''
let s:vimwiki_defaults.nested_syntaxes = {} let s:vimwiki_defaults.nested_syntaxes = {}
let s:vimwiki_defaults.auto_export = 0
" diary
let s:vimwiki_defaults.diary_rel_path = 'diary/'
let s:vimwiki_defaults.diary_index = 'diary'
let s:vimwiki_defaults.diary_header = 'Diary'
" Do not change this! Will wait till vim would be more datetime awareable.
let s:vimwiki_defaults.diary_link_fmt = '%Y-%m-%d'
let s:vimwiki_defaults.diary_link_count = 4
"}}} "}}}
" DEFAULT options {{{ " DEFAULT options {{{
@ -218,7 +240,7 @@ call s:default('fold_trailing_empty_lines', 0)
call s:default('fold_lists', 0) call s:default('fold_lists', 0)
call s:default('menu', 'Vimwiki') call s:default('menu', 'Vimwiki')
call s:default('global_ext', 1) call s:default('global_ext', 1)
call s:default('hl_headers', 0) call s:default('hl_headers', 1)
call s:default('hl_cb_checked', 0) call s:default('hl_cb_checked', 0)
call s:default('camel_case', 1) call s:default('camel_case', 1)
call s:default('list_ignore_newline', 1) call s:default('list_ignore_newline', 1)
@ -240,6 +262,10 @@ else
\ ]) \ ])
endif endif
call s:default('use_calendar', 1)
call s:default('table_auto_fmt', 1)
call s:default('w32_dir_enc', '')
call s:default('current_idx', 0) call s:default('current_idx', 0)
let upp = g:vimwiki_upper let upp = g:vimwiki_upper
@ -263,7 +289,7 @@ let g:vimwiki_rxWeblink = '\%("[^"(]\+\((\([^)]\+\))\)\?":\)\?'.
\'\%(\%(\%(//\)\|\%(\\\\\)\)\+[A-Za-z0-9:#@%/;,$~()_?+=.&\\\-]*\)' \'\%(\%(\%(//\)\|\%(\\\\\)\)\+[A-Za-z0-9:#@%/;,$~()_?+=.&\\\-]*\)'
"}}} "}}}
" FILETYPE setup for all known wiki extensions {{{ " AUTOCOMMANDS for all known wiki extensions {{{
" Getting all extensions that different wikies could have " Getting all extensions that different wikies could have
let extensions = {} let extensions = {}
for wiki in g:vimwiki_list for wiki in g:vimwiki_list
@ -282,12 +308,21 @@ augroup end
augroup vimwiki augroup vimwiki
autocmd! autocmd!
for ext in keys(extensions) for ext in keys(extensions)
execute 'autocmd BufEnter *'.ext.' call s:setup_buffer_enter()' exe 'autocmd BufEnter *'.ext.' call s:setup_buffer_enter()'
execute 'autocmd BufLeave,BufHidden *'.ext.' call s:setup_buffer_leave()' exe 'autocmd BufLeave,BufHidden *'.ext.' call s:setup_buffer_leave()'
" ColorScheme could have or could have not a VimwikiHeader1..VimwikiHeader6 " ColorScheme could have or could have not a
" highlight groups. We need to refresh syntax after colorscheme change. " VimwikiHeader1..VimwikiHeader6 highlight groups. We need to refresh
execute 'autocmd ColorScheme *'.ext.' call s:setup_colors() | set syntax=vimwiki' " syntax after colorscheme change.
exe 'autocmd ColorScheme *'.ext.' call s:setup_colors()'.
\ ' | set syntax=vimwiki'
" Format tables when exit from insert mode. Do not use textwidth to
" autowrap tables.
if g:vimwiki_table_auto_fmt
exe 'autocmd InsertLeave *'.ext.' call vimwiki_tbl#format(line("."))'
exe 'autocmd InsertEnter *'.ext.' call vimwiki_tbl#reset_tw(line("."))'
endif
endfor endfor
augroup END augroup END
"}}} "}}}
@ -298,6 +333,11 @@ command! -count VimwikiGoHome
\ call vimwiki#WikiGoHome(v:count1) \ call vimwiki#WikiGoHome(v:count1)
command! -count VimwikiTabGoHome tabedit <bar> command! -count VimwikiTabGoHome tabedit <bar>
\ call vimwiki#WikiGoHome(v:count1) \ call vimwiki#WikiGoHome(v:count1)
command! -count VimwikiMakeDiaryNote
\ call vimwiki_diary#make_note(v:count1)
command! -count VimwikiTabMakeDiaryNote tabedit <bar>
\ call vimwiki_diary#make_note(v:count1)
"}}} "}}}
" MAPPINGS {{{ " MAPPINGS {{{
@ -316,21 +356,50 @@ if !hasmapto('<Plug>VimwikiUISelect')
endif endif
noremap <unique><script> <Plug>VimwikiUISelect :VimwikiUISelect<CR> noremap <unique><script> <Plug>VimwikiUISelect :VimwikiUISelect<CR>
if !hasmapto('<Plug>VimwikiMakeDiaryNote')
map <silent><unique> <Leader>w<Leader>w <Plug>VimwikiMakeDiaryNote
endif
noremap <unique><script> <Plug>VimwikiMakeDiaryNote :VimwikiMakeDiaryNote<CR>
if !hasmapto('<Plug>VimwikiTabMakeDiaryNote')
map <silent><unique> <Leader>w<Leader>t <Plug>VimwikiTabMakeDiaryNote
endif
noremap <unique><script> <Plug>VimwikiTabMakeDiaryNote
\ :VimwikiTabMakeDiaryNote<CR>
"}}} "}}}
" MENU {{{ " MENU {{{
function! s:build_menu(path) function! s:build_menu(topmenu)
let idx = 0 let idx = 0
while idx < len(g:vimwiki_list) while idx < len(g:vimwiki_list)
execute 'menu '.a:path.'.'.VimwikiGet('path', idx). let norm_path = fnamemodify(VimwikiGet('path', idx), ':h:t')
let norm_path = escape(norm_path, '\ ')
execute 'menu '.a:topmenu.'.Open\ index.'.norm_path.
\ ' :call vimwiki#WikiGoHome('.(idx + 1).')<CR>' \ ' :call vimwiki#WikiGoHome('.(idx + 1).')<CR>'
execute 'menu '.a:topmenu.'.Open/Create\ diary\ note.'.norm_path.
\ ' :call vimwiki_diary#make_note('.(idx + 1).')<CR>'
let idx += 1 let idx += 1
endwhile endwhile
endfunction endfunction
function! s:build_table_menu(topmenu)
exe 'menu '.a:topmenu.'.-Sep- :'
exe 'menu '.a:topmenu.'.Table.Create\ (enter\ cols\ rows) :VimwikiTable '
exe 'nmenu '.a:topmenu.'.Table.Format<tab>gqq gqq'
exe 'nmenu disable '.a:topmenu.'.Table'
endfunction
if !empty(g:vimwiki_menu) if !empty(g:vimwiki_menu)
call s:build_menu(g:vimwiki_menu) call s:build_menu(g:vimwiki_menu)
call s:build_table_menu(g:vimwiki_menu)
endif endif
" }}} " }}}
" CALENDAR Hook "{{{
if g:vimwiki_use_calendar
let g:calendar_action = 'vimwiki_diary#calendar_action'
endif
"}}}
let &cpo = s:old_cpo let &cpo = s:old_cpo

View File

@ -32,14 +32,21 @@ execute 'syntax match VimwikiLink `'.g:vimwiki_rxWeblink.'`'
" Emoticons " Emoticons
syntax match VimwikiEmoticons /\%((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/ syntax match VimwikiEmoticons /\%((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/
let g:vimwiki_rxTodo = '\C\%(TODO:\|DONE:\|FIXME:\|FIXED:\|XXX:\)' let g:vimwiki_rxTodo = '\C\%(TODO:\|DONE:\|STARTED:\|FIXME:\|FIXED:\|XXX:\)'
execute 'syntax match VimwikiTodo /'. g:vimwiki_rxTodo .'/' execute 'syntax match VimwikiTodo /'. g:vimwiki_rxTodo .'/'
" Load concrete Wiki syntax " Load concrete Wiki syntax
execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim' execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim'
" Tables " Tables
execute 'syntax match VimwikiTable /'.g:vimwiki_rxTable.'/' " execute 'syntax match VimwikiTable /'.g:vimwiki_rxTable.'/'
syntax match VimwikiTableRow /\s*|.\+|\s*/
\ transparent contains=VimwikiCellSeparator,VimwikiWord,
\ VimwikiNoExistsWord,VimwikiEmoticons,VimwikiTodo,
\ VimwikiBold,VimwikiItalic,VimwikiBoldItalic,VimwikiItalicBold,
\ VimwikiDelText,VimwikiSuperScript,VimwikiSubScript,VimwikiCode
syntax match VimwikiCellSeparator
\ /\%(|\)\|\%(-\@<=+\-\@=\)\|\%([|+]\@<=-\+\)/ contained
" List items " List items
execute 'syntax match VimwikiList /'.g:vimwiki_rxListBullet.'/' execute 'syntax match VimwikiList /'.g:vimwiki_rxListBullet.'/'
@ -80,15 +87,15 @@ endif
syntax region VimwikiComment start='<!--' end='-->' syntax region VimwikiComment start='<!--' end='-->'
if !vimwiki#hl_exists("VimwikiHeader1") if !vimwiki#hl_exists("VimwikiHeader1")
execute 'syntax match VimwikiHeader /'.g:vimwiki_rxHeader.'/' execute 'syntax match VimwikiHeader /'.g:vimwiki_rxHeader.'/ contains=VimwikiTodo'
else else
" Header levels, 1-6 " Header levels, 1-6
execute 'syntax match VimwikiHeader1 /'.g:vimwiki_rxH1.'/' execute 'syntax match VimwikiHeader1 /'.g:vimwiki_rxH1.'/ contains=VimwikiTodo'
execute 'syntax match VimwikiHeader2 /'.g:vimwiki_rxH2.'/' execute 'syntax match VimwikiHeader2 /'.g:vimwiki_rxH2.'/ contains=VimwikiTodo'
execute 'syntax match VimwikiHeader3 /'.g:vimwiki_rxH3.'/' execute 'syntax match VimwikiHeader3 /'.g:vimwiki_rxH3.'/ contains=VimwikiTodo'
execute 'syntax match VimwikiHeader4 /'.g:vimwiki_rxH4.'/' execute 'syntax match VimwikiHeader4 /'.g:vimwiki_rxH4.'/ contains=VimwikiTodo'
execute 'syntax match VimwikiHeader5 /'.g:vimwiki_rxH5.'/' execute 'syntax match VimwikiHeader5 /'.g:vimwiki_rxH5.'/ contains=VimwikiTodo'
execute 'syntax match VimwikiHeader6 /'.g:vimwiki_rxH6.'/' execute 'syntax match VimwikiHeader6 /'.g:vimwiki_rxH6.'/ contains=VimwikiTodo'
endif endif
" group names "{{{ " group names "{{{
@ -117,13 +124,14 @@ hi def link VimwikiLink Underlined
hi def link VimwikiList Function hi def link VimwikiList Function
hi def link VimwikiCheckBox VimwikiList hi def link VimwikiCheckBox VimwikiList
hi def link VimwikiCheckBoxDone Comment hi def link VimwikiCheckBoxDone Comment
hi def link VimwikiTable PreProc
hi def link VimwikiEmoticons Character hi def link VimwikiEmoticons Character
hi def link VimwikiDelText Constant hi def link VimwikiDelText Constant
hi def link VimwikiSuperScript Number hi def link VimwikiSuperScript Number
hi def link VimwikiSubScript Number hi def link VimwikiSubScript Number
hi def link VimwikiTodo Todo hi def link VimwikiTodo Todo
hi def link VimwikiComment Comment hi def link VimwikiComment Comment
hi def link VimwikiCellSeparator SpecialKey
"}}} "}}}
let b:current_syntax="vimwiki" let b:current_syntax="vimwiki"