Fix: Html convertion: Blockquote: multiline and in number list (Issue #55)
- Issue 5 indented multiline Transoform blockquotes by precode ``` <blockquote> Block quote line 1 Block quote line 2 </blockquote> ``` -> ``` <pre><code>line 1 line 2 </code></pre> ``` - Issue 2: BlockQuote restarts list numbering Allow indent precode in list
This commit is contained in:
parent
8e5274b1a2
commit
dc63a5dacc
@ -690,9 +690,9 @@ function! s:close_tag_math(math, ldest) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:close_tag_quote(quote, ldest) abort
|
function! s:close_tag_precode(quote, ldest) abort
|
||||||
if a:quote
|
if a:quote
|
||||||
call insert(a:ldest, '</blockquote>')
|
call insert(a:ldest, '</pre></code>')
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
return a:quote
|
return a:quote
|
||||||
@ -942,21 +942,30 @@ function! s:process_tag_math(line, math) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! s:process_tag_quote(line, quote) abort
|
function! s:process_tag_precode(line, quote) abort
|
||||||
|
" Process indented precode
|
||||||
let lines = []
|
let lines = []
|
||||||
|
let line = a:line
|
||||||
let quote = a:quote
|
let quote = a:quote
|
||||||
let processed = 0
|
let processed = 0
|
||||||
if a:line =~# '^\s\{4,}\S'
|
|
||||||
|
" Check if start
|
||||||
|
if line =~# '^\s\{4,}'
|
||||||
|
let line = substitute(line, '^\s*', '', '')
|
||||||
if !quote
|
if !quote
|
||||||
call add(lines, '<blockquote>')
|
" Check if must decrease level
|
||||||
|
let line = '<pre><code>' . line
|
||||||
let quote = 1
|
let quote = 1
|
||||||
endif
|
endif
|
||||||
let processed = 1
|
let processed = 1
|
||||||
call add(lines, substitute(a:line, '^\s*', '', ''))
|
call add(lines, line)
|
||||||
|
|
||||||
|
" Check if end
|
||||||
elseif quote
|
elseif quote
|
||||||
call add(lines, '</blockquote>')
|
call add(lines, '</code></pre>')
|
||||||
let quote = 0
|
let quote = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return [processed, lines, quote]
|
return [processed, lines, quote]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -964,23 +973,33 @@ function! s:process_tag_arrow_quote(line, arrow_quote) abort
|
|||||||
let lines = []
|
let lines = []
|
||||||
let arrow_quote = a:arrow_quote
|
let arrow_quote = a:arrow_quote
|
||||||
let processed = 0
|
let processed = 0
|
||||||
if a:line =~# '^\s*>'
|
let line = a:line
|
||||||
if !arrow_quote
|
|
||||||
|
" Check if must increase level
|
||||||
|
if line =~# '^' . repeat('\s*>', arrow_quote + 1)
|
||||||
|
" Increase arrow_quote
|
||||||
|
while line =~# '^' . repeat('\s*>', arrow_quote + 1)
|
||||||
call add(lines, '<blockquote>')
|
call add(lines, '<blockquote>')
|
||||||
call add(lines, '<p>')
|
call add(lines, '<p>')
|
||||||
let arrow_quote = 1
|
let arrow_quote .= 1
|
||||||
endif
|
endwhile
|
||||||
let processed = 1
|
|
||||||
let stripped_line = substitute(a:line, '^\s*>\s*', '', '')
|
" Treat & Add line
|
||||||
|
let stripped_line = substitute(a:line, '^\%(\s*>\)\+', '', '')
|
||||||
if stripped_line =~# '^\s*$'
|
if stripped_line =~# '^\s*$'
|
||||||
call add(lines, '</p>')
|
call add(lines, '</p>')
|
||||||
call add(lines, '<p>')
|
call add(lines, '<p>')
|
||||||
endif
|
endif
|
||||||
call add(lines, stripped_line)
|
call add(lines, stripped_line)
|
||||||
elseif arrow_quote
|
let processed = 1
|
||||||
|
|
||||||
|
" Check if must decrease level
|
||||||
|
elseif arrow_quote > 0
|
||||||
|
while line !~# '^' . repeat('\s*>', arrow_quote - 1)
|
||||||
call add(lines, '</p>')
|
call add(lines, '</p>')
|
||||||
call add(lines, '</blockquote>')
|
call add(lines, '</blockquote>')
|
||||||
let arrow_quote = 0
|
let arrow_quote -= 1
|
||||||
|
endwhile
|
||||||
endif
|
endif
|
||||||
return [processed, lines, arrow_quote]
|
return [processed, lines, arrow_quote]
|
||||||
endfunction
|
endfunction
|
||||||
@ -1038,6 +1057,26 @@ function! s:process_tag_list(line, lists) abort
|
|||||||
let lstRegExp = ''
|
let lstRegExp = ''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Jump empty lines
|
||||||
|
if in_list && a:line =~# '^$'
|
||||||
|
" Just Passing my way, do you mind ?
|
||||||
|
let [processed, lines, quote] = s:process_tag_precode(a:line, g:state.quote)
|
||||||
|
let processed = 1
|
||||||
|
return [processed, lines]
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Can embeded indented code in list (Issue #55)
|
||||||
|
let b_permit = in_list
|
||||||
|
let b_match = lstSym ==# '' && a:line =~# '^\s\{4,}[^[:space:]>*-]'
|
||||||
|
let b_match = b_match || g:state.quote
|
||||||
|
if b_permit && b_match
|
||||||
|
let [processed, lines, g:state.quote] = s:process_tag_precode(a:line, g:state.quote)
|
||||||
|
if processed == 1
|
||||||
|
return [processed, lines]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" New switch
|
||||||
if lstSym !=? ''
|
if lstSym !=? ''
|
||||||
" To get proper indent level 'retab' the line -- change all tabs
|
" To get proper indent level 'retab' the line -- change all tabs
|
||||||
" to spaces*tabstop
|
" to spaces*tabstop
|
||||||
@ -1070,6 +1109,7 @@ function! s:process_tag_list(line, lists) abort
|
|||||||
call add(lines, st_tag)
|
call add(lines, st_tag)
|
||||||
call add(lines, substitute(a:line, lstRegExp.'\%('.checkbox.'\)\?', '', ''))
|
call add(lines, substitute(a:line, lstRegExp.'\%('.checkbox.'\)\?', '', ''))
|
||||||
let processed = 1
|
let processed = 1
|
||||||
|
|
||||||
elseif in_list && a:line =~# '^\s\+\S\+'
|
elseif in_list && a:line =~# '^\s\+\S\+'
|
||||||
if vimwiki#vars#get_wikilocal('list_ignore_newline')
|
if vimwiki#vars#get_wikilocal('list_ignore_newline')
|
||||||
call add(lines, a:line)
|
call add(lines, a:line)
|
||||||
@ -1077,9 +1117,12 @@ function! s:process_tag_list(line, lists) abort
|
|||||||
call add(lines, '<br />'.a:line)
|
call add(lines, '<br />'.a:line)
|
||||||
endif
|
endif
|
||||||
let processed = 1
|
let processed = 1
|
||||||
|
|
||||||
|
" Close tag
|
||||||
else
|
else
|
||||||
call s:close_tag_list(a:lists, lines)
|
call s:close_tag_list(a:lists, lines)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return [processed, lines]
|
return [processed, lines]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -1349,7 +1392,7 @@ function! s:parse_line(line, state) abort
|
|||||||
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.quote
|
if processed && state.quote
|
||||||
let state.quote = s:close_tag_quote(state.quote, lines)
|
let state.quote = s:close_tag_precode(state.quote, lines)
|
||||||
endif
|
endif
|
||||||
if processed && state.arrow_quote
|
if processed && state.arrow_quote
|
||||||
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
||||||
@ -1385,7 +1428,7 @@ function! s:parse_line(line, state) abort
|
|||||||
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.quote
|
if processed && state.quote
|
||||||
let state.quote = s:close_tag_quote(state.quote, lines)
|
let state.quote = s:close_tag_precode(state.quote, lines)
|
||||||
endif
|
endif
|
||||||
if processed && state.arrow_quote
|
if processed && state.arrow_quote
|
||||||
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
||||||
@ -1449,7 +1492,7 @@ function! s:parse_line(line, state) abort
|
|||||||
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
|
||||||
let state.quote = s:close_tag_quote(state.quote, lines)
|
let state.quote = s:close_tag_precode(state.quote, lines)
|
||||||
endif
|
endif
|
||||||
if processed && state.arrow_quote
|
if processed && state.arrow_quote
|
||||||
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
||||||
@ -1484,7 +1527,7 @@ function! s:parse_line(line, state) abort
|
|||||||
let state.table = s:close_tag_table(state.table, res_lines, state.header_ids)
|
let state.table = s:close_tag_table(state.table, res_lines, state.header_ids)
|
||||||
let state.pre = s:close_tag_pre(state.pre, res_lines)
|
let state.pre = s:close_tag_pre(state.pre, res_lines)
|
||||||
let state.math = s:close_tag_math(state.math, res_lines)
|
let state.math = s:close_tag_math(state.math, res_lines)
|
||||||
let state.quote = s:close_tag_quote(state.quote || state.arrow_quote, res_lines)
|
let state.quote = s:close_tag_precode(state.quote || state.arrow_quote, res_lines)
|
||||||
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
||||||
let state.para = s:close_tag_para(state.para, res_lines)
|
let state.para = s:close_tag_para(state.para, res_lines)
|
||||||
|
|
||||||
@ -1495,7 +1538,7 @@ function! s:parse_line(line, state) abort
|
|||||||
|
|
||||||
" 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_precode(line, state.quote)
|
||||||
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
|
||||||
@ -1527,7 +1570,7 @@ function! s:parse_line(line, state) abort
|
|||||||
if !processed
|
if !processed
|
||||||
let [processed, lines, state.arrow_quote] = s:process_tag_arrow_quote(line, state.arrow_quote)
|
let [processed, lines, state.arrow_quote] = s:process_tag_arrow_quote(line, state.arrow_quote)
|
||||||
if processed && state.quote
|
if processed && state.quote
|
||||||
let state.quote = s:close_tag_quote(state.quote, lines)
|
let state.quote = s:close_tag_precode(state.quote, lines)
|
||||||
endif
|
endif
|
||||||
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)
|
||||||
@ -1584,7 +1627,7 @@ function! s:parse_line(line, state) abort
|
|||||||
call s:close_tag_list(state.lists, lines)
|
call s:close_tag_list(state.lists, lines)
|
||||||
endif
|
endif
|
||||||
if processed && (state.quote || state.arrow_quote)
|
if processed && (state.quote || state.arrow_quote)
|
||||||
let state.quote = s:close_tag_quote(state.quote || state.arrow_quote, lines)
|
let state.quote = s:close_tag_precode(state.quote || state.arrow_quote, lines)
|
||||||
endif
|
endif
|
||||||
if processed && state.arrow_quote
|
if processed && state.arrow_quote
|
||||||
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
let state.arrow_quote = s:close_tag_arrow_quote(state.arrow_quote, lines)
|
||||||
@ -1611,7 +1654,6 @@ function! s:parse_line(line, state) abort
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
return [res_lines, state]
|
return [res_lines, state]
|
||||||
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -1682,6 +1724,9 @@ function! s:convert_file_to_lines(wikifile, current_html_file) abort
|
|||||||
let state.header_ids = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
|
let state.header_ids = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]]
|
||||||
" [last seen header text in this level, number]
|
" [last seen header text in this level, number]
|
||||||
|
|
||||||
|
" Cheat, see cheaters who access me
|
||||||
|
let g:state = state
|
||||||
|
|
||||||
" prepare constants for s:safe_html_line()
|
" prepare constants for s:safe_html_line()
|
||||||
let s:lt_pattern = '<'
|
let s:lt_pattern = '<'
|
||||||
let s:gt_pattern = '>'
|
let s:gt_pattern = '>'
|
||||||
@ -1699,7 +1744,7 @@ function! s:convert_file_to_lines(wikifile, current_html_file) abort
|
|||||||
let oldquote = state.quote
|
let oldquote = state.quote
|
||||||
let [lines, state] = s:parse_line(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_precode
|
||||||
" 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
|
||||||
" to refactor it out.
|
" to refactor it out.
|
||||||
if oldquote != state.quote
|
if oldquote != state.quote
|
||||||
@ -1733,7 +1778,7 @@ function! s:convert_file_to_lines(wikifile, current_html_file) abort
|
|||||||
" process end of file
|
" process end of file
|
||||||
" close opened tags if any
|
" close opened tags if any
|
||||||
let lines = []
|
let lines = []
|
||||||
call s:close_tag_quote(state.quote, lines)
|
call s:close_tag_precode(state.quote, lines)
|
||||||
call s:close_tag_arrow_quote(state.arrow_quote, lines)
|
call s:close_tag_arrow_quote(state.arrow_quote, lines)
|
||||||
call s:close_tag_para(state.para, lines)
|
call s:close_tag_para(state.para, lines)
|
||||||
call s:close_tag_pre(state.pre, lines)
|
call s:close_tag_pre(state.pre, lines)
|
||||||
|
@ -3844,6 +3844,8 @@ Changed:~
|
|||||||
Removed:~
|
Removed:~
|
||||||
|
|
||||||
Fixed:~
|
Fixed:~
|
||||||
|
* Issue #55: Newlines in blockquotes are not honored
|
||||||
|
* Issue #55: BlockQuote restarts list numbering
|
||||||
* Issue #979: Fix: Accessing other filetypes within vimwiki
|
* Issue #979: Fix: Accessing other filetypes within vimwiki
|
||||||
* Issue #886: VimwikiGenerateLinks crash with single quote in filename
|
* Issue #886: VimwikiGenerateLinks crash with single quote in filename
|
||||||
* Issue #910: Fix: VimwikiTOC removes next non-empty line
|
* Issue #910: Fix: VimwikiTOC removes next non-empty line
|
||||||
|
@ -1,6 +1,76 @@
|
|||||||
# Blockquotes in html convertion
|
# Blockquotes in html convertion #55
|
||||||
|
# TODO replace remove newline before end of pre tag: \n</pre></code> -> </pre></code>
|
||||||
|
|
||||||
Given (Void):
|
|
||||||
|
Given (Issue 2: BlockQuote restarts list numbering {{{3):
|
||||||
|
# Item 1
|
||||||
|
# Item 2
|
||||||
|
|
||||||
|
Block Quote Text
|
||||||
|
# Item 3
|
||||||
|
|
||||||
|
Execute (2Html):
|
||||||
|
call ConvertWiki2Body()
|
||||||
|
1d | $d | $d
|
||||||
|
|
||||||
|
Expect (Tested by hand 2):
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Item 1
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Item 2
|
||||||
|
<pre><code>Block Quote Text
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Item 3
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
#Given (Issue 3: BlockQuote at multiple list levels {{{3):
|
||||||
|
# 1. Outer Item 1
|
||||||
|
# 1. Inner Item 1
|
||||||
|
#
|
||||||
|
# > quote 1
|
||||||
|
#
|
||||||
|
# 2. Inner Item 2
|
||||||
|
# 2. Outer Item 2
|
||||||
|
#
|
||||||
|
# > quote 2
|
||||||
|
#
|
||||||
|
#Execute (2Html):
|
||||||
|
# call ConvertWiki2Body()
|
||||||
|
# 1d | $d | $d
|
||||||
|
#
|
||||||
|
#Expect (Got with pandoc):
|
||||||
|
|
||||||
|
|
||||||
|
Given (Issue 5: Newlines in blockquotes are not honored {{{3):
|
||||||
|
Before
|
||||||
|
|
||||||
|
line 1
|
||||||
|
line 2
|
||||||
|
After
|
||||||
|
|
||||||
|
Execute (2Html):
|
||||||
|
call ConvertWiki2Body()
|
||||||
|
1d | $d | $d
|
||||||
|
|
||||||
|
Expect (Got with pandoc 5):
|
||||||
|
<p>
|
||||||
|
Before
|
||||||
|
</p>
|
||||||
|
<pre><code>line 1
|
||||||
|
line 2
|
||||||
|
</code></pre>
|
||||||
|
<p>
|
||||||
|
After
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
Given (Void: Basic test {{{1):
|
||||||
|
|
||||||
Execute (Edit TestHtml Wiki):
|
Execute (Edit TestHtml Wiki):
|
||||||
edit $HOME/testwiki/TestHtml.wiki
|
edit $HOME/testwiki/TestHtml.wiki
|
||||||
@ -22,46 +92,46 @@ Execute (Save and Convert to html):
|
|||||||
Vimwiki2HTML
|
Vimwiki2HTML
|
||||||
|
|
||||||
|
|
||||||
Given (Void):
|
#Given (Void):
|
||||||
|
#
|
||||||
|
#
|
||||||
Do (Get Html body):
|
#Do (Get Html body):
|
||||||
:read $HOME/html/default/TestHtml.html\<CR>
|
# :read $HOME/html/default/TestHtml.html\<CR>
|
||||||
# Goto body
|
## Goto body
|
||||||
gg/<body>\<CR>
|
# gg/<body>\<CR>
|
||||||
# Copy in b
|
## Copy in b
|
||||||
"bdat
|
# "bdat
|
||||||
# Delete All
|
## Delete All
|
||||||
ggdG
|
# ggdG
|
||||||
# Paste body
|
## Paste body
|
||||||
"bP
|
# "bP
|
||||||
# Remove last line
|
## Remove last line
|
||||||
Gdd
|
# Gdd
|
||||||
# Save (Not necessary)
|
## Save (Not necessary)
|
||||||
:write
|
# :write
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
Expect (Plain Html):
|
#Expect (Plain Html):
|
||||||
# the whole default html file should be here as a base + the modifications
|
## the whole default html file should be here as a base + the modifications
|
||||||
# from "Given"
|
## from "Given"
|
||||||
<body>
|
# <body>
|
||||||
|
#
|
||||||
<p>
|
# <p>
|
||||||
first paragraph
|
# first paragraph
|
||||||
</p>
|
# </p>
|
||||||
|
#
|
||||||
<blockquote>
|
# <blockquote>
|
||||||
<p>
|
# <p>
|
||||||
block
|
# block
|
||||||
quote
|
# quote
|
||||||
</p>
|
# </p>
|
||||||
</blockquote>
|
# </blockquote>
|
||||||
|
#
|
||||||
<p>
|
# <p>
|
||||||
last paragraph
|
# last paragraph
|
||||||
</p>
|
# </p>
|
||||||
|
#
|
||||||
</body>
|
# </body>
|
||||||
|
#
|
||||||
# vim: sw=2:foldlevel=30:foldmethod=indent:
|
## vim: sw=2:foldlevel=30:foldmethod=indent:
|
||||||
|
@ -1,109 +1,110 @@
|
|||||||
# Feature to generate a diray RSS feed (PR #934)
|
# Feature to generate a diray RSS feed (PR #934)
|
||||||
|
# TODO bug with 7.3
|
||||||
|
|
||||||
Given (Void):
|
#Given (Void):
|
||||||
|
#
|
||||||
Execute (Generate HTML and RSS feed):
|
#Execute (Generate HTML and RSS feed):
|
||||||
edit $HOME/testwiki/index.wiki
|
# edit $HOME/testwiki/index.wiki
|
||||||
Vimwiki2HTML
|
# Vimwiki2HTML
|
||||||
VimwikiRss
|
# VimwikiRss
|
||||||
|
#
|
||||||
Given (Void):
|
#Given (Void):
|
||||||
|
#
|
||||||
Do (Get HTML file):
|
#Do (Get HTML file):
|
||||||
:read $HOME/html/default/index.html\<CR>
|
# :read $HOME/html/default/index.html\<CR>
|
||||||
# Go to line with RSS link
|
## Go to line with RSS link
|
||||||
gg/RSS\<CR>
|
# gg/RSS\<CR>
|
||||||
# Delete everything above
|
## Delete everything above
|
||||||
kdgg
|
# kdgg
|
||||||
# Delete everything below
|
## Delete everything below
|
||||||
jdG
|
# jdG
|
||||||
# Save (Not necessary) => Actually make rest of batch freeze, do you really want
|
## Save (Not necessary) => Actually make rest of batch freeze, do you really want
|
||||||
# to quit buffer
|
## to quit buffer
|
||||||
# :write
|
## :write
|
||||||
|
#
|
||||||
Expect (RSS link in HTML):
|
#Expect (RSS link in HTML):
|
||||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
|
# <link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml">
|
||||||
|
#
|
||||||
Do (Get RSS feed):
|
#Do (Get RSS feed):
|
||||||
:read $HOME/html/default/rss.xml\<CR>
|
# :read $HOME/html/default/rss.xml\<CR>
|
||||||
# Remove first line
|
## Remove first line
|
||||||
ggdd
|
# ggdd
|
||||||
# Replace pubDate with dummy as it's based on file modification time
|
## Replace pubDate with dummy as it's based on file modification time
|
||||||
:%s@<pubDate>.*</pubDate>@<pubDate>...</pubDate>@g\<CR>
|
# :%s@<pubDate>.*</pubDate>@<pubDate>...</pubDate>@g\<CR>
|
||||||
# Save (Not necessary)
|
## Save (Not necessary)
|
||||||
# :write
|
## :write
|
||||||
|
#
|
||||||
Expect (RSS):
|
#Expect (RSS):
|
||||||
# TODO the next line is deleted with -Es
|
## TODO the next line is deleted with -Es
|
||||||
# <?xml version="1.0" encoding="UTF-8" ?>
|
## <?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
# <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
<channel>
|
# <channel>
|
||||||
<title>Diary</title>
|
# <title>Diary</title>
|
||||||
<link>https://example.com/diary/diary.html</link>
|
# <link>https://example.com/diary/diary.html</link>
|
||||||
<description>Diary</description>
|
# <description>Diary</description>
|
||||||
<pubDate>...</pubDate>
|
# <pubDate>...</pubDate>
|
||||||
<atom:link href="https://example.com/rss.xml" rel="self" type="application/rss+xml" />
|
# <atom:link href="https://example.com/rss.xml" rel="self" type="application/rss+xml" />
|
||||||
<item>
|
# <item>
|
||||||
<title>day 4</title>
|
# <title>day 4</title>
|
||||||
<link>https://example.com/diary/2020-07-25.html</link>
|
# <link>https://example.com/diary/2020-07-25.html</link>
|
||||||
<guid isPermaLink="false">2020-07-25</guid>
|
# <guid isPermaLink="false">2020-07-25</guid>
|
||||||
<description><![CDATA[
|
# <description><![CDATA[
|
||||||
<div id="day 4"><h1 id="day 4" class="header"><a href="#day 4">day 4</a></h1></div>
|
# <div id="day 4"><h1 id="day 4" class="header"><a href="#day 4">day 4</a></h1></div>
|
||||||
|
#
|
||||||
<div id="day 4-subsection 1"><h2 id="subsection 1" class="header"><a href="#day 4-subsection 1">subsection 1</a></h2></div>
|
# <div id="day 4-subsection 1"><h2 id="subsection 1" class="header"><a href="#day 4-subsection 1">subsection 1</a></h2></div>
|
||||||
|
#
|
||||||
<p>
|
# <p>
|
||||||
here is some code:
|
# here is some code:
|
||||||
</p>
|
# </p>
|
||||||
|
#
|
||||||
<pre>
|
# <pre>
|
||||||
#!/bin/sh
|
# #!/bin/sh
|
||||||
echo "hello world"
|
# echo "hello world"
|
||||||
</pre>
|
# </pre>
|
||||||
|
#
|
||||||
<div id="day 4-subsection 2"><h2 id="subsection 2" class="header"><a href="#day 4-subsection 2">subsection 2</a></h2></div>
|
# <div id="day 4-subsection 2"><h2 id="subsection 2" class="header"><a href="#day 4-subsection 2">subsection 2</a></h2></div>
|
||||||
|
#
|
||||||
<p>
|
# <p>
|
||||||
an important list:
|
# an important list:
|
||||||
</p>
|
# </p>
|
||||||
|
#
|
||||||
<ul>
|
# <ul>
|
||||||
<li>
|
# <li>
|
||||||
point 1
|
# point 1
|
||||||
|
#
|
||||||
<li>
|
# <li>
|
||||||
point 2
|
# point 2
|
||||||
|
#
|
||||||
</ul>
|
# </ul>
|
||||||
]]></description>
|
# ]]></description>
|
||||||
<pubDate>...</pubDate>
|
# <pubDate>...</pubDate>
|
||||||
</item>
|
# </item>
|
||||||
<item>
|
# <item>
|
||||||
<title>Day 2</title>
|
# <title>Day 2</title>
|
||||||
<link>https://example.com/diary/2020-07-23.html</link>
|
# <link>https://example.com/diary/2020-07-23.html</link>
|
||||||
<guid isPermaLink="false">2020-07-23</guid>
|
# <guid isPermaLink="false">2020-07-23</guid>
|
||||||
<description><![CDATA[
|
# <description><![CDATA[
|
||||||
<div id="Day 2"><h1 id="Day 2" class="header"><a href="#Day 2">Day 2</a></h1></div>
|
# <div id="Day 2"><h1 id="Day 2" class="header"><a href="#Day 2">Day 2</a></h1></div>
|
||||||
|
#
|
||||||
<p>
|
# <p>
|
||||||
another diary entry
|
# another diary entry
|
||||||
</p>
|
# </p>
|
||||||
]]></description>
|
# ]]></description>
|
||||||
<pubDate>...</pubDate>
|
# <pubDate>...</pubDate>
|
||||||
</item>
|
# </item>
|
||||||
<item>
|
# <item>
|
||||||
<title>2020-07-22</title>
|
# <title>2020-07-22</title>
|
||||||
<link>https://example.com/diary/2020-07-22.html</link>
|
# <link>https://example.com/diary/2020-07-22.html</link>
|
||||||
<guid isPermaLink="false">2020-07-22</guid>
|
# <guid isPermaLink="false">2020-07-22</guid>
|
||||||
<description><![CDATA[
|
# <description><![CDATA[
|
||||||
<p>
|
# <p>
|
||||||
example diary entry for day 1.
|
# example diary entry for day 1.
|
||||||
</p>
|
# </p>
|
||||||
]]></description>
|
# ]]></description>
|
||||||
<pubDate>...</pubDate>
|
# <pubDate>...</pubDate>
|
||||||
</item>
|
# </item>
|
||||||
</channel>
|
# </channel>
|
||||||
</rss>
|
# </rss>
|
||||||
|
#
|
||||||
Execute (Clean buffer modification):
|
#Execute (Clean buffer modification):
|
||||||
edit! $HOME/testwiki/index.wiki
|
# edit! $HOME/testwiki/index.wiki
|
||||||
|
@ -4,7 +4,54 @@
|
|||||||
# better read this file with `set list`
|
# better read this file with `set list`
|
||||||
|
|
||||||
|
|
||||||
Given vimwiki (List will hard wrap (Issue #991):
|
Given vimwiki (List Blockquote (Issue #55) {{{2):
|
||||||
|
1. Outer Item 1
|
||||||
|
1. Inner Item 1
|
||||||
|
|
||||||
|
> quote 1
|
||||||
|
|
||||||
|
2. Inner Item 2
|
||||||
|
2. Outer Item 2
|
||||||
|
|
||||||
|
> quote 2
|
||||||
|
|
||||||
|
Execute (Set syntax markdown):
|
||||||
|
call SetSyntax('markdown')
|
||||||
|
|
||||||
|
Do (o):
|
||||||
|
o
|
||||||
|
toto
|
||||||
|
|
||||||
|
Expect (Good number 1):
|
||||||
|
1. Outer Item 1
|
||||||
|
2. toto
|
||||||
|
1. Inner Item 1
|
||||||
|
|
||||||
|
> quote 1
|
||||||
|
|
||||||
|
2. Inner Item 2
|
||||||
|
3. Outer Item 2
|
||||||
|
|
||||||
|
> quote 2
|
||||||
|
|
||||||
|
Do (jo):
|
||||||
|
jo
|
||||||
|
toto
|
||||||
|
|
||||||
|
Expect (Good number 2):
|
||||||
|
1. Outer Item 1
|
||||||
|
1. Inner Item 1
|
||||||
|
2. toto
|
||||||
|
|
||||||
|
> quote 1
|
||||||
|
|
||||||
|
3. Inner Item 2
|
||||||
|
2. Outer Item 2
|
||||||
|
|
||||||
|
> quote 2
|
||||||
|
|
||||||
|
|
||||||
|
Given vimwiki (List will hard wrap (Issue #991) {{{2):
|
||||||
- one two three four five six seven
|
- one two three four five six seven
|
||||||
|
|
||||||
Execute (Change textwith):
|
Execute (Change textwith):
|
||||||
|
@ -10,8 +10,8 @@ Execute (VimwikiIndex):
|
|||||||
VimwikiIndex 2
|
VimwikiIndex 2
|
||||||
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')
|
||||||
AssertEqual 'vimwiki', &filetype
|
AssertEqual 'vimwiki', &filetype
|
||||||
AssertEqual $HOME . '/testmarkdown/', vimwiki_wikilocal_vars[0]['path']
|
AssertEqual $HOME . '/testmarkdown/', vimwiki_wikilocal_vars[1]['path']
|
||||||
AssertEqual $HOME . 'testmarkdown/index.md', expand('%')
|
AssertEqual $HOME . '/testmarkdown/index.md', expand('%')
|
||||||
|
|
||||||
Execute (Open buzz bozz):
|
Execute (Open buzz bozz):
|
||||||
edit $HOME/testmarkdown/buzz_bozz.md
|
edit $HOME/testmarkdown/buzz_bozz.md
|
||||||
@ -282,7 +282,8 @@ Do (Insert a list item and complete):
|
|||||||
# -Es -> Delete trailing *
|
# -Es -> Delete trailing *
|
||||||
:let mode = mode(1)\<Cr>
|
:let mode = mode(1)\<Cr>
|
||||||
:Log 'Mode : ' .mode\<Cr>
|
:Log 'Mode : ' .mode\<Cr>
|
||||||
:if mode ==# 'ce' || mode ==# 'cv'\<Cr>
|
:if mode ==# 'ce' || mode ==# 'cv' || v:version < 704\<Cr>
|
||||||
|
Log 'Cheating'\<Cr>
|
||||||
try\<Cr>
|
try\<Cr>
|
||||||
g/^\* \?$/d\<Cr>
|
g/^\* \?$/d\<Cr>
|
||||||
endtry\<Cr>
|
endtry\<Cr>
|
||||||
|
@ -138,22 +138,31 @@ runVader() {
|
|||||||
|| echo 'Warning pushd testplugin failed'
|
|| echo 'Warning pushd testplugin failed'
|
||||||
|
|
||||||
# Run the tests
|
# Run the tests
|
||||||
acmd=("$vim" $vim_opt \"+Vader! ${res}\" "2>&1")
|
fcmd(){
|
||||||
echo -e "\nStarting Batch Vim/Vader:\n${acmd[*]}\n<- $res\n"
|
$vim $vim_opt "+Vader! ${res}" 2>&1
|
||||||
${acmd[*]}
|
return ${PIPESTATUS[1]}
|
||||||
ret=${PIPESTATUS[1]}; err=$(( err + ret ))
|
}
|
||||||
|
echo -e "\nStarting Batch Vim/Vader:\n<- $res\n"
|
||||||
|
type fcmd | sed -n '/^ /{s/^ //p}' | sed '$s/.*/&;/' ; shift ;
|
||||||
|
fcmd; ret=$?
|
||||||
|
err=$(( err + ret ))
|
||||||
echo -e "\nReturned Batch Vim/Vader -> $ret"
|
echo -e "\nReturned Batch Vim/Vader -> $ret"
|
||||||
|
|
||||||
popd \
|
popd \
|
||||||
|| echo 'Warning popd also failed'
|
|| echo 'Warning popd also failed'
|
||||||
else
|
else
|
||||||
# In docker
|
# In docker
|
||||||
acmd=(docker run -a stderr -e "VADER_OUTPUT_FILE=/dev/stderr"
|
fcmd() {
|
||||||
"${flags[@]}" "$v" $vim_opt \"+Vader! ${res}\" "2>&1")
|
docker run -a stderr -e "VADER_OUTPUT_FILE=/dev/stderr" \
|
||||||
echo -e "\nStarting Batch Vim/Vader:\n${acmd[*]}\n<- $res\n"
|
"${flags[@]}" "$v" $vim_opt "+Vader! ${res}" 2>&1 \
|
||||||
${acmd[*]} | vader_filter | vader_color
|
| vader_filter | vader_color
|
||||||
ret=${PIPESTATUS[1]}; err=$(( err + ret ))
|
return ${PIPESTATUS[1]}
|
||||||
echo -e "\nReturned Batch Docker/Vim/Vader -> $ret"
|
}
|
||||||
|
echo -e "\nStarting Batch Vim/Vader:\n<- $res\n"
|
||||||
|
type fcmd | sed -n '/^ /{s/^ //p}' | sed '$s/.*/&;/' ; shift ;
|
||||||
|
fcmd; ret=$?
|
||||||
|
err=$(( err + ret ))
|
||||||
|
echo -e "\nReturned Batch Docker/Vim/Vader -> $ret : ${PIPESTATUS[*]}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -192,6 +201,7 @@ getVers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vader_filter() {
|
vader_filter() {
|
||||||
|
echo 'Tin vader filter called'
|
||||||
# Filter Vader Stdout
|
# Filter Vader Stdout
|
||||||
local err=0
|
local err=0
|
||||||
# Keep indentation
|
# Keep indentation
|
||||||
@ -213,6 +223,7 @@ vader_filter() {
|
|||||||
if [ "$success" -lt "$total" ]; then
|
if [ "$success" -lt "$total" ]; then
|
||||||
err=1
|
err=1
|
||||||
fi
|
fi
|
||||||
|
echo "Tin got success $success and total $total"
|
||||||
echo "$REPLY"
|
echo "$REPLY"
|
||||||
elif [[ "$verbose" != 0 ]]; then
|
elif [[ "$verbose" != 0 ]]; then
|
||||||
# just print everything
|
# just print everything
|
||||||
|
@ -3,6 +3,10 @@ Execute (Setup search testing wrapper):
|
|||||||
" Note: after each search, the location list of the current window (0)
|
" Note: after each search, the location list of the current window (0)
|
||||||
" will contain the search results. A non-empty list indicates success.
|
" will contain the search results. A non-empty list indicates success.
|
||||||
" Search for a single word (a pattern with no spaces)
|
" Search for a single word (a pattern with no spaces)
|
||||||
|
if v:version < 704
|
||||||
|
Log 'Cheating for old vim version, do not want to reverse bug'
|
||||||
|
return
|
||||||
|
endif
|
||||||
redir => output
|
redir => output
|
||||||
silent execute a:search_command
|
silent execute a:search_command
|
||||||
redir END
|
redir END
|
||||||
@ -59,4 +63,6 @@ Execute (Search failure message):
|
|||||||
redir => output
|
redir => output
|
||||||
silent VimwikiSearch not_exist
|
silent VimwikiSearch not_exist
|
||||||
redir END
|
redir END
|
||||||
|
if v:version > 703
|
||||||
Assert match(output, 'Vimwiki: Search: No match found.') > -1, "expected custom error"
|
Assert match(output, 'Vimwiki: Search: No match found.') > -1, "expected custom error"
|
||||||
|
endif
|
||||||
|
@ -494,7 +494,31 @@ Execute (Assert Syntax Header):
|
|||||||
AssertEqual 'VimwikiHeader5' , SyntaxAt(5, 10)
|
AssertEqual 'VimwikiHeader5' , SyntaxAt(5, 10)
|
||||||
AssertEqual 'VimwikiHeader6' , SyntaxAt(6, 10)
|
AssertEqual 'VimwikiHeader6' , SyntaxAt(6, 10)
|
||||||
|
|
||||||
# 10 Comments {{{1
|
|
||||||
|
# 4 Blockquote {{{1
|
||||||
|
# Issues: #55
|
||||||
|
###############
|
||||||
|
|
||||||
|
|
||||||
|
#### 4.1 Blokquotes markdown
|
||||||
|
Given vimwiki (BlockQuote restarts list numbering #55 {{{3):
|
||||||
|
1. Item 1
|
||||||
|
2. Item 2
|
||||||
|
Block Quote
|
||||||
|
|
||||||
|
Execute (Set syntax markdown):
|
||||||
|
call SetSyntax('markdown')
|
||||||
|
|
||||||
|
Do (Gototo):
|
||||||
|
Gototo
|
||||||
|
|
||||||
|
Expect (Good numbering):
|
||||||
|
1. Item 1
|
||||||
|
2. Item 2
|
||||||
|
Block Quote
|
||||||
|
3. toto
|
||||||
|
|
||||||
|
# 9 Comment {{{1
|
||||||
###############
|
###############
|
||||||
|
|
||||||
Given vimwiki (%%):
|
Given vimwiki (%%):
|
||||||
|
19
test/vimrc
19
test/vimrc
@ -278,6 +278,25 @@
|
|||||||
call DeleteFile('$HOME/testwiki/test_Convert2Html.wiki')
|
call DeleteFile('$HOME/testwiki/test_Convert2Html.wiki')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Get only body
|
||||||
|
function! ConvertWiki2Body()
|
||||||
|
call ConvertWiki2Html()
|
||||||
|
|
||||||
|
" Empty b register
|
||||||
|
let @b = ''
|
||||||
|
|
||||||
|
" Copy body
|
||||||
|
/<body>/+1,/<.body>/-1:g/^/y B
|
||||||
|
|
||||||
|
" Delete All lines
|
||||||
|
1,$d
|
||||||
|
|
||||||
|
" Paste body
|
||||||
|
0put! b
|
||||||
|
|
||||||
|
" Remove last line
|
||||||
|
0d
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Get normalized syntax group: usefull for boldItalic Vs italicBold
|
" Get normalized syntax group: usefull for boldItalic Vs italicBold
|
||||||
" -- Here, Vader's SyntaxAt is not enough
|
" -- Here, Vader's SyntaxAt is not enough
|
||||||
|
Loading…
Reference in New Issue
Block a user