commit 0df94e47a8f5d5c91537603e6f74aeb555571fd9
parent d4240083f7b9cd7ac0cd12271cf7baca5f4220be
Author: Michael F. Schönitzer <michael@schoenitzer.de>
Date: Wed, 15 Nov 2017 16:32:54 +0100
Merge pull request #5 from vimwiki/dev
Merge upstream patches
Diffstat:
5 files changed, 99 insertions(+), 37 deletions(-)
diff --git a/LICENSE b/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2008-2010 Maxim Kim
+ 2013-2017 Daniel Schemala
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim
@@ -8,6 +8,13 @@ if exists("g:loaded_vimwiki_auto") || &cp
endif
let g:loaded_vimwiki_auto = 1
+" s:safesubstitute
+function! s:safesubstitute(text, search, replace, mode) "{{{
+ " Substitute regexp but do not interpret replace
+ let escaped = escape(a:replace, '\&')
+ return substitute(a:text, a:search, escaped, a:mode)
+endfunction " }}}
+
" s:vimwiki_get_known_syntaxes
function! s:vimwiki_get_known_syntaxes() " {{{
" Getting all syntaxes that different wikis could have
@@ -465,7 +472,7 @@ function! vimwiki#base#generate_links() "{{{
let abs_filepath = vimwiki#path#abs_path_of_link(link)
if !s:is_diary_file(abs_filepath)
call add(lines, bullet.
- \ substitute(g:vimwiki_WikiLinkTemplate1, '__LinkUrl__', '\='."'".link."'", ''))
+ \ s:safesubstitute(g:vimwiki_WikiLinkTemplate1, '__LinkUrl__', link, ''))
endif
endfor
@@ -677,13 +684,13 @@ function! s:jump_to_anchor(anchor) "{{{
let segments = split(anchor, '#', 0)
for segment in segments
- let anchor_header = substitute(
+ let anchor_header = s:safesubstitute(
\ g:vimwiki_{VimwikiGet('syntax')}_header_match,
- \ '__Header__', "\\='".segment."'", '')
- let anchor_bold = substitute(g:vimwiki_{VimwikiGet('syntax')}_bold_match,
- \ '__Text__', "\\='".segment."'", '')
- let anchor_tag = substitute(g:vimwiki_{VimwikiGet('syntax')}_tag_match,
- \ '__Tag__', "\\='".segment."'", '')
+ \ '__Header__', segment, '')
+ let anchor_bold = s:safesubstitute(g:vimwiki_{VimwikiGet('syntax')}_bold_match,
+ \ '__Text__', segment, '')
+ let anchor_tag = s:safesubstitute(g:vimwiki_{VimwikiGet('syntax')}_tag_match,
+ \ '__Tag__', segment, '')
if !search(anchor_tag, 'Wc')
\ && !search(anchor_header, 'Wc')
@@ -840,7 +847,7 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) "{{{
" then
" [[test*file]]...
" you'll have E77: Too many file names
- let fname = escape(a:filename, '% *|#')
+ let fname = escape(a:filename, '% *|#`')
let dir = fnamemodify(a:filename, ":p:h")
let ok = vimwiki#path#mkdir(dir, 1)
@@ -1176,8 +1183,8 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header,
" write new listing
let new_header = whitespaces_in_first_line
- \ . substitute(g:vimwiki_rxH1_Template,
- \ '__Header__', '\='."'".a:start_header."'", '')
+ \ . s:safesubstitute(g:vimwiki_rxH1_Template,
+ \ '__Header__', a:start_header, '')
call append(start_lnum - 1, new_header)
let start_lnum += 1
let lines_diff += 1 + len(a:strings)
@@ -1273,7 +1280,7 @@ function! vimwiki#base#follow_link(split, reuse, move_cursor, ...) "{{{
" remove the extension from the filename if exists, because non-vimwiki
" markdown files usually include the extension in links
- let lnk = substitute(lnk, VimwikiGet('ext').'$', '', '')
+ let lnk = substitute(lnk, '\'.VimwikiGet('ext').'$', '', '')
endif
let current_tab_page = tabpagenr()
@@ -1326,7 +1333,13 @@ function! vimwiki#base#goto_index(wnum, ...) "{{{
endif
if a:0
- let cmd = 'tabedit'
+ if a:1 == 1
+ let cmd = 'tabedit'
+ elseif a:1 == 2
+ let cmd = 'split'
+ elseif a:1 == 3
+ let cmd = 'vsplit'
+ endif
else
let cmd = 'edit'
endif
@@ -1826,9 +1839,9 @@ function! vimwiki#base#table_of_contents(create)
for [lvl, link, desc] in headers
let esc_link = substitute(link, "'", "''", 'g')
let esc_desc = substitute(desc, "'", "''", 'g')
- let link = substitute(g:vimwiki_WikiLinkTemplate2, '__LinkUrl__',
- \ '\='."'".'#'.esc_link."'", '')
- let link = substitute(link, '__LinkDescription__', '\='."'".esc_desc."'", '')
+ let link = s:safesubstitute(g:vimwiki_WikiLinkTemplate2, '__LinkUrl__',
+ \ '#'.esc_link, '')
+ let link = s:safesubstitute(link, '__LinkDescription__', esc_desc, '')
call add(lines, startindent.repeat(indentstring, lvl-1).bullet.link)
endfor
@@ -1849,13 +1862,13 @@ endfunction
function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle) "{{{
let lnk = a:template
if a:rxUrl != ""
- let lnk = substitute(lnk, '__LinkUrl__', '\='."'".a:rxUrl."'", 'g')
+ let lnk = s:safesubstitute(lnk, '__LinkUrl__', a:rxUrl, 'g')
endif
if a:rxDesc != ""
- let lnk = substitute(lnk, '__LinkDescription__', '\='."'".a:rxDesc."'", 'g')
+ let lnk = s:safesubstitute(lnk, '__LinkDescription__', a:rxDesc, 'g')
endif
if a:rxStyle != ""
- let lnk = substitute(lnk, '__LinkStyle__', '\='."'".a:rxStyle."'", 'g')
+ let lnk = s:safesubstitute(lnk, '__LinkStyle__', a:rxStyle, 'g')
endif
return lnk
endfunction " }}}
@@ -1894,8 +1907,8 @@ function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) " {{{
if descr == ""
let descr = s:clean_url(url)
endif
- let lnk = substitute(template, '__LinkDescription__', '\="'.descr.'"', '')
- let lnk = substitute(lnk, '__LinkUrl__', '\="'.url.'"', '')
+ let lnk = s:safesubstitute(template, '__LinkDescription__', descr, '')
+ let lnk = s:safesubstitute(lnk, '__LinkUrl__', url, '')
return lnk
endfunction " }}}
@@ -1903,7 +1916,7 @@ endfunction " }}}
function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, template) "{{{
let lnk = vimwiki#base#normalize_link_helper(a:str, a:rxUrl, a:rxDesc, a:template)
let style = matchstr(a:str, a:rxStyle)
- let lnk = substitute(lnk, '__LinkStyle__', '\="'.style.'"', '')
+ let lnk = s:safesubstitute(lnk, '__LinkStyle__', style, '')
return lnk
endfunction " }}}
@@ -1995,8 +2008,8 @@ function! s:normalize_link_syntax_v() " {{{
if s:is_diary_file(expand("%:p"))
let sub = s:normalize_link_in_diary(@")
else
- let sub = substitute(g:vimwiki_WikiLinkTemplate1,
- \ '__LinkUrl__', '\=' . "'" . @" . "'", '')
+ let sub = s:safesubstitute(g:vimwiki_WikiLinkTemplate1,
+ \ '__LinkUrl__', @", '')
endif
" Put substitution in register " and change text
diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim
@@ -65,7 +65,7 @@ fun! s:read_captions(files) "{{{
let result = {}
for fl in a:files
" remove paths and extensions
- let fl_key = fnamemodify(fl, ':t:r')
+ let fl_key = substitute(fnamemodify(fl, ':t'), VimwikiGet('ext').'$', '', '')
if filereadable(fl)
for line in readfile(fl, '', s:vimwiki_max_scan_for_caption)
@@ -174,8 +174,14 @@ function! vimwiki#diary#make_note(wnum, ...) "{{{
call vimwiki#path#mkdir(VimwikiGet('path', idx).VimwikiGet('diary_rel_path', idx))
- if a:0 && a:1 == 1
- let cmd = 'tabedit'
+ if a:0
+ if a:1 == 1
+ let cmd = 'tabedit'
+ elseif a:2 == 2
+ let cmd = 'split'
+ elseif a:3 == 3
+ let cmd = 'vsplit'
+ endif
else
let cmd = 'edit'
endif
diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim
@@ -6,6 +6,13 @@
" MISC helper functions {{{
+" s:safesubstitute
+function! s:safesubstitute(text, search, replace, mode) "{{{
+ " Substitute regexp but do not interpret replace
+ let escaped = escape(a:replace, '\&')
+ return substitute(a:text, a:search, escaped, a:mode)
+endfunction " }}}
+
" vimwiki#markdown_base#reset_mkd_refs
function! vimwiki#markdown_base#reset_mkd_refs() "{{{
call VimwikiClear('markdown_refs')
@@ -139,8 +146,8 @@ function! s:normalize_link_syntax_v() " {{{
try
norm! gvy
let visual_selection = @"
- let link = substitute(g:vimwiki_Weblink1Template, '__LinkUrl__', '\='."'".visual_selection."'", '')
- let link = substitute(link, '__LinkDescription__', '\='."'".visual_selection."'", '')
+ let link = Safesubstitute(g:vimwiki_Weblink1Template, '__LinkUrl__', visual_selection, '')
+ let link = Safesubstitute(link, '__LinkDescription__', visual_selection, '')
call setreg('"', link, 'v')
diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt
@@ -1244,14 +1244,9 @@ LaTeX code).
Note: the highlighting in Vim is automatic. For the rendering in HTML, you
have two alternative options:
-1. using the MathJax server for rendering (needs internet connection).
-Add to your HTML template the following line:
-
-<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-
-2. installing MathJax locally (faster, no internet required). Choose a
-folder on your hard drive and save MathJax in it. Then add to your HTML
-template the following line:
+1. installing MathJax locally (Recommended: faster, no internet required).
+Choose a folder on your hard drive and save MathJax in it. Then add to your
+HTML template the following line:
<script type="text/javascript" src="<mathjax_folder>/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
@@ -1266,6 +1261,11 @@ template folder. For instance, a sensible folder structure could be:
In this case, <mathjax_folder> would be "../mathjax" (without quotes).
+2. Loading MathJax from a CDN-server (needs internet connection).
+Add to your HTML template the following line:
+
+<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/config/TeX-AMS-MML_HTMLorMML.js"></script>
+
------------------------------------------------------------------------------
5.9. Blockquotes *vimwiki-syntax-blockquotes*
@@ -2886,6 +2886,19 @@ Contributors and their Github usernames in roughly chronological order:
- @wangzq
- Jinzhou Zhang (@lotabout)
- Michael Riley (@optik-aper)
+ - Irfan Sharif (@irfansharif)
+ - John Conroy (@jconroy77)
+ - Christian Rondeau (@christianrondeau)
+ - Alex Thorne (@thornecc)
+ - Shafqat Bhuiyan (@priomsrb)
+ - Bradley Cicenas (@bcicen)
+ - Michael Thessel (@MichaelThessel)
+ - Michael F. Schönitzer (@nudin)
+ - @sqlwwx
+ - Guilherme Salazar (@salazar)
+ - Daniel Trnka (@trnila)
+ - Yuchen Pei (@ycpei)
+ - @maqiv
==============================================================================
@@ -3133,10 +3146,11 @@ http://code.google.com/p/vimwiki/issues/list
==============================================================================
16. License *vimwiki-license*
-The MIT Licence
+The MIT License
http://www.opensource.org/licenses/mit-license.php
Copyright (c) 2008-2010 Maxim Kim
+ 2013-2017 Daniel Schemala
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal