commit 6cafc97c9c39227deec13bb877f02e7105e31704
parent 2d0616343dfe03ef130a0df11fbf446b0fe6b03b
Author: Ivan Tishchenko <ivan.tishchenko@dsr-company.con>
Date: Sun, 4 Jan 2015 00:24:32 +0300
Implement saving metadata to file
Diffstat:
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -1930,10 +1930,16 @@ endfunction "}}}
" TAGS functions {{{
+let s:TAGS_METADATA_FILE_NAME = '.tags'
+
" Tags metadata in-memory format:
" metadata := [ entry, ... ]
" entry := { 'tagname':..., 'pagename':..., 'lineno':..., 'link':... }
+" Tags metadata in-file format:
+" * entry per line,
+" * entry fields go in the same order as defined above, separated with TAB (\t)
+
" vimwiki#base#update_tags
" Update tags metadata.
" a:full_rebuild == 1: re-scan entire wiki
@@ -2046,12 +2052,23 @@ endfunction " }}}
" vimwiki#base#merge_tags
" Merges two tags metadata objects into (new) one.
function! vimwiki#base#merge_tags(metadata1, metadata2) "{{{
- return []
+ return a:metadata1 + a:metadata2
endfunction " }}}
" vimwiki#base#write_tags_metadata
" Saves metadata object into a file. Throws exceptions in case of problems.
function! vimwiki#base#write_tags_metadata(metadata) "{{{
+ let metadata_path = VimwikiGet('path') . '/' . s:TAGS_METADATA_FILE_NAME
+ let entries = []
+ for entry in a:metadata
+ call add(entries,
+ \ entry.tagname . "\t"
+ \ . entry.pagename . "\t"
+ \ . entry.lineno . "\t"
+ \ . entry.link
+ \)
+ endfor
+ call writefile(entries, metadata_path)
endfunction " }}}
" }}}