commit 7bc2fcb3a7f6ef9017f0edab242acf5a29419d7a
parent df5e49c7fdb684bccd67ef4baac2c29e17745117
Author: Ivan Tishchenko <ivan.tishchenko@dsr-company.con>
Date: Thu, 12 Feb 2015 22:20:16 +0300
Merge remote-tracking branch 'vimwiki/dev' into 'vimwiki/tags'
Conflicts:
doc/vimwiki.txt
ftplugin/vimwiki.vim
Diffstat:
15 files changed, 254 insertions(+), 233 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,3 @@
+*.sw*
+doc/tags
+.netrwhist
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -8,26 +8,8 @@ if exists("g:loaded_vimwiki_auto") || &cp
endif
let g:loaded_vimwiki_auto = 1
-" MISC helper functions {{{
-
-function! vimwiki#base#get_known_extensions() " {{{
- " Getting all extensions that different wikis could have
- let extensions = {}
- for wiki in g:vimwiki_list
- if has_key(wiki, 'ext')
- let extensions[wiki.ext] = 1
- else
- let extensions['.wiki'] = 1
- endif
- endfor
- " append map g:vimwiki_ext2syntax
- for ext in keys(g:vimwiki_ext2syntax)
- let extensions[ext] = 1
- endfor
- return keys(extensions)
-endfunction " }}}
-
-function! vimwiki#base#get_known_syntaxes() " {{{
+" s:vimwiki_get_known_syntaxes
+function! s:vimwiki_get_known_syntaxes() " {{{
" Getting all syntaxes that different wikis could have
let syntaxes = {}
let syntaxes['default'] = 1
@@ -42,7 +24,6 @@ function! vimwiki#base#get_known_syntaxes() " {{{
endfor
return keys(syntaxes)
endfunction " }}}
-" }}}
" vimwiki#base#apply_wiki_options
function! vimwiki#base#apply_wiki_options(options) " {{{ Update the current
@@ -90,7 +71,7 @@ function! vimwiki#base#read_wiki_options(check) " {{{ Attempt to read wiki
"
echo "\nFound file : ".local_wiki_options_filename
let query = "Vimwiki: Check for options in this file [Y]es/[n]o? "
- if a:check > 0 && (tolower(input(query)) !~ "y")
+ if a:check > 0 && input(query) =~? '^n')
continue
endif
"
@@ -105,7 +86,7 @@ function! vimwiki#base#read_wiki_options(check) " {{{ Attempt to read wiki
if a:check > 0
echo "\n\nFound wiki options\n g:local_wiki = ".string(g:local_wiki)
let query = "Vimwiki: Apply these options [Y]es/[n]o? "
- if tolower(input(query)) !~ "y"
+ if input(query) =~? '^n'
let g:local_wiki = {}
continue
endif
@@ -149,7 +130,10 @@ function! vimwiki#base#setup_buffer_state(idx) " {{{ Init page-specific variable
let subdir = vimwiki#base#current_subdir(a:idx)
call VimwikiSet('subdir', subdir, a:idx)
call VimwikiSet('invsubdir', vimwiki#base#invsubdir(subdir), a:idx)
- call VimwikiSet('url', vimwiki#html#get_wikifile_url(expand('%:p')), a:idx)
+
+ if g:vimwiki_auto_chdir == 1
+ exe 'lcd' VimwikiGet('path')
+ endif
" update cache
call vimwiki#base#cache_buffer_state()
@@ -246,7 +230,7 @@ function! vimwiki#base#resolve_scheme(lnk, as_html, ...) " {{{ Resolve scheme
let lnk = a:lnk
" if link is schemeless add wikiN: scheme
- let is_schemeless = lnk !~ g:vimwiki_rxSchemeUrl
+ let is_schemeless = lnk !~# g:vimwiki_rxSchemeUrl
let lnk = (is_schemeless ? 'wiki'.g:vimwiki_current_idx.':'.lnk : lnk)
" Get scheme
@@ -260,7 +244,7 @@ function! vimwiki#base#resolve_scheme(lnk, as_html, ...) " {{{ Resolve scheme
let anchor = ''
"extract anchor
- if scheme =~ 'wiki' || scheme =~ 'diary'
+ if scheme =~# 'wiki' || scheme =~# 'diary'
let split_lnk = split(lnk, '#', 1)
let lnk = split_lnk[0]
if len(split_lnk) <= 1 || split_lnk[-1] == ''
@@ -271,13 +255,13 @@ function! vimwiki#base#resolve_scheme(lnk, as_html, ...) " {{{ Resolve scheme
endif
" do nothing if scheme is unknown to vimwiki
- if !(scheme =~ 'wiki.*' || scheme =~ 'diary' || scheme =~ 'local'
- \ || scheme =~ 'file')
+ if !(scheme =~# 'wiki.*' || scheme =~# 'diary' || scheme =~# 'local'
+ \ || scheme =~# 'file')
return [idx, scheme, path, subdir, lnk, ext, scheme.':'.lnk, anchor]
endif
" scheme behaviors
- if scheme =~ 'wiki\d\+'
+ if scheme =~# 'wiki\d\+'
let idx = eval(matchstr(scheme, '\D\+\zs\d\+\ze'))
if idx < 0 || idx >= len(g:vimwiki_list)
if !quiet
@@ -319,9 +303,9 @@ function! vimwiki#base#resolve_scheme(lnk, as_html, ...) " {{{ Resolve scheme
" default link for directories
if vimwiki#path#is_link_to_dir(lnk)
- let ext = (g:vimwiki_dir_link != '' ? g:vimwiki_dir_link. ext : '')
+ let ext = (g:vimwiki_dir_link != '' ? g:vimwiki_dir_link . ext : '')
endif
- elseif scheme =~ 'diary'
+ elseif scheme =~# 'diary'
if a:as_html
" use cached value (save time when converting diary index!)
let path = VimwikiGet('invsubdir')
@@ -332,7 +316,7 @@ function! vimwiki#base#resolve_scheme(lnk, as_html, ...) " {{{ Resolve scheme
endif
let idx = g:vimwiki_current_idx
let subdir = VimwikiGet('diary_rel_path')
- elseif scheme =~ 'local'
+ elseif scheme =~# 'local'
" revisiting the 'lcd'-bug ...
let path = VimwikiGet('path')
let subdir = VimwikiGet('subdir')
@@ -340,7 +324,7 @@ function! vimwiki#base#resolve_scheme(lnk, as_html, ...) " {{{ Resolve scheme
" prepend browser-specific file: scheme
let path = 'file://'.fnamemodify(path, ":p")
endif
- elseif scheme =~ 'file'
+ elseif scheme =~# 'file'
" RM repeated leading "/"'s within a link
let lnk = substitute(lnk, '^/*', '/', '')
" convert "/~..." into "~..." for fnamemodify
@@ -438,21 +422,21 @@ function! vimwiki#base#open_link(cmd, link, ...) "{{{
return
endif
- let update_prev_link = ( (scheme == '' || scheme =~ 'wiki' || scheme =~ 'diary')
- \ && lnk != expand('%:t:r')
+ let update_prev_link = ( (scheme == '' || scheme =~# 'wiki' || scheme =~# 'diary')
+ \ && !vimwiki#path#is_equal(lnk, expand('%:t:r'))
\ ? 1 : 0)
let use_system_open = (
- \ scheme == '' ||
- \ scheme =~ 'wiki' ||
- \ scheme =~ 'diary' ? 0 : 1)
+ \ scheme == '' ||
+ \ scheme =~# 'wiki' ||
+ \ scheme =~# 'diary' ? 0 : 1)
let vimwiki_prev_link = []
" update previous link for wiki pages
if update_prev_link
if a:0
let vimwiki_prev_link = [a:1, []]
- elseif &ft == 'vimwiki'
+ elseif &ft ==# 'vimwiki'
let vimwiki_prev_link = [expand('%:p'), getpos('.')]
endif
endif
@@ -535,7 +519,8 @@ function! vimwiki#base#backlinks() "{{{
let links = s:get_links(source_file, idx)
for [target_file, _, lnum, col] in links
" don't include links from the current file to itself
- if target_file == current_filename && target_file != source_file
+ if vimwiki#path#is_equal(target_file, current_filename) &&
+ \ !vimwiki#path#is_equal(target_file, source_file)
call add(locations, {'filename':source_file, 'lnum':lnum, 'col':col})
endif
endfor
@@ -652,7 +637,7 @@ function! vimwiki#base#get_anchors(filename, syntax) "{{{
endif
" collect bold text (there can be several in one line)
- let bold_count = 0
+ let bold_count = 1
while 1
let bold_text = matchstr(line, rxbold, 0, bold_count)
if bold_text == ''
@@ -722,27 +707,27 @@ function! s:link_target(source_file, wiki_nr, link_text) "{{{
\ vimwiki#base#resolve_scheme(a:link_text, 0, 1)
let source_dir = fnamemodify(a:source_file, ':p:h').'/'
- if lnk =~ '/$' " link to a directory
+ if lnk =~# '/$' " link to a directory
return []
elseif url == '' && anchor != '' " only anchor
return [fnamemodify(a:source_file, ':p'), anchor]
- elseif scheme == 'file'
+ elseif scheme ==# 'file'
return [url, '']
- elseif scheme == 'local'
+ elseif scheme ==# 'local'
return [vimwiki#path#normalize(source_dir.lnk), '']
elseif target_idx >= len(g:vimwiki_list) " a malformed link
return ['', '']
- elseif scheme !~ '^wiki\d\+\|diary' " unknown scheme
+ elseif scheme !~# '^wiki\d\+\|diary' " unknown scheme
return []
endif
- if scheme == 'diary'
+ if scheme ==# 'diary'
let root_dir = VimwikiGet('path',a:wiki_nr).
\ VimwikiGet('diary_rel_path', a:wiki_nr)
let ext = VimwikiGet('ext', a:wiki_nr)
else
" a schemeless link is like a link to the current wiki
- if a:link_text !~ '^wiki\d\+:'
+ if a:link_text !~# '^wiki\d\+:'
let target_idx = a:wiki_nr
endif
@@ -895,7 +880,7 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) "{{{
" which happens if we jump to an achor in the current file.
" This hack is necessary because apparently Vim messes up the result of
" getpos() directly after this command. Strange.
- if !(a:command == ':e ' && a:filename == expand('%:p'))
+ if !(a:command ==# ':e ' && vimwiki#path#is_equal(a:filename, expand('%:p')))
execute a:command.' '.fname
endif
if a:anchor != ''
@@ -1064,7 +1049,7 @@ function! s:get_wiki_buffers() "{{{
while bcount<=bufnr("$")
if bufexists(bcount)
let bname = fnamemodify(bufname(bcount), ":p")
- if bname =~ VimwikiGet('ext')."$"
+ if bname =~# VimwikiGet('ext')."$"
let bitem = [bname, getbufvar(bname, "vimwiki_prev_link")]
call add(blist, bitem)
endif
@@ -1126,7 +1111,7 @@ function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort "{{
" Here perlFunctionName (with quite an angry regexp "\h\w*[^:]") clashes with
" the rest syntax rules as now it has effect being really 'contained'.
" Clear it!
- if ft =~ 'perl'
+ if ft =~? 'perl'
syntax clear perlFunctionName
endif
endfunction "}}}
@@ -1140,8 +1125,8 @@ endfunction " }}}
" vimwiki#base#find_prev_link
function! vimwiki#base#find_prev_link() "{{{
"Jump 2 times if the cursor is in the middle of a link
- if synIDattr(synID(line('.'), col('.'), 0), "name") =~ "VimwikiLink.*" &&
- \ synIDattr(synID(line('.'), col('.')-1, 0), "name") =~ "VimwikiLink.*"
+ if synIDattr(synID(line('.'), col('.'), 0), "name") =~# "VimwikiLink.*" &&
+ \ synIDattr(synID(line('.'), col('.')-1, 0), "name") =~# "VimwikiLink.*"
call vimwiki#base#search_word(g:vimwiki_rxAnyLink, 'b')
endif
call vimwiki#base#search_word(g:vimwiki_rxAnyLink, 'b')
@@ -1161,11 +1146,11 @@ function! vimwiki#base#follow_link(split, ...) "{{{ Parse link at cursor and pas
call vimwiki#{VimwikiGet('syntax')}_base#follow_link(a:split)
endif
else
- if a:split == "split"
+ if a:split ==# "split"
let cmd = ":split "
- elseif a:split == "vsplit"
+ elseif a:split ==# "vsplit"
let cmd = ":vsplit "
- elseif a:split == "tabnew"
+ elseif a:split ==# "tabnew"
let cmd = ":tabnew "
else
let cmd = ":e "
@@ -1247,8 +1232,8 @@ endfunction "}}}
function! vimwiki#base#delete_link() "{{{
"" file system funcs
"" Delete wiki link you are in from filesystem
- let val = input('Delete ['.expand('%').'] (y/n)? ', "")
- if val != 'y'
+ let val = input('Delete "'.expand('%').'" [y]es/[N]o? ')
+ if val !~? '^y'
return
endif
let fname = expand('%:p')
@@ -1281,14 +1266,14 @@ function! vimwiki#base#rename_link() "{{{
return
endif
- let val = input('Rename "'.expand('%:t:r').'" (y/n)? ', "")
- if val!='y'
+ let val = input('Rename "'.expand('%:t:r').'" [y]es/[N]o? ')
+ if val !~? '^y'
return
endif
- let new_link = input('Enter new name: ', "")
+ let new_link = input('Enter new name: ')
- if new_link =~ '[/\\]'
+ if new_link =~# '[/\\]'
" It is actually doable but I do not have free time to do it.
echomsg 'vimwiki: Cannot rename to a filename with path!'
return
@@ -1355,7 +1340,7 @@ function! vimwiki#base#rename_link() "{{{
" restore wiki buffers
for bitem in blist
- if bitem[0] != cur_buffer[0]
+ if !vimwiki#path#is_equal(bitem[0], cur_buffer[0])
call s:open_wiki_buffer(bitem)
endif
endfor
@@ -1419,7 +1404,7 @@ function! vimwiki#base#TO_header(inner, visual) "{{{
call cursor(line('$'), 0)
endif
- if a:inner && getline(line('.')) =~ '^\s*$'
+ if a:inner && getline(line('.')) =~# '^\s*$'
let lnum = prevnonblank(line('.') - 1)
call cursor(lnum, 0)
endif
@@ -1515,7 +1500,7 @@ function! vimwiki#base#TO_table_col(inner, visual) "{{{
" | bla | bla |
" |-------+-------|
" or it will select wrong column.
- if strpart(getline('.'), virtcol('.')-1) =~ '^-+'
+ if strpart(getline('.'), virtcol('.')-1) =~# '^-+'
let s_flag = 'b'
else
let s_flag = 'cb'
@@ -1538,7 +1523,7 @@ function! vimwiki#base#TO_table_col(inner, visual) "{{{
normal! `>
if !firsttime && getline('.')[virtcol('.')] == '|'
normal! l
- elseif a:inner && getline('.')[virtcol('.')+1] =~ '[|+]'
+ elseif a:inner && getline('.')[virtcol('.')+1] =~# '[|+]'
normal! 2l
endif
" search for the next column separator
@@ -1569,7 +1554,7 @@ function! vimwiki#base#TO_table_col(inner, visual) "{{{
" | bla | bla |
" |-------+-------|
" or it will select wrong column.
- if strpart(getline('.'), virtcol('.')-1) =~ '^-+'
+ if strpart(getline('.'), virtcol('.')-1) =~# '^-+'
let s_flag = 'b'
else
let s_flag = 'cb'
@@ -1612,11 +1597,11 @@ function! vimwiki#base#AddHeaderLevel() "{{{
let lnum = line('.')
let line = getline(lnum)
let rxHdr = g:vimwiki_rxH
- if line =~ '^\s*$'
+ if line =~# '^\s*$'
return
endif
- if line =~ g:vimwiki_rxHeader
+ if line =~# g:vimwiki_rxHeader
let level = vimwiki#u#count_first_sym(line)
if level < 6
if g:vimwiki_symH
@@ -1640,16 +1625,16 @@ function! vimwiki#base#RemoveHeaderLevel() "{{{
let lnum = line('.')
let line = getline(lnum)
let rxHdr = g:vimwiki_rxH
- if line =~ '^\s*$'
+ if line =~# '^\s*$'
return
endif
- if line =~ g:vimwiki_rxHeader
+ if line =~# g:vimwiki_rxHeader
let level = vimwiki#u#count_first_sym(line)
let old = repeat(rxHdr, level)
let new = repeat(rxHdr, level - 1)
- let chomp = line =~ rxHdr.'\s'
+ let chomp = line =~# rxHdr.'\s'
if g:vimwiki_symH
let line = substitute(line, old, new, 'g')
@@ -1701,7 +1686,7 @@ function! vimwiki#base#table_of_contents(create)
" delete old TOC
if toc_line > 0
let endoftoc = toc_line+1
- while endoftoc <= line('$') && getline(endoftoc) =~ '^\s*'.rx_bullet.g:vimwiki_rxWikiLink.'\s*$'
+ while endoftoc <= line('$') && getline(endoftoc) =~# '^\s*'.rx_bullet.g:vimwiki_rxWikiLink.'\s*$'
let endoftoc += 1
endwhile
silent exe toc_line.','.string(endoftoc-1).'delete _'
@@ -1714,7 +1699,7 @@ function! vimwiki#base#table_of_contents(create)
let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
for lnum in range(1, line('$'))
let line_content = getline(lnum)
- if line_content !~ g:vimwiki_rxHeader
+ if line_content !~# g:vimwiki_rxHeader
continue
endif
let h_level = vimwiki#u#count_first_sym(line_content)
@@ -1756,7 +1741,7 @@ function! vimwiki#base#table_of_contents(create)
call append(toc_line, startindent.repeat(indentstring, lvl-1).bullet.link)
let toc_line += 1
endfor
- if getline(toc_line+1) !~ '^\s*$'
+ if getline(toc_line+1) !~# '^\s*$'
call append(toc_line, '')
endif
call setpos('.', old_cursor_pos)
@@ -1787,16 +1772,16 @@ endfunction " }}}
" s:clean_url
function! s:clean_url(url) " {{{
let url = split(a:url, '/\|=\|-\|&\|?\|\.')
- let url = filter(url, 'v:val != ""')
- let url = filter(url, 'v:val != "www"')
- let url = filter(url, 'v:val != "com"')
- let url = filter(url, 'v:val != "org"')
- let url = filter(url, 'v:val != "net"')
- let url = filter(url, 'v:val != "edu"')
- let url = filter(url, 'v:val != "http\:"')
- let url = filter(url, 'v:val != "https\:"')
- let url = filter(url, 'v:val != "file\:"')
- let url = filter(url, 'v:val != "xml\:"')
+ let url = filter(url, 'v:val !=# ""')
+ let url = filter(url, 'v:val !=# "www"')
+ let url = filter(url, 'v:val !=# "com"')
+ let url = filter(url, 'v:val !=# "org"')
+ let url = filter(url, 'v:val !=# "net"')
+ let url = filter(url, 'v:val !=# "edu"')
+ let url = filter(url, 'v:val !=# "http\:"')
+ let url = filter(url, 'v:val !=# "https\:"')
+ let url = filter(url, 'v:val !=# "file\:"')
+ let url = filter(url, 'v:val !=# "xml\:"')
return join(url, " ")
endfunction " }}}
@@ -2236,7 +2221,7 @@ endfunction " }}}
" -------------------------------------------------------------------------
" Load syntax-specific Wiki functionality
-for s:syn in vimwiki#base#get_known_syntaxes()
+for s:syn in s:vimwiki_get_known_syntaxes()
execute 'runtime! autoload/vimwiki/'.s:syn.'_base.vim'
endfor
" -------------------------------------------------------------------------
diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim
@@ -25,17 +25,6 @@ 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(...) "{{{
let idx = a:0 == 0 ? g:vimwiki_current_idx : a:1
return VimwikiGet('path', idx).VimwikiGet('diary_rel_path', idx)
@@ -54,7 +43,7 @@ endfunction "}}}
function! s:get_position_links(link) "{{{
let idx = -1
let links = []
- if a:link =~ '^\d\{4}-\d\d-\d\d'
+ if a:link =~# '^\d\{4}-\d\d-\d\d'
let links = keys(s:get_diary_links())
" include 'today' into links
if index(links, s:diary_date_link()) == -1
@@ -81,7 +70,7 @@ fun! s:read_captions(files) "{{{
if filereadable(fl)
for line in readfile(fl, '', s:vimwiki_max_scan_for_caption)
- if line =~ g:vimwiki_rxHeader && !has_key(result, fl_key)
+ if line =~# g:vimwiki_rxHeader && !has_key(result, fl_key)
let result[fl_key] = vimwiki#u#trim(matchstr(line, g:vimwiki_rxHeader))
endif
endfor
@@ -99,10 +88,10 @@ fun! s:get_diary_links(...) "{{{
let rx = '^\d\{4}-\d\d-\d\d'
let s_files = glob(VimwikiGet('path').VimwikiGet('diary_rel_path').'*'.VimwikiGet('ext'))
let files = split(s_files, '\n')
- call filter(files, 'fnamemodify(v:val, ":t") =~ "'.escape(rx, '\').'"')
+ call filter(files, 'fnamemodify(v:val, ":t") =~# "'.escape(rx, '\').'"')
" remove backup files (.wiki~)
- call filter(files, 'v:val !~ ''.*\~$''')
+ call filter(files, 'v:val !~# ''.*\~$''')
if a:0
call add(files, a:1)
@@ -134,7 +123,7 @@ fun! s:group_links(links) "{{{
endfun "}}}
fun! s:sort(lst) "{{{
- if VimwikiGet("diary_sort") == 'desc'
+ if VimwikiGet("diary_sort") ==? 'desc'
return reverse(sort(a:lst))
else
return sort(a:lst)
@@ -311,7 +300,7 @@ endfunction "}}}
function! vimwiki#diary#generate_diary_section() "{{{
let current_file = vimwiki#path#path_norm(expand("%:p"))
let diary_file = vimwiki#path#path_norm(s:diary_index())
- if current_file == diary_file
+ if vimwiki#path#is_equal(current_file, diary_file)
call s:delete_diary_section()
call s:insert_diary_section()
else
@@ -327,7 +316,7 @@ function! vimwiki#diary#calendar_action(day, month, year, week, dir) "{{{
let link = a:year.'-'.month.'-'.day
if winnr('#') == 0
- if a:dir == 'V'
+ if a:dir ==? 'V'
vsplit
else
split
diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim
@@ -27,31 +27,31 @@ function! s:root_path(subdir) "{{{
endfunction "}}}
function! s:syntax_supported() " {{{
- return VimwikiGet('syntax') == "default"
+ return VimwikiGet('syntax') ==? "default"
endfunction " }}}
function! s:remove_blank_lines(lines) " {{{
- while !empty(a:lines) && a:lines[-1] =~ '^\s*$'
+ while !empty(a:lines) && a:lines[-1] =~# '^\s*$'
call remove(a:lines, -1)
endwhile
endfunction "}}}
function! s:is_web_link(lnk) "{{{
- if a:lnk =~ '^\%(https://\|http://\|www.\|ftp://\|file://\|mailto:\)'
+ if a:lnk =~# '^\%(https://\|http://\|www.\|ftp://\|file://\|mailto:\)'
return 1
endif
return 0
endfunction "}}}
function! s:is_img_link(lnk) "{{{
- if tolower(a:lnk) =~ '\.\%(png\|jpg\|gif\|jpeg\)$'
+ if tolower(a:lnk) =~# '\.\%(png\|jpg\|gif\|jpeg\)$'
return 1
endif
return 0
endfunction "}}}
function! s:has_abs_path(fname) "{{{
- if a:fname =~ '\(^.:\)\|\(^/\)'
+ if a:fname =~# '\(^.:\)\|\(^/\)'
return 1
endif
return 0
@@ -103,7 +103,7 @@ function! s:template_full_name(name) "{{{
endif
endfunction "}}}
-function! s:get_html_template(wikifile, template) "{{{
+function! s:get_html_template(template) "{{{
" TODO: refactor it!!!
let lines=[]
@@ -204,7 +204,7 @@ function! s:subst_func(line, regexp, func, ...) " {{{
endfunction " }}}
function! s:save_vimwiki_buffer() "{{{
- if &filetype == 'vimwiki' && filewritable(expand('%'))
+ if &filetype ==? 'vimwiki' && filewritable(expand('%'))
silent update
endif
endfunction "}}}
@@ -214,7 +214,7 @@ function! s:process_title(placeholders, default_title) "{{{
if !empty(a:placeholders)
for [placeholder, row, idx] in a:placeholders
let [type, param] = placeholder
- if type == 'title' && !empty(param)
+ if type ==# 'title' && !empty(param)
return param
endif
endfor
@@ -243,7 +243,7 @@ endfunction "}}}
function! s:html_insert_contents(html_lines, content) "{{{
let lines = []
for line in a:html_lines
- if line =~ '%content%'
+ if line =~# '%content%'
let parts = split(line, '%content%', 1)
if empty(parts)
call extend(lines, a:content)
@@ -338,7 +338,7 @@ function! vimwiki#html#linkify_link(src, descr) "{{{
let src_str = ' href="'.s:safe_html_anchor(a:src).'"'
let descr = substitute(a:descr,'^\s*\(.*\)\s*$','\1','')
let descr = (descr == "" ? a:src : descr)
- let descr_str = (descr =~ g:vimwiki_rxWikiIncl
+ let descr_str = (descr =~# g:vimwiki_rxWikiIncl
\ ? s:tag_wikiincl(descr)
\ : descr)
return '<a'.src_str.'>'.descr_str.'</a>'
@@ -430,7 +430,7 @@ function! s:tag_remove_internal_link(value) "{{{
let value = s:mid(a:value, 2)
let line = ''
- if value =~ '|'
+ if value =~# '|'
let link_parts = split(value, "|", 1)
else
let link_parts = split(value, "][", 1)
@@ -457,8 +457,8 @@ function! s:tag_remove_external_link(value) "{{{
let lnkElements = split(value)
let head = lnkElements[0]
let rest = join(lnkElements[1:])
- if rest==""
- let rest=head
+ if rest == ""
+ let rest = head
endif
let line = rest
elseif s:is_img_link(value)
@@ -484,7 +484,8 @@ function! s:make_tag(line, regexp, func, ...) "{{{
"FIXME FIXME !!! these can easily occur on the same line!
"XXX {{{ }}} ??? obsolete
- if '`[^`]\+`' == a:regexp || '{{{.\+}}}' == a:regexp || g:vimwiki_rxEqIn == a:regexp
+ if '`[^`]\+`' ==# a:regexp || '{{{.\+}}}' ==# a:regexp ||
+ \ g:vimwiki_rxEqIn ==# a:regexp
let res_line = s:subst_func(a:line, a:regexp, a:func)
else
let pos = 0
@@ -675,7 +676,7 @@ function! s:close_tag_table(table, ldest, header_ids) "{{{
call s:sum_rowspan(table)
call s:sum_colspan(table)
- if table[0] == 'center'
+ if table[0] ==# 'center'
call add(ldest, "<table class='center'>")
else
call add(ldest, "<table>")
@@ -734,8 +735,8 @@ function! s:process_tag_pre(line, pre) "{{{
let pre = a:pre
let processed = 0
"XXX huh?
- "if !pre[0] && a:line =~ '^\s*{{{[^\(}}}\)]*\s*$'
- if !pre[0] && a:line =~ '^\s*{{{'
+ "if !pre[0] && a:line =~# '^\s*{{{[^\(}}}\)]*\s*$'
+ if !pre[0] && a:line =~# '^\s*{{{'
let class = matchstr(a:line, '{{{\zs.*$')
"FIXME class cannot contain arbitrary strings
let class = substitute(class, '\s\+$', '', 'g')
@@ -746,7 +747,7 @@ function! s:process_tag_pre(line, pre) "{{{
endif
let pre = [1, len(matchstr(a:line, '^\s*\ze{{{'))]
let processed = 1
- elseif pre[0] && a:line =~ '^\s*}}}\s*$'
+ elseif pre[0] && a:line =~# '^\s*}}}\s*$'
let pre = [0, 0]
call add(lines, "</pre>")
let processed = 1
@@ -764,14 +765,15 @@ function! s:process_tag_math(line, math) "{{{
let lines = []
let math = a:math
let processed = 0
- if !math[0] && a:line =~ '^\s*{{\$[^\(}}$\)]*\s*$'
+ if !math[0] && a:line =~# '^\s*{{\$[^\(}}$\)]*\s*$'
let class = matchstr(a:line, '{{$\zs.*$')
"FIXME class cannot be any string!
let class = substitute(class, '\s\+$', '', 'g')
- " Check the math placeholder (default: displaymath)
- let b:vimwiki_mathEnv = matchstr(class, '^%\zs\S\+\ze%')
- if b:vimwiki_mathEnv != ""
- call add(lines, substitute(class, '^%\(\S\+\)%','\\begin{\1}', ''))
+ " store the environment name in a global variable in order to close the
+ " environment properly
+ let s:current_math_env = matchstr(class, '^%\zs\S\+\ze%')
+ if s:current_math_env != ""
+ call add(lines, substitute(class, '^%\(\S\+\)%','\\begin{\1}', ''))
elseif class != ""
call add(lines, "\\\[".class)
else
@@ -779,10 +781,10 @@ function! s:process_tag_math(line, math) "{{{
endif
let math = [1, len(matchstr(a:line, '^\s*\ze{{\$'))]
let processed = 1
- elseif math[0] && a:line =~ '^\s*}}\$\s*$'
+ elseif math[0] && a:line =~# '^\s*}}\$\s*$'
let math = [0, 0]
- if b:vimwiki_mathEnv != ""
- call add(lines, "\\end{".b:vimwiki_mathEnv."}")
+ if s:current_math_env != ""
+ call add(lines, "\\end{".s:current_math_env."}")
else
call add(lines, "\\\]")
endif
@@ -798,7 +800,7 @@ function! s:process_tag_quote(line, quote) "{{{
let lines = []
let quote = a:quote
let processed = 0
- if a:line =~ '^\s\{4,}\S'
+ if a:line =~# '^\s\{4,}\S'
if !quote
call add(lines, "<blockquote>")
let quote = 1
@@ -841,12 +843,12 @@ function! s:process_tag_list(line, lists) "{{{
let lines = []
let processed = 0
- if a:line =~ '^\s*'.s:bullets.'\s'
+ if a:line =~# '^\s*'.s:bullets.'\s'
let lstSym = matchstr(a:line, s:bullets)
let lstTagOpen = '<ul>'
let lstTagClose = '</ul>'
let lstRegExp = '^\s*'.s:bullets.'\s'
- elseif a:line =~ '^\s*'.s:numbers.'\s'
+ elseif a:line =~# '^\s*'.s:numbers.'\s'
let lstSym = matchstr(a:line, s:numbers)
let lstTagOpen = '<ol>'
let lstTagClose = '</ol>'
@@ -891,7 +893,7 @@ function! s:process_tag_list(line, lists) "{{{
call add(lines,
\ substitute(a:line, lstRegExp.'\%('.checkbox.'\)\?', '', ''))
let processed = 1
- elseif in_list && a:line =~ '^\s\+\S\+'
+ elseif in_list && a:line =~# '^\s\+\S\+'
if g:vimwiki_list_ignore_newline
call add(lines, a:line)
else
@@ -932,14 +934,14 @@ function! s:process_tag_para(line, para) "{{{
let lines = []
let para = a:para
let processed = 0
- if a:line =~ '^\s\{,3}\S'
+ if a:line =~# '^\s\{,3}\S'
if !para
call add(lines, "<p>")
let para = 1
endif
let processed = 1
call add(lines, a:line)
- elseif para && a:line =~ '^\s*$'
+ elseif para && a:line =~# '^\s*$'
call add(lines, "</p>")
let para = 0
endif
@@ -953,7 +955,7 @@ function! s:process_tag_h(line, id) "{{{
let h_text = ''
let h_id = ''
- if a:line =~ g:vimwiki_rxHeader
+ if a:line =~# g:vimwiki_rxHeader
let h_level = vimwiki#u#count_first_sym(a:line)
endif
if h_level > 0
@@ -962,9 +964,9 @@ function! s:process_tag_h(line, id) "{{{
let h_number = ''
let h_complete_id = ''
let h_id = s:safe_html_anchor(h_text)
- let centered = (a:line =~ '^\s')
+ let centered = (a:line =~# '^\s')
- if h_text != g:vimwiki_toc_header
+ if h_text !=# g:vimwiki_toc_header
let a:id[h_level-1] = [h_text, a:id[h_level-1][1]+1]
@@ -1016,7 +1018,7 @@ endfunction "}}}
function! s:process_tag_hr(line) "{{{
let line = a:line
let processed = 0
- if a:line =~ '^-----*$'
+ if a:line =~# '^-----*$'
let line = '<hr />'
let processed = 1
endif
@@ -1027,15 +1029,15 @@ function! s:process_tag_table(line, table, header_ids) "{{{
function! s:table_empty_cell(value) "{{{
let cell = {}
- if a:value =~ '^\s*\\/\s*$'
+ if a:value =~# '^\s*\\/\s*$'
let cell.body = ''
let cell.rowspan = 0
let cell.colspan = 1
- elseif a:value =~ '^\s*>\s*$'
+ elseif a:value =~# '^\s*>\s*$'
let cell.body = ''
let cell.rowspan = 1
let cell.colspan = 0
- elseif a:value =~ '^\s*$'
+ elseif a:value =~# '^\s*$'
let cell.body = ' '
let cell.rowspan = 1
let cell.colspan = 1
@@ -1050,7 +1052,7 @@ function! s:process_tag_table(line, table, header_ids) "{{{
function! s:table_add_row(table, line) "{{{
if empty(a:table)
- if a:line =~ '^\s\+'
+ if a:line =~# '^\s\+'
let row = ['center', []]
else
let row = ['normal', []]
@@ -1132,14 +1134,14 @@ function! s:parse_line(line, state) " {{{
"}}}
if !processed
- if line =~ g:vimwiki_rxComment
+ if line =~# g:vimwiki_rxComment
let processed = 1
endif
endif
" nohtml -- placeholder
if !processed
- if line =~ '^\s*%nohtml'
+ if line =~# '^\s*%nohtml'
let processed = 1
let state.placeholder = ['nohtml']
endif
@@ -1147,7 +1149,7 @@ function! s:parse_line(line, state) " {{{
" title -- placeholder
if !processed
- if line =~ '^\s*%title'
+ if line =~# '^\s*%title'
let processed = 1
let param = matchstr(line, '^\s*%title\s\zs.*')
let state.placeholder = ['title', param]
@@ -1156,7 +1158,7 @@ function! s:parse_line(line, state) " {{{
" html template -- placeholder "{{{
if !processed
- if line =~ '^\s*%template'
+ if line =~# '^\s*%template'
let processed = 1
let param = matchstr(line, '^\s*%template\s\zs.*')
let state.placeholder = ['template', param]
@@ -1401,10 +1403,10 @@ function! vimwiki#html#Wiki2HTML(path_html, wikifile) "{{{
endif
if !empty(state.placeholder)
- if state.placeholder[0] == 'nohtml'
+ if state.placeholder[0] ==# 'nohtml'
let nohtml = 1
break
- elseif state.placeholder[0] == 'template'
+ elseif state.placeholder[0] ==# 'template'
let template_name = state.placeholder[1]
else
call add(placeholders, [state.placeholder, len(ldest), len(placeholders)])
@@ -1437,7 +1439,7 @@ function! vimwiki#html#Wiki2HTML(path_html, wikifile) "{{{
let title = s:process_title(placeholders, fnamemodify(a:wikifile, ":t:r"))
- let html_lines = s:get_html_template(a:wikifile, template_name)
+ let html_lines = s:get_html_template(template_name)
" processing template variables (refactor to a function)
call map(html_lines, 'substitute(v:val, "%title%", "'. title .'", "g")')
@@ -1543,17 +1545,17 @@ function! s:binary_exists(fname) "{{{
endfunction "}}}
" uses VimwikiGet('path')
-function! vimwiki#html#get_wikifile_url(wikifile) "{{{
+function! s:get_wikifile_url(wikifile) "{{{
return VimwikiGet('path_html').
\ vimwiki#base#subdir(VimwikiGet('path'), a:wikifile).
\ fnamemodify(a:wikifile, ":t:r").'.html'
endfunction "}}}
function! vimwiki#html#PasteUrl(wikifile) "{{{
- execute 'r !echo file://'.vimwiki#html#get_wikifile_url(a:wikifile)
+ execute 'r !echo file://'.s:get_wikifile_url(a:wikifile)
endfunction "}}}
function! vimwiki#html#CatUrl(wikifile) "{{{
- execute '!echo file://'.vimwiki#html#get_wikifile_url(a:wikifile)
+ execute '!echo file://'.s:get_wikifile_url(a:wikifile)
endfunction "}}}
"}}}
diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim
@@ -185,10 +185,10 @@ endfunction "}}}
"Returns: level of the line
"0 is the 'highest' level
function! s:get_level(lnum) "{{{
- if getline(a:lnum) =~ '^\s*$'
+ if getline(a:lnum) =~# '^\s*$'
return 0
endif
- if VimwikiGet('syntax') != 'media'
+ if VimwikiGet('syntax') !=? 'media'
let level = indent(a:lnum)
else
let level = s:string_length(matchstr(getline(a:lnum), s:rx_bullet_chars))-1
@@ -207,7 +207,7 @@ function! s:guess_kind_of_numbered_item(item) "{{{
let number_chars = a:item.mrkr[:-2]
let divisor = a:item.mrkr[-1:]
- if number_chars =~ '\d\+'
+ if number_chars =~# '\d\+'
return '1'
endif
if number_chars =~# '\l\+'
@@ -840,7 +840,7 @@ function! vimwiki#lst#toggle_cb(from_line, to_line) "{{{
"if from_line has CB, toggle it and set all siblings to the same new state
let rate_first_line = s:get_rate(from_item)
- let new_rate = rate_first_line==100 ? 0 : 100
+ let new_rate = rate_first_line == 100 ? 0 : 100
for cur_ln in range(from_item.lnum, a:to_line)
let cur_item = s:get_item(cur_ln)
@@ -922,7 +922,7 @@ endfunction "}}}
function! s:decrease_level(item) "{{{
let removed_indent = 0
- if VimwikiGet('syntax') == 'media' && a:item.type == 1 &&
+ if VimwikiGet('syntax') ==? 'media' && a:item.type == 1 &&
\ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
if s:string_length(a:item.mrkr) >= 2
call s:substitute_string_in_line(a:item.lnum,
@@ -944,7 +944,7 @@ endfunction "}}}
function! s:increase_level(item) "{{{
let additional_indent = 0
- if VimwikiGet('syntax') == 'media' && a:item.type == 1 &&
+ if VimwikiGet('syntax') ==? 'media' && a:item.type == 1 &&
\ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, a:item.mrkr .
\ s:first_char(a:item.mrkr))
@@ -966,7 +966,7 @@ endfunction "}}}
"a:indent_by can be negative
function! s:indent_line_by(lnum, indent_by) "{{{
let item = s:get_item(a:lnum)
- if VimwikiGet('syntax') == 'media' && item.type == 1 &&
+ if VimwikiGet('syntax') ==? 'media' && item.type == 1 &&
\ index(s:multiple_bullet_chars, s:first_char(item.mrkr)) > -1
if a:indent_by > 0
call s:substitute_string_in_line(a:lnum, item.mrkr,
@@ -983,17 +983,17 @@ endfunction "}}}
function! s:change_level(from_line, to_line, direction, plus_children) "{{{
let from_item = s:get_corresponding_item(a:from_line)
if from_item.type == 0
- if a:direction == 'increase' && a:from_line == a:to_line &&
+ if a:direction ==# 'increase' && a:from_line == a:to_line &&
\ empty(getline(a:from_line))
"that's because :> doesn't work on an empty line
normal! gi
else
- execute a:from_line.','.a:to_line.(a:direction == 'increase' ? '>' : '<')
+ execute a:from_line.','.a:to_line.(a:direction ==# 'increase' ? '>' : '<')
endif
return
endif
- if a:direction == 'decrease' && s:get_level(from_item.lnum) == 0
+ if a:direction ==# 'decrease' && s:get_level(from_item.lnum) == 0
return
endif
@@ -1026,7 +1026,7 @@ function! s:change_level(from_line, to_line, direction, plus_children) "{{{
let more_than_one_level_concerned = 0
let first_line_indented_by =
- \ (a:direction == 'increase') ?
+ \ (a:direction ==# 'increase') ?
\ s:increase_level(from_item) : s:decrease_level(from_item)
let cur_ln = s:get_next_line(from_item.lnum)
@@ -1112,7 +1112,7 @@ endfunction "}}}
function! s:set_new_mrkr(item, new_mrkr) "{{{
if a:item.type == 0
call s:substitute_rx_in_line(a:item.lnum, '^\s*\zs\ze', a:new_mrkr.' ')
- if indent(a:item.lnum) == 0 && VimwikiGet('syntax') != 'media'
+ if indent(a:item.lnum) == 0 && VimwikiGet('syntax') !=? 'media'
call s:set_indent(a:item.lnum, vimwiki#lst#get_list_margin())
endif
else
@@ -1121,7 +1121,7 @@ function! s:set_new_mrkr(item, new_mrkr) "{{{
endfunction "}}}
function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
- let cur_col_from_eol = col("$") - (a:mode == "i" ? col("'^") : col('.'))
+ let cur_col_from_eol = col("$") - (a:mode ==# "i" ? col("'^") : col('.'))
let new_mrkr = a:new_mrkr
let cur_ln = a:from_line
while 1
@@ -1138,13 +1138,13 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
"use *** if the item above has *** too
let item_above = s:get_prev_list_item(cur_item, 1)
if item_above.type == 1 &&
- \ s:first_char(item_above.mrkr) ==s:first_char(new_mrkr)
+ \ s:first_char(item_above.mrkr) ==# s:first_char(new_mrkr)
let new_mrkr = item_above.mrkr
else
"use *** if the item below has *** too
let item_below = s:get_next_list_item(cur_item, 1)
if item_below.type == 1 &&
- \ s:first_char(item_below.mrkr) == s:first_char(new_mrkr)
+ \ s:first_char(item_below.mrkr) ==# s:first_char(new_mrkr)
let new_mrkr = item_below.mrkr
else
"if the old is ### and the new is * use ***
@@ -1155,7 +1155,7 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) "{{{
"use *** if the parent item has **
let parent_item = s:get_parent(cur_item)
if parent_item.type == 1 &&
- \ s:first_char(parent_item.mrkr) == s:first_char(new_mrkr)
+ \ s:first_char(parent_item.mrkr) ==# s:first_char(new_mrkr)
let new_mrkr = repeat(s:first_char(parent_item.mrkr),
\ s:string_length(parent_item.mrkr)+1)
endif
@@ -1193,7 +1193,7 @@ endfunction "}}}
"sets kind of the item depending on neighbor items and the parent item
function! s:adjust_mrkr(item) "{{{
- if a:item.type == 0 || VimwikiGet('syntax') == 'media'
+ if a:item.type == 0 || VimwikiGet('syntax') ==? 'media'
return
endif
@@ -1208,7 +1208,7 @@ function! s:adjust_mrkr(item) "{{{
\ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
let parent_item = s:get_parent(a:item)
if parent_item.type == 1 &&
- \ s:first_char(parent_item.mrkr) == s:first_char(a:item.mrkr)
+ \ s:first_char(parent_item.mrkr) ==# s:first_char(a:item.mrkr)
let new_mrkr = repeat(s:first_char(parent_item.mrkr),
\ s:string_length(parent_item.mrkr)+1)
endif
@@ -1223,7 +1223,7 @@ function! s:clone_marker_from_to(from, to) "{{{
if item_from.type == 0 | return | endif
let new_mrkr = item_from.mrkr . ' '
call s:substitute_rx_in_line(a:to, '^\s*', new_mrkr)
- let new_indent = ( VimwikiGet('syntax') != 'media' ? indent(a:from) : 0 )
+ let new_indent = ( VimwikiGet('syntax') !=? 'media' ? indent(a:from) : 0 )
call s:set_indent(a:to, new_indent)
if item_from.cb != ''
call s:create_cb(s:get_item(a:to))
@@ -1286,7 +1286,7 @@ endfunction "}}}
function! vimwiki#lst#kbd_O() "{{{
normal! Ox
let cur_ln = line('.')
- if getline(cur_ln+1) !~ '^\s*$'
+ if getline(cur_ln+1) !~# '^\s*$'
call s:clone_marker_from_to(cur_ln+1, cur_ln)
else
call s:clone_marker_from_to(cur_ln-1, cur_ln)
@@ -1365,7 +1365,7 @@ function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol) "{{{
normal! gi
call s:clone_marker_from_to(a:lnum, a:lnum+1)
"tiny sweet extra feature: indent next line if current line ends with :
- if !a:not_at_eol && getline(a:lnum) =~ ':$'
+ if !a:not_at_eol && getline(a:lnum) =~# ':$'
call s:change_level(a:lnum+1, a:lnum+1, 'increase', 0)
endif
else
@@ -1393,17 +1393,17 @@ function! vimwiki#lst#kbd_cr(normal, just_mrkr) "{{{
endif
let insert_new_marker = (a:normal == 1 || a:normal == 3)
- if getline('.')[col("'^")-1:] =~ '^\s\+$'
+ if getline('.')[col("'^")-1:] =~# '^\s\+$'
let cur_col = 0
else
let cur_col = col("$") - col("'^")
- if getline('.')[col("'^")-1] =~ '\s' && exists("*strdisplaywidth")
+ if getline('.')[col("'^")-1] =~# '\s' && exists("*strdisplaywidth")
let ws_behind_cursor =
\ strdisplaywidth(matchstr(getline('.')[col("'^")-1:], '\s\+'),
\ virtcol("'^")-1)
let cur_col -= ws_behind_cursor
endif
- if insert_new_marker && cur_col == 0 && getline(lnum) =~ '\s$'
+ if insert_new_marker && cur_col == 0 && getline(lnum) =~# '\s$'
let insert_new_marker = 0
endif
endif
@@ -1450,7 +1450,7 @@ function! vimwiki#lst#toggle_list_item() "{{{
let new_cur_col = col("$") - cur_col_from_eol
call cursor(cur_item.lnum, new_cur_col >= 1 ? new_cur_col : 1)
- if cur_col_from_eol == 0 || getline(cur_item.lnum) =~ '^\s*$'
+ if cur_col_from_eol == 0 || getline(cur_item.lnum) =~# '^\s*$'
startinsert!
else
startinsert
diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim
@@ -81,11 +81,11 @@ function! vimwiki#markdown_base#follow_link(split, ...) "{{{ Parse link at curso
" XXX: @Maxim: most likely! I am still working on a seemless way to
" integrate regexp's without complicating syntax/vimwiki.vim
else
- if a:split == "split"
+ if a:split ==# "split"
let cmd = ":split "
- elseif a:split == "vsplit"
+ elseif a:split ==# "vsplit"
let cmd = ":vsplit "
- elseif a:split == "tabnew"
+ elseif a:split ==# "tabnew"
let cmd = ":tabnew "
else
let cmd = ":e "
diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim
@@ -9,12 +9,24 @@ function! vimwiki#path#chomp_slash(str) "{{{
return substitute(a:str, '[/\\]\+$', '', '')
endfunction "}}}
+" Define path-compare function, either case-sensitive or not, depending on OS.
+"{{{ " function! vimwiki#path#is_equal(p1, p2)
+if vimwiki#u#is_windows()
+ function! vimwiki#path#is_equal(p1, p2)
+ return a:p1 ==? a:p2
+ endfunction
+else
+ function! vimwiki#path#is_equal(p1, p2)
+ return a:p1 ==# a:p2
+ endfunction
+endif "}}}
+
" collapse sections like /a/b/../c to /a/c
function! vimwiki#path#normalize(path) "{{{
let path = a:path
while 1
let result = substitute(path, '/[^/]\+/\.\.', '', '')
- if result == path
+ if result ==# path
break
endif
let path = result
@@ -38,7 +50,7 @@ endfunction "}}}
function! vimwiki#path#is_link_to_dir(link) "{{{
" Check if link is to a directory.
" It should be ended with \ or /.
- if a:link =~ '.\+[/\\]$'
+ if a:link =~# '.\+[/\\]$'
return 1
endif
return 0
@@ -56,7 +68,7 @@ function! vimwiki#path#path_common_pfx(path1, path2) "{{{
let idx = 0
let minlen = min([len(p1), len(p2)])
- while (idx < minlen) && (p1[idx] ==? p2[idx])
+ while (idx < minlen) && vimwiki#path#is_equal(p1[idx], p2[idx])
let idx = idx + 1
endwhile
if idx == 0
@@ -80,7 +92,7 @@ function! vimwiki#path#relpath(dir, file) "{{{
let result = []
let dir = split(a:dir, '/')
let file = split(a:file, '/')
- while (len(dir) > 0 && len(file) > 0) && dir[0] == file[0]
+ while (len(dir) > 0 && len(file) > 0) && vimwiki#path#is_equal(dir[0], file[0])
call remove(dir, 0)
call remove(file, 0)
endwhile
@@ -116,7 +128,8 @@ function! vimwiki#path#mkdir(path, ...) "{{{
let path = iconv(path, &enc, g:vimwiki_w32_dir_enc)
endif
- if a:0 && a:1 && tolower(input("Vimwiki: Make new directory: ".path."\n [Y]es/[n]o? ")) !~ "^y"
+ if a:0 && a:1 && input("Vimwiki: Make new directory: "
+ \ .path."\n [y]es/[N]o? ") !~? '^y'
return 0
endif
diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim
@@ -54,28 +54,28 @@ function! s:sep_splitter() "{{{
endfunction "}}}
function! s:is_table(line) "{{{
- return s:is_separator(a:line) || (a:line !~ s:rxSep().s:rxSep() && a:line =~ '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
+ return s:is_separator(a:line) || (a:line !~# s:rxSep().s:rxSep() && a:line =~# '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
endfunction "}}}
function! s:is_separator(line) "{{{
- return a:line =~ '^\s*'.s:rxSep().'\(--\+'.s:rxSep().'\)\+\s*$'
+ return a:line =~# '^\s*'.s:rxSep().'\(--\+'.s:rxSep().'\)\+\s*$'
endfunction "}}}
function! s:is_separator_tail(line) "{{{
- return a:line =~ '^\{-1}\%(\s*\|-*\)\%('.s:rxSep().'-\+\)\+'.s:rxSep().'\s*$'
+ return a:line =~# '^\{-1}\%(\s*\|-*\)\%('.s:rxSep().'-\+\)\+'.s:rxSep().'\s*$'
endfunction "}}}
function! s:is_last_column(lnum, cnum) "{{{
let line = strpart(getline(a:lnum), a:cnum - 1)
- "echomsg "DEBUG is_last_column> ".(line =~ s:rxSep().'\s*$' && line !~ s:rxSep().'.*'.s:rxSep().'\s*$')
- return line =~ s:rxSep().'\s*$' && line !~ s:rxSep().'.*'.s:rxSep().'\s*$'
+ "echomsg "DEBUG is_last_column> ".(line =~# s:rxSep().'\s*$' && line !~# s:rxSep().'.*'.s:rxSep().'\s*$')
+ return line =~# s:rxSep().'\s*$' && line !~# s:rxSep().'.*'.s:rxSep().'\s*$'
endfunction "}}}
function! s:is_first_column(lnum, cnum) "{{{
let line = strpart(getline(a:lnum), 0, a:cnum - 1)
- "echomsg "DEBUG is_first_column> ".(line =~ '^\s*'.s:rxSep() && line !~ '^\s*'.s:rxSep().'.*'.s:rxSep())
- return line =~ '^\s*$' || (line =~ '^\s*'.s:rxSep() && line !~ '^\s*'.s:rxSep().'.*'.s:rxSep())
+ "echomsg "DEBUG is_first_column> ".(line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep())
+ return line =~# '^\s*$' || (line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep())
endfunction "}}}
function! s:count_separators_up(lnum) "{{{
@@ -134,11 +134,11 @@ function! vimwiki#tbl#get_cells(line) "{{{
for idx in range(strlen(a:line))
" The only way I know Vim can do Unicode...
let ch = a:line[idx]
- if state == 'NONE'
+ if state ==# 'NONE'
if ch == '|'
let state = 'CELL'
endif
- elseif state == 'CELL'
+ elseif state ==# 'CELL'
if ch == '[' || ch == '{'
let state = 'BEFORE_QUOTE_START'
let quote = ch
@@ -148,7 +148,7 @@ function! vimwiki#tbl#get_cells(line) "{{{
else
let cell .= ch
endif
- elseif state == 'BEFORE_QUOTE_START'
+ elseif state ==# 'BEFORE_QUOTE_START'
if ch == '[' || ch == '{'
let state = 'QUOTE'
let quote .= ch
@@ -157,12 +157,12 @@ function! vimwiki#tbl#get_cells(line) "{{{
let cell .= quote.ch
let quote = ''
endif
- elseif state == 'QUOTE'
+ elseif state ==# 'QUOTE'
if ch == ']' || ch == '}'
let state = 'BEFORE_QUOTE_END'
endif
let quote .= ch
- elseif state == 'BEFORE_QUOTE_END'
+ elseif state ==# 'BEFORE_QUOTE_END'
if ch == ']' || ch == '}'
let state = 'CELL'
endif
@@ -495,7 +495,7 @@ function! vimwiki#tbl#kbd_shift_tab() "{{{
endfunction "}}}
function! vimwiki#tbl#format(lnum, ...) "{{{
- if !(&filetype == 'vimwiki')
+ if !(&filetype ==? 'vimwiki')
return
endif
let line = getline(a:lnum)
@@ -570,7 +570,7 @@ function! vimwiki#tbl#align_or_cmd(cmd) "{{{
endfunction "}}}
function! vimwiki#tbl#reset_tw(lnum) "{{{
- if !(&filetype == 'vimwiki')
+ if !(&filetype ==? 'vimwiki')
return
endif
let line = getline(a:lnum)
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -964,7 +964,7 @@ In HTML the following part >
| Year | Temperature (low) | Temperature (high) |
|------|-------------------|--------------------|
>
-is higlighted as a table header.
+is highlighted as a table header.
If you indent a table then it will be centered in HTML.
@@ -1917,7 +1917,7 @@ See |vimwiki-option-template_path| for details.
*vimwiki-option-template_ext*
------------------------------------------------------------------------------
Key Default value~
-template_ext .html
+template_ext .tpl
Description~
Setup template filename extension.
@@ -2625,6 +2625,19 @@ before the plugin loads. >
The default is '<Leader>w'.
+------------------------------------------------------------------------------
+*g:vimwiki_auto_chdir*
+
+When set to 1, enables auto-cd feature. Whenever vimwiki page is opened,
+vimwiki performs an |:lcd| to the vimwiki folder to where the page belongs.
+
+
+Value Description~
+0 Do not change directory.
+1 Change directory to vimwiki folder on opening page.
+
+Default: 0
+
==============================================================================
13. Miscellaneous *vimwiki-misc*
@@ -2665,6 +2678,7 @@ Vim plugins: http://www.vim.org/scripts/script.php?script_id=2226
???~
* Support for tags.
+ * Spport for |g:vimwiki_auto_chdir| option.
* Support for anchors, see |vimwiki-anchors|
* in this context, add support for TOC, see |vimwiki-toc|
* remove the now useless %toc placeholder
diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim
@@ -46,7 +46,7 @@ function! Complete_wikifiles(findstart, base)
let s:line_context = '['
return startoflink
endif
- if VimwikiGet('syntax') == 'markdown'
+ if VimwikiGet('syntax') ==? 'markdown'
let startofinlinelink = match(line, '\[.*\](\zs[^)]*$')
if startofinlinelink != -1
let s:line_context = '['
@@ -75,7 +75,7 @@ function! Complete_wikifiles(findstart, base)
\ "v:val[:" . (len(a:base)-1) . "] == '" . substitute(a:base, "'", "''", '') . "'" )
endif
return tags
- elseif a:base !~ '#'
+ elseif a:base !~# '#'
" we look for wiki files
if a:base =~# '^wiki\d:'
@@ -108,7 +108,7 @@ function! Complete_wikifiles(findstart, base)
" we look for anchors in the given wikifile
let segments = split(a:base, '#', 1)
- let given_wikifile = segments[0]=='' ? expand('%:t:r') : segments[0]
+ let given_wikifile = segments[0] == '' ? expand('%:t:r') : segments[0]
let link_infos = vimwiki#base#resolve_scheme(given_wikifile.'#', 0, 1)
let wikifile = link_infos[6]
let syntax = VimwikiGet('syntax', link_infos[0])
@@ -172,12 +172,12 @@ function! VimwikiFoldLevel(lnum) "{{{
let line = getline(a:lnum)
" Header/section folding...
- if line =~ g:vimwiki_rxHeader
+ if line =~# g:vimwiki_rxHeader
return '>'.vimwiki#u#count_first_sym(line)
" Code block folding...
- elseif line =~ '^\s*'.g:vimwiki_rxPreStart
+ elseif line =~# '^\s*'.g:vimwiki_rxPreStart
return 'a1'
- elseif line =~ '^\s*'.g:vimwiki_rxPreEnd.'\s*$'
+ elseif line =~# '^\s*'.g:vimwiki_rxPreEnd.'\s*$'
return 's1'
else
return "="
@@ -218,7 +218,7 @@ function! VimwikiFoldText() "{{{
let main_text = substitute(line, '^\s*', repeat(' ',indent(v:foldstart)), '')
let fold_len = v:foldend - v:foldstart + 1
let len_text = ' ['.fold_len.'] '
- if line !~ '^\s*'.g:vimwiki_rxPreStart
+ if line !~# '^\s*'.g:vimwiki_rxPreStart
let [main_text, spare_len] = s:shorten_text(main_text, 50)
return main_text.len_text
else
diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim
@@ -39,7 +39,8 @@ function! s:find_wiki(path) "{{{
while idx < len(g:vimwiki_list)
let idx_path = expand(VimwikiGet('path', idx))
let idx_path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(idx_path))
- if vimwiki#path#path_common_pfx(idx_path, path) == idx_path
+ if vimwiki#path#is_equal(
+ \ vimwiki#path#path_common_pfx(idx_path, path), idx_path)
return idx
endif
let idx += 1
@@ -88,14 +89,14 @@ function! s:vimwiki_idx() " {{{
endfunction " }}}
function! s:setup_buffer_leave() "{{{
- if g:vimwiki_debug ==3
+ if g:vimwiki_debug == 3
echom "Setup_buffer_leave g:curr_idx=".g:vimwiki_current_idx." b:curr_idx=".s:vimwiki_idx().""
endif
- if &filetype == 'vimwiki'
+ if &filetype ==? 'vimwiki'
" cache global vars of current state XXX: SLOW!?
call vimwiki#base#cache_buffer_state()
endif
- if g:vimwiki_debug ==3
+ if g:vimwiki_debug == 3
echom " Setup_buffer_leave g:curr_idx=".g:vimwiki_current_idx." b:curr_idx=".s:vimwiki_idx().""
endif
@@ -108,7 +109,7 @@ function! s:setup_buffer_leave() "{{{
endfunction "}}}
function! s:setup_filetype() "{{{
- if g:vimwiki_debug ==3
+ if g:vimwiki_debug == 3
echom "Setup_filetype g:curr_idx=".g:vimwiki_current_idx." b:curr_idx=".s:vimwiki_idx().""
endif
let time0 = reltime() " start the clock "XXX
@@ -116,7 +117,7 @@ function! s:setup_filetype() "{{{
let path = expand('%:p:h')
" XXX: find_wiki() does not (yet) take into consideration the ext
let idx = s:find_wiki(path)
- if g:vimwiki_debug ==3
+ if g:vimwiki_debug == 3
echom " Setup_filetype g:curr_idx=".g:vimwiki_current_idx." find_idx=".idx." b:curr_idx=".s:vimwiki_idx().""
endif
@@ -210,7 +211,7 @@ function! s:setup_buffer_enter() "{{{
if g:vimwiki_debug ==3
echom " Setup_buffer_enter g:curr_idx=".g:vimwiki_current_idx." (set ft vimwiki) b:curr_idx=".s:vimwiki_idx().""
endif
- elseif &syntax == 'vimwiki'
+ elseif &syntax ==? 'vimwiki'
" to force a rescan of the filesystem which may have changed
" and update VimwikiLinks syntax group that depends on it;
" b:vimwiki_fs_rescan indicates that setup_filetype() has not been run
@@ -227,15 +228,15 @@ function! s:setup_buffer_enter() "{{{
" Settings foldmethod, foldexpr and foldtext are local to window. Thus in a
" new tab with the same buffer folding is reset to vim defaults. So we
" insist vimwiki folding here.
- if g:vimwiki_folding == 'expr'
+ if g:vimwiki_folding ==? 'expr'
setlocal fdm=expr
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
setlocal foldtext=VimwikiFoldText()
- elseif g:vimwiki_folding == 'list' || g:vimwiki_folding == 'lists'
+ elseif g:vimwiki_folding ==? 'list' || g:vimwiki_folding ==? 'lists'
setlocal fdm=expr
setlocal foldexpr=VimwikiFoldListLevel(v:lnum)
setlocal foldtext=VimwikiFoldText()
- elseif g:vimwiki_folding == 'syntax'
+ elseif g:vimwiki_folding ==? 'syntax'
setlocal fdm=syntax
setlocal foldtext=VimwikiFoldText()
else
@@ -357,6 +358,23 @@ function! VimwikiClear(option, ...) "{{{
endfunction "}}}
" }}}
+function! s:vimwiki_get_known_extensions() " {{{
+ " Getting all extensions that different wikis could have
+ let extensions = {}
+ for wiki in g:vimwiki_list
+ if has_key(wiki, 'ext')
+ let extensions[wiki.ext] = 1
+ else
+ let extensions['.wiki'] = 1
+ endif
+ endfor
+ " append map g:vimwiki_ext2syntax
+ for ext in keys(g:vimwiki_ext2syntax)
+ let extensions[ext] = 1
+ endfor
+ return keys(extensions)
+endfunction " }}}
+
" }}}
" CALLBACK functions "{{{
@@ -385,9 +403,9 @@ let s:vimwiki_defaults.ext = '.wiki'
let s:vimwiki_defaults.maxhi = 0
let s:vimwiki_defaults.syntax = 'default'
-let s:vimwiki_defaults.template_path = ''
-let s:vimwiki_defaults.template_default = ''
-let s:vimwiki_defaults.template_ext = ''
+let s:vimwiki_defaults.template_path = '~/vimwiki/templates/'
+let s:vimwiki_defaults.template_default = 'default'
+let s:vimwiki_defaults.template_ext = '.tpl'
let s:vimwiki_defaults.nested_syntaxes = {}
let s:vimwiki_defaults.auto_export = 0
@@ -454,6 +472,8 @@ call s:default('map_prefix', '<Leader>w')
call s:default('current_idx', 0)
+call s:default('auto_chdir', 0)
+
" Scheme regexes should be defined even if syntax file is not loaded yet
" cause users should be able to <leader>w<leader>w without opening any
" vimwiki file first
@@ -488,7 +508,7 @@ augroup end
augroup vimwiki
autocmd!
- for s:ext in vimwiki#base#get_known_extensions()
+ for s:ext in s:vimwiki_get_known_extensions()
exe 'autocmd BufEnter *'.s:ext.' call s:setup_buffer_reenter()'
exe 'autocmd BufWinEnter *'.s:ext.' call s:setup_buffer_enter()'
exe 'autocmd BufLeave,BufHidden *'.s:ext.' call s:setup_buffer_leave()'
diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim
@@ -83,7 +83,11 @@ let s:valid_chars = '[^\\\]]'
let g:vimwiki_rxWikiLinkUrl = s:valid_chars.'\{-}'
let g:vimwiki_rxWikiLinkDescr = s:valid_chars.'\{-}'
-let g:vimwiki_rxWord = '[^[:blank:]()\\]\+'
+" this regexp defines what can form a link when the user presses <CR> in the
+" buffer (and not on a link) to create a link
+" basically, it's Ascii alphanumeric characters plus #|./@-_~ plus all
+" non-Ascii characters
+let g:vimwiki_rxWord = '[^[:blank:]!"$%&''()*+,:;<=>?\[\]\\^`{}]\+'
" [[URL]], or [[URL|DESCRIPTION]]
diff --git a/syntax/vimwiki_default.vim b/syntax/vimwiki_default.vim
@@ -4,9 +4,6 @@
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
-" placeholder for math environments
-let b:vimwiki_mathEnv = ""
-
" text: $ equation_inline $
let g:vimwiki_rxEqIn = '\$[^$`]\+\$'
let g:vimwiki_char_eqin = '\$'
diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim
@@ -4,9 +4,6 @@
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
-" placeholder for math environments
-let b:vimwiki_mathEnv = ""
-
" text: $ equation_inline $
let g:vimwiki_rxEqIn = '\$[^$`]\+\$'
let g:vimwiki_char_eqin = '\$'
diff --git a/syntax/vimwiki_media.vim b/syntax/vimwiki_media.vim
@@ -4,9 +4,6 @@
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
-" placeholder for math environments
-let b:vimwiki_mathEnv = ""
-
" text: $ equation_inline $
let g:vimwiki_rxEqIn = '\$[^$`]\+\$'
let g:vimwiki_char_eqin = '\$'