Make generation functions compatible with older vims.
PR #634, PR #635, and PR #636 introduced new features that broke compatibility with older version of Vim. This modifies those changes to ensure compatibility. Closes #781. Removes usage of funcref(), closure. Fixes filter() call. Made globpath calls not use the list argument. Unlet a variable that is reused (sticky type checking) v7.4.1989 modified filter() to accept a Funcref v7.4.2120 Added function "closure" argument v7.4.2137 add funcref()
This commit is contained in:
parent
c8bb658360
commit
460fcb692e
@ -380,7 +380,8 @@ endfunction
|
|||||||
|
|
||||||
function! vimwiki#base#generate_links(create)
|
function! vimwiki#base#generate_links(create)
|
||||||
|
|
||||||
function! Generator() closure
|
let GeneratorLinks = copy(l:)
|
||||||
|
function! GeneratorLinks.f()
|
||||||
let lines = []
|
let lines = []
|
||||||
|
|
||||||
let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0)
|
let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0)
|
||||||
@ -413,7 +414,7 @@ function! vimwiki#base#generate_links(create)
|
|||||||
let links_rx = '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
let links_rx = '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
||||||
|
|
||||||
call vimwiki#base#update_listing_in_buffer(
|
call vimwiki#base#update_listing_in_buffer(
|
||||||
\ funcref('Generator'),
|
\ GeneratorLinks,
|
||||||
\ vimwiki#vars#get_global('links_header'),
|
\ vimwiki#vars#get_global('links_header'),
|
||||||
\ links_rx,
|
\ links_rx,
|
||||||
\ line('$')+1,
|
\ line('$')+1,
|
||||||
@ -489,17 +490,15 @@ function! vimwiki#base#find_files(wiki_nr, directories_only)
|
|||||||
else
|
else
|
||||||
let pattern = '**/*'.ext
|
let pattern = '**/*'.ext
|
||||||
endif
|
endif
|
||||||
let files = globpath(root_directory, pattern, 0, 1)
|
let files = split(globpath(root_directory, pattern))
|
||||||
|
|
||||||
" filter excluded files before returning
|
" filter excluded files before returning
|
||||||
function! ExcludeFiles(idx, val) closure
|
|
||||||
for pattern in vimwiki#vars#get_wikilocal('exclude_files')
|
for pattern in vimwiki#vars#get_wikilocal('exclude_files')
|
||||||
if index(globpath(root_directory, pattern, 0, 1), a:val) != -1
|
let efiles = split(globpath(root_directory, pattern))
|
||||||
return 0
|
let files = filter(files, 'index(efiles, v:val) == -1')
|
||||||
endif
|
|
||||||
endfor
|
endfor
|
||||||
return 1
|
|
||||||
endfunction
|
return files
|
||||||
return filter(files, funcref('ExcludeFiles'))
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -1209,7 +1208,7 @@ function! vimwiki#base#update_listing_in_buffer(Generator, start_header,
|
|||||||
let lines_diff += 1
|
let lines_diff += 1
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
for string in a:Generator()
|
for string in a:Generator.f()
|
||||||
keepjumps call append(start_lnum - 1, string)
|
keepjumps call append(start_lnum - 1, string)
|
||||||
let start_lnum += 1
|
let start_lnum += 1
|
||||||
let lines_diff += 1
|
let lines_diff += 1
|
||||||
@ -1999,15 +1998,18 @@ function! vimwiki#base#table_of_contents(create)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! Generator() closure
|
" use a dictionary function for closure like capability
|
||||||
|
" copy all local variables into dict (add a: if arguments are needed)
|
||||||
|
let GeneratorTOC = copy(l:)
|
||||||
|
function! GeneratorTOC.f()
|
||||||
let numbering = vimwiki#vars#get_global('html_header_numbering')
|
let numbering = vimwiki#vars#get_global('html_header_numbering')
|
||||||
let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
|
let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
|
||||||
let complete_header_infos = []
|
let complete_header_infos = []
|
||||||
for header in headers
|
for header in self.headers
|
||||||
let h_text = header[2]
|
let h_text = header[2]
|
||||||
let h_level = header[1]
|
let h_level = header[1]
|
||||||
" don't include the TOC's header itself
|
" don't include the TOC's header itself
|
||||||
if h_text ==# toc_header_text
|
if h_text ==# self.toc_header_text
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
let headers_levels[h_level-1] = [h_text, headers_levels[h_level-1][1]+1]
|
let headers_levels[h_level-1] = [h_text, headers_levels[h_level-1][1]+1]
|
||||||
@ -2050,7 +2052,7 @@ function! vimwiki#base#table_of_contents(create)
|
|||||||
let links_rx = '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
let links_rx = '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
||||||
|
|
||||||
call vimwiki#base#update_listing_in_buffer(
|
call vimwiki#base#update_listing_in_buffer(
|
||||||
\ funcref('Generator'),
|
\ GeneratorTOC,
|
||||||
\ toc_header_text,
|
\ toc_header_text,
|
||||||
\ links_rx,
|
\ links_rx,
|
||||||
\ 1,
|
\ 1,
|
||||||
|
@ -312,7 +312,8 @@ endfunction
|
|||||||
|
|
||||||
function! vimwiki#diary#generate_diary_section()
|
function! vimwiki#diary#generate_diary_section()
|
||||||
|
|
||||||
function! Generator() closure
|
let GeneratorDiary = copy(l:)
|
||||||
|
function! GeneratorDiary.f()
|
||||||
let lines = []
|
let lines = []
|
||||||
|
|
||||||
let links_with_captions = s:read_captions(s:get_diary_files())
|
let links_with_captions = s:read_captions(s:get_diary_files())
|
||||||
@ -392,7 +393,7 @@ function! vimwiki#diary#generate_diary_section()
|
|||||||
\ '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
\ '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
||||||
|
|
||||||
call vimwiki#base#update_listing_in_buffer(
|
call vimwiki#base#update_listing_in_buffer(
|
||||||
\ funcref('Generator'),
|
\ GeneratorDiary,
|
||||||
\ vimwiki#vars#get_wikilocal('diary_header'),
|
\ vimwiki#vars#get_wikilocal('diary_header'),
|
||||||
\ content_rx,
|
\ content_rx,
|
||||||
\ 1,
|
\ 1,
|
||||||
|
@ -303,8 +303,11 @@ function! vimwiki#tags#generate_tags(create, ...) abort
|
|||||||
let specific_tags = a:000
|
let specific_tags = a:000
|
||||||
let header_level = vimwiki#vars#get_global('tags_header_level')
|
let header_level = vimwiki#vars#get_global('tags_header_level')
|
||||||
|
|
||||||
function! Generator() closure
|
" use a dictionary function for closure like capability
|
||||||
let need_all_tags = empty(specific_tags)
|
" copy all local variables into dict (add a: if arguments are needed)
|
||||||
|
let GeneratorTags = copy(l:)
|
||||||
|
function! GeneratorTags.f()
|
||||||
|
let need_all_tags = empty(self.specific_tags)
|
||||||
let metadata = s:load_tags_metadata()
|
let metadata = s:load_tags_metadata()
|
||||||
|
|
||||||
" make a dictionary { tag_name: [tag_links, ...] }
|
" make a dictionary { tag_name: [tag_links, ...] }
|
||||||
@ -317,17 +320,18 @@ function! vimwiki#tags#generate_tags(create, ...) abort
|
|||||||
let tags_entries[entry.tagname] = [entry.link]
|
let tags_entries[entry.tagname] = [entry.link]
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
unlet entry " needed for older vims with sticky type checking since name is reused
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
let lines = []
|
let lines = []
|
||||||
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).vimwiki#lst#default_symbol().' '
|
let bullet = repeat(' ', vimwiki#lst#get_list_margin()).vimwiki#lst#default_symbol().' '
|
||||||
for tagname in sort(keys(tags_entries))
|
for tagname in sort(keys(tags_entries))
|
||||||
if need_all_tags || index(specific_tags, tagname) != -1
|
if need_all_tags || index(self.specific_tags, tagname) != -1
|
||||||
if len(lines) > 0
|
if len(lines) > 0
|
||||||
call add(lines, '')
|
call add(lines, '')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let tag_tpl = printf('rxH%d_Template', header_level + 1)
|
let tag_tpl = printf('rxH%d_Template', self.header_level + 1)
|
||||||
call add(lines, s:safesubstitute(vimwiki#vars#get_syntaxlocal(tag_tpl), '__Header__', tagname, ''))
|
call add(lines, s:safesubstitute(vimwiki#vars#get_syntaxlocal(tag_tpl), '__Header__', tagname, ''))
|
||||||
|
|
||||||
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
|
if vimwiki#vars#get_wikilocal('syntax') == 'markdown'
|
||||||
@ -363,7 +367,7 @@ function! vimwiki#tags#generate_tags(create, ...) abort
|
|||||||
\ '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
\ '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)'
|
||||||
|
|
||||||
call vimwiki#base#update_listing_in_buffer(
|
call vimwiki#base#update_listing_in_buffer(
|
||||||
\ funcref('Generator'),
|
\ GeneratorTags,
|
||||||
\ vimwiki#vars#get_global('tags_header'),
|
\ vimwiki#vars#get_global('tags_header'),
|
||||||
\ links_rx,
|
\ links_rx,
|
||||||
\ line('$')+1,
|
\ line('$')+1,
|
||||||
|
Loading…
Reference in New Issue
Block a user