From b79977d6b8bc28414081746ec76890a291b55a67 Mon Sep 17 00:00:00 2001 From: Alexey Radkov Date: Sun, 4 May 2014 15:46:19 +0400 Subject: [PATCH 001/216] further large table optimizations 1. s:get_aligned_rows(): getting 2 last rows is enough for having been formatted tables 2. vimwiki#tbl#get_cells(): using faster strpart() instead concatenating every new character into variables cell and quote 3. checking by getline() whether the line was changed before setline() does matter on slower computers --- autoload/vimwiki/tbl.vim | 74 ++++++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 26 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index de05e63..aa13202 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -124,11 +124,10 @@ function! s:create_row_sep(cols) "{{{ return row endfunction "}}} -function! vimwiki#tbl#get_cells(line) "{{{ +function! vimwiki#tbl#get_cells(line, ...) "{{{ let result = [] - let cell = '' - let quote = '' let state = 'NONE' + let cell_start = -1 " 'Simple' FSM for idx in range(strlen(a:line)) @@ -136,44 +135,39 @@ function! vimwiki#tbl#get_cells(line) "{{{ let ch = a:line[idx] if state == 'NONE' if ch == '|' + let cell_start = idx + 1 let state = 'CELL' endif elseif state == 'CELL' if ch == '[' || ch == '{' let state = 'BEFORE_QUOTE_START' - let quote = ch elseif ch == '|' - call add(result, vimwiki#u#trim(cell)) - let cell = "" - else - let cell .= ch + let cell = strpart(a:line, cell_start, idx - cell_start) + if a:0 && a:1 + let cell = substitute(cell, '^ \(.*\) $', '\1', '') + else + let cell = vimwiki#u#trim(cell) + endif + call add(result, cell) + let cell_start = idx + 1 endif elseif state == 'BEFORE_QUOTE_START' if ch == '[' || ch == '{' let state = 'QUOTE' - let quote .= ch else let state = 'CELL' - let cell .= quote.ch - let quote = '' endif elseif state == 'QUOTE' if ch == ']' || ch == '}' let state = 'BEFORE_QUOTE_END' endif - let quote .= ch elseif state == 'BEFORE_QUOTE_END' if ch == ']' || ch == '}' let state = 'CELL' endif - let cell .= quote.ch - let quote = '' endif endfor - if cell.quote != '' - call add(result, vimwiki#u#trim(cell.quote, '|')) - endif return result endfunction "}}} @@ -201,7 +195,7 @@ function! s:get_indent(lnum) "{{{ return indent endfunction " }}} -function! s:get_rows(lnum) "{{{ +function! s:get_rows(lnum, ...) "{{{ if !s:is_table(getline(a:lnum)) return endif @@ -210,7 +204,9 @@ function! s:get_rows(lnum) "{{{ let lower_rows = [] let lnum = a:lnum - 1 - while lnum >= 1 + let depth = a:0 > 0 ? a:1 : 0 + let ldepth = 0 + while lnum >= 1 && (depth == 0 || ldepth < depth) let line = getline(lnum) if s:is_table(line) call add(upper_rows, [lnum, line]) @@ -218,6 +214,7 @@ function! s:get_rows(lnum) "{{{ break endif let lnum -= 1 + let ldepth += 1 endwhile call reverse(upper_rows) @@ -229,6 +226,9 @@ function! s:get_rows(lnum) "{{{ else break endif + if depth > 0 + break + endif let lnum += 1 endwhile @@ -237,7 +237,8 @@ endfunction "}}} function! s:get_cell_max_lens(lnum, ...) "{{{ let max_lens = {} - for [lnum, row] in s:get_rows(a:lnum) + let rows = a:0 > 2 ? a:3 : s:get_rows(a:lnum) + for [lnum, row] in rows if s:is_separator(row) continue endif @@ -255,13 +256,32 @@ function! s:get_cell_max_lens(lnum, ...) "{{{ endfunction "}}} function! s:get_aligned_rows(lnum, col1, col2) "{{{ - let rows = s:get_rows(a:lnum) + " getting 2 last rows is enough for having been formatted tables + let depth = 2 + let rows = s:get_rows(a:lnum, depth) let startlnum = rows[0][0] let cells = [] - for [lnum, row] in rows - call add(cells, vimwiki#tbl#get_cells(row)) - endfor - let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum) + let max_lens = {} + let lrows = len(rows) + if lrows == depth + 1 + let i = 1 + for [lnum, row] in rows + call add(cells, vimwiki#tbl#get_cells(row, i == lrows - 1 ? 0 : 1)) + let i += 1 + endfor + let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) + let fst_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows[0:0]) + if max_lens != fst_lens + " all the table must be re-formatted + let rows = s:get_rows(a:lnum) + let startlnum = rows[0][0] + let cells = [] + for [lnum, row] in rows + call add(cells, vimwiki#tbl#get_cells(row)) + endfor + let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) + endif + endif let result = [] for [lnum, row] in rows if s:is_separator(row) @@ -520,7 +540,9 @@ function! vimwiki#tbl#format(lnum, ...) "{{{ for [lnum, row] in s:get_aligned_rows(a:lnum, col1, col2) let row = indentstring.row - call setline(lnum, row) + if getline(lnum) != row + call setline(lnum, row) + endif endfor let &tw = s:textwidth From cd25233cc826000192b92f94e84b0522afce730b Mon Sep 17 00:00:00 2001 From: Alexey Radkov Date: Sun, 4 May 2014 17:09:42 +0400 Subject: [PATCH 002/216] fast and in Insert mode this also fixes Tab navigation in a new added line --- autoload/vimwiki/tbl.vim | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index aa13202..368dcd5 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -408,7 +408,13 @@ function! vimwiki#tbl#goto_next_col() "{{{ let curcol = virtcol('.') let lnum = line('.') let newcol = s:get_indent(lnum) - let max_lens = s:get_cell_max_lens(lnum) + let rows = s:get_rows(lnum, 2) + let startlnum = rows[0][0] + let cells = [] + for [lnum, row] in rows + call add(cells, vimwiki#tbl#get_cells(row, 1)) + endfor + let max_lens = s:get_cell_max_lens(lnum, cells, startlnum, rows) for cell_len in values(max_lens) if newcol >= curcol-1 break @@ -434,7 +440,13 @@ function! vimwiki#tbl#goto_prev_col() "{{{ let curcol = virtcol('.') let lnum = line('.') let newcol = s:get_indent(lnum) - let max_lens = s:get_cell_max_lens(lnum) + let rows = s:get_rows(lnum, 2) + let startlnum = rows[0][0] + let cells = [] + for [lnum, row] in rows + call add(cells, vimwiki#tbl#get_cells(row, 1)) + endfor + let max_lens = s:get_cell_max_lens(lnum, cells, startlnum, rows) let prev_cell_len = 0 echom string(max_lens) for cell_len in values(max_lens) From 4d1bb91dbe2d6ba8bc7d6619b4f66a239c642329 Mon Sep 17 00:00:00 2001 From: Alexey Radkov Date: Sun, 4 May 2014 18:42:00 +0400 Subject: [PATCH 003/216] small fix in s:get_aligned_rows() --- autoload/vimwiki/tbl.vim | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index 368dcd5..46712b3 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -263,6 +263,7 @@ function! s:get_aligned_rows(lnum, col1, col2) "{{{ let cells = [] let max_lens = {} let lrows = len(rows) + let check_all = 1 if lrows == depth + 1 let i = 1 for [lnum, row] in rows @@ -271,16 +272,17 @@ function! s:get_aligned_rows(lnum, col1, col2) "{{{ endfor let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) let fst_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows[0:0]) - if max_lens != fst_lens - " all the table must be re-formatted - let rows = s:get_rows(a:lnum) - let startlnum = rows[0][0] - let cells = [] - for [lnum, row] in rows - call add(cells, vimwiki#tbl#get_cells(row)) - endfor - let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) - endif + let check_all = max_lens != fst_lens + endif + if check_all + " all the table must be re-formatted + let rows = s:get_rows(a:lnum) + let startlnum = rows[0][0] + let cells = [] + for [lnum, row] in rows + call add(cells, vimwiki#tbl#get_cells(row)) + endfor + let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) endif let result = [] for [lnum, row] in rows From 72ad6d1b16de450b916e45f63ae9a72f23d8d22d Mon Sep 17 00:00:00 2001 From: Alexey Radkov Date: Sun, 4 May 2014 20:46:00 +0400 Subject: [PATCH 004/216] minor stylistic change --- autoload/vimwiki/tbl.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index 46712b3..d383f73 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -267,7 +267,7 @@ function! s:get_aligned_rows(lnum, col1, col2) "{{{ if lrows == depth + 1 let i = 1 for [lnum, row] in rows - call add(cells, vimwiki#tbl#get_cells(row, i == lrows - 1 ? 0 : 1)) + call add(cells, vimwiki#tbl#get_cells(row, i != lrows - 1)) let i += 1 endfor let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) From 920f41b318831cca3e18684f8521e4527608e14f Mon Sep 17 00:00:00 2001 From: Alexey Radkov Date: Fri, 9 May 2014 12:47:21 +0400 Subject: [PATCH 005/216] fixed get_cells() FSM and gqq command - get_cells() FSM correctly treats unclosed quotes now, - fixed gqq command: now it aligns all the table - proposed 'fast' variant of gqq: gq1 that aligns current + 2 above rows --- autoload/vimwiki/tbl.vim | 129 ++++++++++++++++++++++----------------- ftplugin/vimwiki.vim | 6 +- 2 files changed, 77 insertions(+), 58 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index d383f73..bf6a206 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -127,46 +127,58 @@ endfunction "}}} function! vimwiki#tbl#get_cells(line, ...) "{{{ let result = [] let state = 'NONE' - let cell_start = -1 + let cell_start = 0 + let quote_start = 0 + let len = strlen(a:line) - 1 " 'Simple' FSM - 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 ch == '|' - let cell_start = idx + 1 - let state = 'CELL' - endif - elseif state == 'CELL' - if ch == '[' || ch == '{' - let state = 'BEFORE_QUOTE_START' - elseif ch == '|' - let cell = strpart(a:line, cell_start, idx - cell_start) - if a:0 && a:1 - let cell = substitute(cell, '^ \(.*\) $', '\1', '') - else - let cell = vimwiki#u#trim(cell) - endif - call add(result, cell) - let cell_start = idx + 1 - endif - elseif state == 'BEFORE_QUOTE_START' - if ch == '[' || ch == '{' - let state = 'QUOTE' - else - let state = 'CELL' - endif - elseif state == 'QUOTE' - if ch == ']' || ch == '}' - let state = 'BEFORE_QUOTE_END' - endif - elseif state == 'BEFORE_QUOTE_END' - if ch == ']' || ch == '}' - let state = 'CELL' - endif + while state != 'CELL' + if quote_start != 0 && state != 'CELL' + let state = 'CELL' endif - endfor + for idx in range(quote_start, len) + " The only way I know Vim can do Unicode... + let ch = a:line[idx] + if state == 'NONE' + if ch == '|' + let cell_start = idx + 1 + let state = 'CELL' + endif + elseif state == 'CELL' + if ch == '[' || ch == '{' + let state = 'BEFORE_QUOTE_START' + let quote_start = idx + elseif ch == '|' + let cell = strpart(a:line, cell_start, idx - cell_start) + if a:0 && a:1 + let cell = substitute(cell, '^ \(.*\) $', '\1', '') + else + let cell = vimwiki#u#trim(cell) + endif + call add(result, cell) + let cell_start = idx + 1 + endif + elseif state == 'BEFORE_QUOTE_START' + if ch == '[' || ch == '{' + let state = 'QUOTE' + let quote_start = idx + else + let state = 'CELL' + endif + elseif state == 'QUOTE' + if ch == ']' || ch == '}' + let state = 'BEFORE_QUOTE_END' + endif + elseif state == 'BEFORE_QUOTE_END' + if ch == ']' || ch == '}' + let state = 'CELL' + endif + endif + endfor + if state == 'NONE' + break + endif + endwhile return result endfunction "}}} @@ -255,24 +267,26 @@ function! s:get_cell_max_lens(lnum, ...) "{{{ return max_lens endfunction "}}} -function! s:get_aligned_rows(lnum, col1, col2) "{{{ - " getting 2 last rows is enough for having been formatted tables - let depth = 2 - let rows = s:get_rows(a:lnum, depth) - let startlnum = rows[0][0] +function! s:get_aligned_rows(lnum, col1, col2, depth) "{{{ + let rows = [] + let startlnum = 0 let cells = [] let max_lens = {} - let lrows = len(rows) let check_all = 1 - if lrows == depth + 1 - let i = 1 - for [lnum, row] in rows - call add(cells, vimwiki#tbl#get_cells(row, i != lrows - 1)) - let i += 1 - endfor - let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) - let fst_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows[0:0]) - let check_all = max_lens != fst_lens + if a:depth > 0 + let rows = s:get_rows(a:lnum, a:depth) + let startlnum = rows[0][0] + let lrows = len(rows) + if lrows == a:depth + 1 + let i = 1 + for [lnum, row] in rows + call add(cells, vimwiki#tbl#get_cells(row, i != lrows - 1)) + let i += 1 + endfor + let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) + let fst_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows[0:0]) + let check_all = max_lens != fst_lens + endif endif if check_all " all the table must be re-formatted @@ -376,7 +390,7 @@ endfunction "}}} " Keyboard functions "{{{ function! s:kbd_create_new_row(cols, goto_first) "{{{ let cmd = "\o".s:create_empty_row(a:cols) - let cmd .= "\:call vimwiki#tbl#format(line('.'))\" + let cmd .= "\:call vimwiki#tbl#format(line('.'), 2)\" let cmd .= "\0" if a:goto_first let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'c', line('.'))\" @@ -537,6 +551,8 @@ function! vimwiki#tbl#format(lnum, ...) "{{{ return endif + let depth = a:0 == 1 ? a:1 : 0 + if a:0 == 2 let col1 = a:1 let col2 = a:2 @@ -552,7 +568,8 @@ function! vimwiki#tbl#format(lnum, ...) "{{{ let indentstring = repeat(' ', indent / &tabstop) . repeat(' ', indent % &tabstop) endif - for [lnum, row] in s:get_aligned_rows(a:lnum, col1, col2) + " getting N = depth last rows is enough for having been formatted tables + for [lnum, row] in s:get_aligned_rows(a:lnum, col1, col2, depth) let row = indentstring.row if getline(lnum) != row call setline(lnum, row) @@ -597,9 +614,9 @@ function! vimwiki#tbl#create(...) "{{{ call append(line('.'), lines) endfunction "}}} -function! vimwiki#tbl#align_or_cmd(cmd) "{{{ +function! vimwiki#tbl#align_or_cmd(cmd, ...) "{{{ if s:is_table(getline('.')) - call vimwiki#tbl#format(line('.')) + call call('vimwiki#tbl#format', [line('.')] + a:000) else exe 'normal! '.a:cmd endif diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index b0bc3f1..06e7a9f 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -342,8 +342,8 @@ command! -buffer VimwikiListToggle call vimwiki#lst#toggle_list_item() " table commands command! -buffer -nargs=* VimwikiTable call vimwiki#tbl#create() -command! -buffer VimwikiTableAlignQ call vimwiki#tbl#align_or_cmd('gqq') -command! -buffer VimwikiTableAlignW call vimwiki#tbl#align_or_cmd('gww') +command! -buffer -nargs=? VimwikiTableAlignQ call vimwiki#tbl#align_or_cmd('gqq', ) +command! -buffer -nargs=? VimwikiTableAlignW call vimwiki#tbl#align_or_cmd('gww', ) command! -buffer VimwikiTableMoveColumnLeft call vimwiki#tbl#move_column_left() command! -buffer VimwikiTableMoveColumnRight call vimwiki#tbl#move_column_right() @@ -614,6 +614,8 @@ endif nnoremap gqq :VimwikiTableAlignQ nnoremap gww :VimwikiTableAlignW +nnoremap gq1 :VimwikiTableAlignQ 2 +nnoremap gw1 :VimwikiTableAlignW 2 if !hasmapto('VimwikiTableMoveColumnLeft') nmap VimwikiTableMoveColumnLeft endif From f384aa6d1e6a23c9ee5ef6168a3376a7833081b0 Mon Sep 17 00:00:00 2001 From: Steven Schmeiser Date: Thu, 17 Aug 2017 09:59:04 -0400 Subject: [PATCH 006/216] add horizontal alignment to tables --- autoload/vimwiki/tbl.vim | 69 ++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index b05d67c..d720c9c 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -57,7 +57,7 @@ function! s:is_table(line) "{{{ 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) "{{{ @@ -234,6 +234,33 @@ function! s:get_rows(lnum) "{{{ return upper_rows + lower_rows endfunction "}}} +function! s:get_cell_aligns(lnum) "{{{ + let aligns = {} + for [lnum, row] in s:get_rows(a:lnum) + if s:is_separator(row) + let cells = vimwiki#tbl#get_cells(row) + for idx in range(len(cells)) + let cell = cells[idx] + if cell =~# '^--\+:' + let aligns[idx] = 'right' + elseif cell =~# '^:--\+:' + let aligns[idx] = 'center' + else + let aligns[idx] = 'left' + endif + endfor + else + let cells = vimwiki#tbl#get_cells(row) + for idx in range(len(cells)) + if !has_key(aligns, idx) + let aligns[idx] = 'left' + endif + endfor + endif + endfor + return aligns +endfunction "}}} + function! s:get_cell_max_lens(lnum, ...) "{{{ let max_lens = {} for [lnum, row] in s:get_rows(a:lnum) @@ -261,12 +288,13 @@ function! s:get_aligned_rows(lnum, col1, col2) "{{{ call add(cells, vimwiki#tbl#get_cells(row)) endfor let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum) + let aligns = s:get_cell_aligns(a:lnum) let result = [] for [lnum, row] in rows if s:is_separator(row) - let new_row = s:fmt_sep(max_lens, a:col1, a:col2) + let new_row = s:fmt_sep(max_lens, aligns, a:col1, a:col2) else - let new_row = s:fmt_row(cells[lnum - startlnum], max_lens, a:col1, a:col2) + let new_row = s:fmt_row(cells[lnum - startlnum], max_lens, aligns, a:col1, a:col2) endif call add(result, [lnum, new_row]) endfor @@ -296,19 +324,24 @@ endfunction "}}} " }}} " Format functions {{{ -function! s:fmt_cell(cell, max_len) "{{{ +function! s:fmt_cell(cell, max_len, align) "{{{ let cell = ' '.a:cell.' ' let diff = a:max_len - s:wide_len(a:cell) if diff == 0 && empty(a:cell) let diff = 1 endif - - let cell .= repeat(' ', diff) + if a:align == 'left' + let cell .= repeat(' ', diff) + elseif a:align == 'right' + let cell = repeat(' ',diff).cell + else + let cell = repeat(' ',diff/2).cell.repeat(' ',diff-diff/2) + endif return cell endfunction "}}} -function! s:fmt_row(cells, max_lens, col1, col2) "{{{ +function! s:fmt_row(cells, max_lens, aligns, col1, col2) "{{{ let new_line = s:rxSep() for idx in range(len(a:cells)) if idx == a:col1 @@ -317,26 +350,34 @@ function! s:fmt_row(cells, max_lens, col1, col2) "{{{ let idx = a:col1 endif let value = a:cells[idx] - let new_line .= s:fmt_cell(value, a:max_lens[idx]).s:rxSep() + let new_line .= s:fmt_cell(value, a:max_lens[idx], a:aligns[idx]).s:rxSep() endfor let idx = len(a:cells) while idx < len(a:max_lens) - let new_line .= s:fmt_cell('', a:max_lens[idx]).s:rxSep() + let new_line .= s:fmt_cell('', a:max_lens[idx], a:aligns[idx]).s:rxSep() let idx += 1 endwhile return new_line endfunction "}}} -function! s:fmt_cell_sep(max_len) "{{{ +function! s:fmt_cell_sep(max_len, align) "{{{ + let cell = '' if a:max_len == 0 - return repeat('-', 3) + let cell .= '-' else - return repeat('-', a:max_len+2) + let cell .= repeat('-', a:max_len) + endif + if a:align == 'right' + return cell.'-:' + elseif a:align == 'left' + return cell.'--' + else + return ':'.cell.':' endif endfunction "}}} -function! s:fmt_sep(max_lens, col1, col2) "{{{ +function! s:fmt_sep(max_lens, aligns, col1, col2) "{{{ let new_line = s:rxSep() for idx in range(len(a:max_lens)) if idx == a:col1 @@ -344,7 +385,7 @@ function! s:fmt_sep(max_lens, col1, col2) "{{{ elseif idx == a:col2 let idx = a:col1 endif - let new_line .= s:fmt_cell_sep(a:max_lens[idx]).s:rxSep() + let new_line .= s:fmt_cell_sep(a:max_lens[idx], a:aligns[idx]).s:rxSep() endfor return new_line endfunction "}}} From 7730fa28b536f06b7701166e3fc54c23e1338682 Mon Sep 17 00:00:00 2001 From: Steven Schmeiser Date: Thu, 17 Aug 2017 10:08:32 -0400 Subject: [PATCH 007/216] add horizontal alignment to table documentation --- doc/vimwiki.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index bc8db38..247a0d1 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -1658,6 +1658,15 @@ values: > To indent table indent the first row. Then format it with 'gqq'. +You can specify horizontal alignment for columns in the separator. The +default is left-align. > + + | Date | Item | Price | + |------------|:------:|--------:| + | yest | Coffee | $15.00 | + | 2017-02-13 | Tea | $2.10 | + | 2017-03-14 | Cake | $143.12 | +< ============================================================================== 10. Diary *vimwiki-diary* From 23d273d54711035ac2b1c19838438521f0982595 Mon Sep 17 00:00:00 2001 From: Steven Schmeiser Date: Mon, 9 Jul 2018 10:05:30 -0400 Subject: [PATCH 008/216] table alignment: break out of loop when separator found --- autoload/vimwiki/tbl.vim | 16 +++++++++------- doc/vimwiki.txt | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index d720c9c..f395a11 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -237,7 +237,9 @@ endfunction "}}} function! s:get_cell_aligns(lnum) "{{{ let aligns = {} for [lnum, row] in s:get_rows(a:lnum) + let found_separator = 0 if s:is_separator(row) + let found_separator = 1 let cells = vimwiki#tbl#get_cells(row) for idx in range(len(cells)) let cell = cells[idx] @@ -249,15 +251,15 @@ function! s:get_cell_aligns(lnum) "{{{ let aligns[idx] = 'left' endif endfor - else - let cells = vimwiki#tbl#get_cells(row) - for idx in range(len(cells)) - if !has_key(aligns, idx) - let aligns[idx] = 'left' - endif - endfor + return aligns endif endfor + if !found_separator + let cells = vimwiki#tbl#get_cells(row) + for idx in range(len(cells)) + let aligns[idx] = 'left' + endfor + endif return aligns endfunction "}}} diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 247a0d1..d2ec6f2 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -1658,8 +1658,8 @@ values: > To indent table indent the first row. Then format it with 'gqq'. -You can specify horizontal alignment for columns in the separator. The -default is left-align. > +You can specify the type of horizontal alignment for columns in the separator +using the ':' character. The default is left-align. > | Date | Item | Price | |------------|:------:|--------:| From 28727b3971f8daa5e251e6d684942483e522fe0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 11 Oct 2018 14:25:55 +0200 Subject: [PATCH 009/216] Add %wiki_path% template variable. --- autoload/vimwiki/html.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index bce5465..54a8346 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -1533,6 +1533,7 @@ function! s:convert_file(path_html, wikifile) let title = s:process_title(placeholders, fnamemodify(a:wikifile, ":t:r")) let date = s:process_date(placeholders, strftime('%Y-%m-%d')) + let wiki_path = strpart(s:current_wiki_file, strlen(vimwiki#vars#get_wikilocal('path'))) let html_lines = s:get_html_template(template_name) @@ -1541,6 +1542,7 @@ function! s:convert_file(path_html, wikifile) call map(html_lines, 'substitute(v:val, "%date%", "'. date .'", "g")') call map(html_lines, 'substitute(v:val, "%root_path%", "'. \ s:root_path(vimwiki#vars#get_bufferlocal('subdir')) .'", "g")') + call map(html_lines, 'substitute(v:val, "%wiki_path%", "'. wiki_path .'", "g")') let css_name = expand(vimwiki#vars#get_wikilocal('css_name')) let css_name = substitute(css_name, '\', '/', 'g') From 6f7e40ff781994564a680f402003178e8f7f95e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 21 Oct 2018 20:50:16 +0200 Subject: [PATCH 010/216] Add short documentation for %wiki_path%. --- doc/vimwiki.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index fcea9eb..01e3bfd 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -1475,6 +1475,14 @@ The date of the wiki page. The value can be used in the HTML template, see If you omit the date after the placeholder, the date of the HTML conversion is used. +------------------------------------------------------------------------------ +%wiki_path% *vimwiki-path* + +The file path to the current wiki file. For example, if you are on page +a/b.wiki %wiki-path% contains "a/b.wiki". + +Mostly useful if you want to link the to raw wiki page from the rendered +version. ============================================================================== 8. Lists *vimwiki-lists* From 21f5069e48d92af17a0b8b805342e956282e19ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sat, 26 Jan 2019 10:29:29 +0100 Subject: [PATCH 011/216] Code-blocks auto-color. --- autoload/vimwiki/html.vim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index ba2cc4c..243189a 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -344,7 +344,17 @@ endfunction function! s:tag_code(value) - return ''.s:safe_html_preformatted(s:mid(a:value, 1)).'' + let l:retstr = '' + return l:retstr endfunction From 08ec02a7554e9981967f0a4443ea310b7fbdccd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 19 Feb 2019 21:04:57 +0100 Subject: [PATCH 012/216] Alternative where text color is inverse of background. --- autoload/vimwiki/html.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index 243189a..b9ed95c 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -349,8 +349,12 @@ function! s:tag_code(value) let l:str = s:mid(a:value, 1) let l:match = match(l:str, '^#[a-fA-F0-9]\{6\}$') + if l:match != -1 - let l:retstr .= " style='background-color: " . l:str . ";'" + let l:inv_color = 0xFFFFFF - eval("0x" . l:str[1:]) + + let l:retstr .= printf(" style='background-color: %s; color: #%x;'", + \ l:str, l:inv_color) endif let l:retstr .= '>'.s:safe_html_preformatted(l:str).'' From a74e0821b01e4b5acc25ac07c4b97b91ad730645 Mon Sep 17 00:00:00 2001 From: lyokha Date: Thu, 14 Mar 2019 13:36:51 +0300 Subject: [PATCH 013/216] resolved conflicts in tbl.vim --- README.md | 4 +- autoload/vimwiki/tbl.vim | 296 +++++++++++++++++++++------------------ 2 files changed, 164 insertions(+), 136 deletions(-) diff --git a/README.md b/README.md index b1154b1..3d6a564 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ With vimwiki you can: * manage todo-lists; * write documentation. -To do a quick start press ``ww (this is usually \ww) to go to your index +To do a quick start press ww (this is usually \ww) to go to your index wiki file. By default it is located in: ~/vimwiki/index.wiki @@ -102,7 +102,7 @@ normal mode: * `wd` -- Delete wiki file you are in. * `wr` -- Rename wiki file you are in. * `` -- Folow/Create wiki link - * `` -- Split and follow/create wiki link + * `` -- Split and folow/create wiki link * `` -- Vertical split and folow/create wiki link * `` -- Go back to parent(previous) wiki link * `` -- Find next wiki link diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index bf6a206..385823d 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -1,36 +1,36 @@ -" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 +" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99 " Vimwiki autoload plugin file -" Desc: Tables +" Description: Tables " | Easily | manageable | text | tables | ! | " |--------|------------|-------|--------|---------| " | Have | fun! | Drink | tea | Period. | " -" Author: Maxim Kim -" Home: http://code.google.com/p/vimwiki/ +" Home: https://github.com/vimwiki/vimwiki/ + + -" Load only once {{{ if exists("g:loaded_vimwiki_tbl_auto") || &cp finish endif let g:loaded_vimwiki_tbl_auto = 1 -"}}} + let s:textwidth = &tw -" Misc functions {{{ -function! s:rxSep() "{{{ - return g:vimwiki_rxTableSep -endfunction "}}} +function! s:rxSep() + return vimwiki#vars#get_syntaxlocal('rxTableSep') +endfunction -function! s:wide_len(str) "{{{ + +function! s:wide_len(str) " vim73 has new function that gives correct string width. if exists("*strdisplaywidth") return strdisplaywidth(a:str) endif " get str display width in vim ver < 7.2 - if !g:vimwiki_CJK_length + if !vimwiki#vars#get_global('CJK_length') let ret = strlen(substitute(a:str, '.', 'x', 'g')) else let savemodified = &modified @@ -43,42 +43,49 @@ function! s:wide_len(str) "{{{ let &modified = savemodified endif return ret -endfunction "}}} +endfunction -function! s:cell_splitter() "{{{ + +function! s:cell_splitter() return '\s*'.s:rxSep().'\s*' -endfunction "}}} +endfunction -function! s:sep_splitter() "{{{ + +function! s:sep_splitter() return '-'.s:rxSep().'-' -endfunction "}}} +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*$') -endfunction "}}} -function! s:is_separator(line) "{{{ - return a:line =~ '^\s*'.s:rxSep().'\(--\+'.s:rxSep().'\)\+\s*$' -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*$') +endfunction -function! s:is_separator_tail(line) "{{{ - return a:line =~ '^\{-1}\%(\s*\|-*\)\%('.s:rxSep().'-\+\)\+'.s:rxSep().'\s*$' -endfunction "}}} -function! s:is_last_column(lnum, cnum) "{{{ +function! s:is_separator(line) + 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*$' +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*$' - -endfunction "}}} + return line =~# s:rxSep().'\s*$' && line !~# s:rxSep().'.*'.s:rxSep().'\s*$' +endfunction -function! s:is_first_column(lnum, cnum) "{{{ + +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()) -endfunction "}}} + return line =~# '^\s*$' || + \ (line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep()) +endfunction -function! s:count_separators_up(lnum) "{{{ + +function! s:count_separators_up(lnum) let lnum = a:lnum - 1 while lnum > 1 if !s:is_separator(getline(lnum)) @@ -88,9 +95,10 @@ function! s:count_separators_up(lnum) "{{{ endwhile return (a:lnum-lnum) -endfunction "}}} +endfunction -function! s:count_separators_down(lnum) "{{{ + +function! s:count_separators_down(lnum) let lnum = a:lnum + 1 while lnum < line('$') if !s:is_separator(getline(lnum)) @@ -100,9 +108,10 @@ function! s:count_separators_down(lnum) "{{{ endwhile return (lnum-a:lnum) -endfunction "}}} +endfunction -function! s:create_empty_row(cols) "{{{ + +function! s:create_empty_row(cols) let row = s:rxSep() let cell = " ".s:rxSep() @@ -111,9 +120,10 @@ function! s:create_empty_row(cols) "{{{ endfor return row -endfunction "}}} +endfunction -function! s:create_row_sep(cols) "{{{ + +function! s:create_row_sep(cols) let row = s:rxSep() let cell = "---".s:rxSep() @@ -122,9 +132,10 @@ function! s:create_row_sep(cols) "{{{ endfor return row -endfunction "}}} +endfunction -function! vimwiki#tbl#get_cells(line, ...) "{{{ + +function! vimwiki#tbl#get_cells(line, ...) let result = [] let state = 'NONE' let cell_start = 0 @@ -139,12 +150,12 @@ function! vimwiki#tbl#get_cells(line, ...) "{{{ for idx in range(quote_start, len) " The only way I know Vim can do Unicode... let ch = a:line[idx] - if state == 'NONE' + if state ==# 'NONE' if ch == '|' let cell_start = idx + 1 let state = 'CELL' endif - elseif state == 'CELL' + elseif state ==# 'CELL' if ch == '[' || ch == '{' let state = 'BEFORE_QUOTE_START' let quote_start = idx @@ -158,18 +169,18 @@ function! vimwiki#tbl#get_cells(line, ...) "{{{ call add(result, cell) let cell_start = idx + 1 endif - elseif state == 'BEFORE_QUOTE_START' + elseif state ==# 'BEFORE_QUOTE_START' if ch == '[' || ch == '{' let state = 'QUOTE' let quote_start = idx else let state = 'CELL' endif - elseif state == 'QUOTE' + elseif state ==# 'QUOTE' if ch == ']' || ch == '}' let state = 'BEFORE_QUOTE_END' endif - elseif state == 'BEFORE_QUOTE_END' + elseif state ==# 'BEFORE_QUOTE_END' if ch == ']' || ch == '}' let state = 'CELL' endif @@ -181,13 +192,15 @@ function! vimwiki#tbl#get_cells(line, ...) "{{{ endwhile return result -endfunction "}}} +endfunction -function! s:col_count(lnum) "{{{ + +function! s:col_count(lnum) return len(vimwiki#tbl#get_cells(getline(a:lnum))) -endfunction "}}} +endfunction -function! s:get_indent(lnum) "{{{ + +function! s:get_indent(lnum) if !s:is_table(getline(a:lnum)) return endif @@ -205,9 +218,10 @@ function! s:get_indent(lnum) "{{{ endwhile return indent -endfunction " }}} +endfunction -function! s:get_rows(lnum, ...) "{{{ + +function! s:get_rows(lnum, ...) if !s:is_table(getline(a:lnum)) return endif @@ -245,9 +259,10 @@ function! s:get_rows(lnum, ...) "{{{ endwhile return upper_rows + lower_rows -endfunction "}}} +endfunction -function! s:get_cell_max_lens(lnum, ...) "{{{ + +function! s:get_cell_max_lens(lnum, ...) let max_lens = {} let rows = a:0 > 2 ? a:3 : s:get_rows(a:lnum) for [lnum, row] in rows @@ -265,9 +280,10 @@ function! s:get_cell_max_lens(lnum, ...) "{{{ endfor endfor return max_lens -endfunction "}}} +endfunction -function! s:get_aligned_rows(lnum, col1, col2, depth) "{{{ + +function! s:get_aligned_rows(lnum, col1, col2, depth) let rows = [] let startlnum = 0 let cells = [] @@ -308,10 +324,11 @@ function! s:get_aligned_rows(lnum, col1, col2, depth) "{{{ call add(result, [lnum, new_row]) endfor return result -endfunction "}}} +endfunction + " Number of the current column. Starts from 0. -function! s:cur_column() "{{{ +function! s:cur_column() let line = getline('.') if !s:is_table(line) return -1 @@ -328,12 +345,10 @@ function! s:cur_column() "{{{ endif endwhile return col -endfunction "}}} +endfunction -" }}} -" Format functions {{{ -function! s:fmt_cell(cell, max_len) "{{{ +function! s:fmt_cell(cell, max_len) let cell = ' '.a:cell.' ' let diff = a:max_len - s:wide_len(a:cell) @@ -343,9 +358,10 @@ function! s:fmt_cell(cell, max_len) "{{{ let cell .= repeat(' ', diff) return cell -endfunction "}}} +endfunction -function! s:fmt_row(cells, max_lens, col1, col2) "{{{ + +function! s:fmt_row(cells, max_lens, col1, col2) let new_line = s:rxSep() for idx in range(len(a:cells)) if idx == a:col1 @@ -363,17 +379,19 @@ function! s:fmt_row(cells, max_lens, col1, col2) "{{{ let idx += 1 endwhile return new_line -endfunction "}}} +endfunction -function! s:fmt_cell_sep(max_len) "{{{ + +function! s:fmt_cell_sep(max_len) if a:max_len == 0 return repeat('-', 3) else return repeat('-', a:max_len+2) endif -endfunction "}}} +endfunction -function! s:fmt_sep(max_lens, col1, col2) "{{{ + +function! s:fmt_sep(max_lens, col1, col2) let new_line = s:rxSep() for idx in range(len(a:max_lens)) if idx == a:col1 @@ -384,11 +402,10 @@ function! s:fmt_sep(max_lens, col1, col2) "{{{ let new_line .= s:fmt_cell_sep(a:max_lens[idx]).s:rxSep() endfor return new_line -endfunction "}}} -"}}} +endfunction -" Keyboard functions "{{{ -function! s:kbd_create_new_row(cols, goto_first) "{{{ + +function! s:kbd_create_new_row(cols, goto_first) let cmd = "\o".s:create_empty_row(a:cols) let cmd .= "\:call vimwiki#tbl#format(line('.'), 2)\" let cmd .= "\0" @@ -401,26 +418,29 @@ function! s:kbd_create_new_row(cols, goto_first) "{{{ let cmd .= "a" return cmd -endfunction "}}} +endfunction -function! s:kbd_goto_next_row() "{{{ + +function! s:kbd_goto_next_row() let cmd = "\j" let cmd .= ":call search('.\\(".s:rxSep()."\\)', 'c', line('.'))\" let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\" let cmd .= "a" return cmd -endfunction "}}} +endfunction -function! s:kbd_goto_prev_row() "{{{ + +function! s:kbd_goto_prev_row() let cmd = "\k" let cmd .= ":call search('.\\(".s:rxSep()."\\)', 'c', line('.'))\" let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\" let cmd .= "a" return cmd -endfunction "}}} +endfunction + " Used in s:kbd_goto_next_col -function! vimwiki#tbl#goto_next_col() "{{{ +function! vimwiki#tbl#goto_next_col() let curcol = virtcol('.') let lnum = line('.') let newcol = s:get_indent(lnum) @@ -439,9 +459,10 @@ function! vimwiki#tbl#goto_next_col() "{{{ endfor let newcol += 2 " +2 == 1 separator + 1 space |... if newcol + delta > curcol-1 @@ -478,9 +499,10 @@ function! vimwiki#tbl#goto_prev_col() "{{{ endfor let newcol += 2 " +2 == 1 separator + 1 space | ".cmd return cmd -endfunction "}}} +endfunction -"}}} -" Global functions {{{ -function! vimwiki#tbl#kbd_cr() "{{{ +function! vimwiki#tbl#kbd_cr() let lnum = line('.') if !s:is_table(getline(lnum)) return "" @@ -509,9 +529,10 @@ function! vimwiki#tbl#kbd_cr() "{{{ else return s:kbd_goto_next_row() endif -endfunction "}}} +endfunction -function! vimwiki#tbl#kbd_tab() "{{{ + +function! vimwiki#tbl#kbd_tab() let lnum = line('.') if !s:is_table(getline(lnum)) return "\" @@ -525,9 +546,10 @@ function! vimwiki#tbl#kbd_tab() "{{{ return s:kbd_create_new_row(cols, 1) endif return s:kbd_goto_next_col(is_sep || last) -endfunction "}}} +endfunction -function! vimwiki#tbl#kbd_shift_tab() "{{{ + +function! vimwiki#tbl#kbd_shift_tab() let lnum = line('.') if !s:is_table(getline(lnum)) return "\" @@ -540,10 +562,11 @@ function! vimwiki#tbl#kbd_shift_tab() "{{{ return "" endif return s:kbd_goto_prev_col(is_sep || first) -endfunction "}}} +endfunction -function! vimwiki#tbl#format(lnum, ...) "{{{ - if !(&filetype == 'vimwiki') + +function! vimwiki#tbl#format(lnum, ...) + if !(&filetype ==? 'vimwiki') return endif let line = getline(a:lnum) @@ -575,11 +598,12 @@ function! vimwiki#tbl#format(lnum, ...) "{{{ call setline(lnum, row) endif endfor - - let &tw = s:textwidth -endfunction "}}} -function! vimwiki#tbl#create(...) "{{{ + let &tw = s:textwidth +endfunction + + +function! vimwiki#tbl#create(...) if a:0 > 1 let cols = a:1 let rows = a:2 @@ -610,34 +634,36 @@ function! vimwiki#tbl#create(...) "{{{ for r in range(rows - 1) call add(lines, row) endfor - - call append(line('.'), lines) -endfunction "}}} -function! vimwiki#tbl#align_or_cmd(cmd, ...) "{{{ + call append(line('.'), lines) +endfunction + + +function! vimwiki#tbl#align_or_cmd(cmd, ...) if s:is_table(getline('.')) call call('vimwiki#tbl#format', [line('.')] + a:000) else exe 'normal! '.a:cmd endif -endfunction "}}} +endfunction -function! vimwiki#tbl#reset_tw(lnum) "{{{ - if !(&filetype == 'vimwiki') + +function! vimwiki#tbl#reset_tw(lnum) + if !(&filetype ==? 'vimwiki') return endif let line = getline(a:lnum) if !s:is_table(line) return endif - + let s:textwidth = &tw let &tw = 0 -endfunction "}}} +endfunction -" TODO: move_column_left and move_column_right are good candidates to be -" refactored. -function! vimwiki#tbl#move_column_left() "{{{ + +" TODO: move_column_left and move_column_right are good candidates to be refactored. +function! vimwiki#tbl#move_column_left() "echomsg "DEBUG move_column_left: " @@ -653,7 +679,7 @@ function! vimwiki#tbl#move_column_left() "{{{ endif if cur_col > 0 - call vimwiki#tbl#format(line('.'), cur_col-1, cur_col) + call vimwiki#tbl#format(line('.'), cur_col-1, cur_col) call cursor(line('.'), 1) let sep = '\('.s:rxSep().'\).\zs' @@ -663,16 +689,16 @@ function! vimwiki#tbl#move_column_left() "{{{ let mpos = match(line, sep, mpos+1) if mpos != -1 let col += 1 - else + else break endif endwhile endif +endfunction -endfunction "}}} -function! vimwiki#tbl#move_column_right() "{{{ +function! vimwiki#tbl#move_column_right() let line = getline('.') @@ -686,7 +712,7 @@ function! vimwiki#tbl#move_column_right() "{{{ endif if cur_col < s:col_count(line('.'))-1 - call vimwiki#tbl#format(line('.'), cur_col, cur_col+1) + call vimwiki#tbl#format(line('.'), cur_col, cur_col+1) call cursor(line('.'), 1) let sep = '\('.s:rxSep().'\).\zs' @@ -696,33 +722,35 @@ function! vimwiki#tbl#move_column_right() "{{{ let mpos = match(line, sep, mpos+1) if mpos != -1 let col += 1 - else + else break endif endwhile - endif +endfunction -endfunction "}}} -function! vimwiki#tbl#get_rows(lnum) "{{{ +function! vimwiki#tbl#get_rows(lnum) return s:get_rows(a:lnum) -endfunction "}}} +endfunction -function! vimwiki#tbl#is_table(line) "{{{ + +function! vimwiki#tbl#is_table(line) return s:is_table(a:line) -endfunction "}}} +endfunction -function! vimwiki#tbl#is_separator(line) "{{{ + +function! vimwiki#tbl#is_separator(line) return s:is_separator(a:line) -endfunction "}}} +endfunction -function! vimwiki#tbl#cell_splitter() "{{{ + +function! vimwiki#tbl#cell_splitter() return s:cell_splitter() -endfunction "}}} +endfunction -function! vimwiki#tbl#sep_splitter() "{{{ + +function! vimwiki#tbl#sep_splitter() return s:sep_splitter() -endfunction "}}} +endfunction -"}}} From bfbfa2783e874b943320e9c7d2871093a91c7770 Mon Sep 17 00:00:00 2001 From: lyokha Date: Thu, 14 Mar 2019 14:21:28 +0300 Subject: [PATCH 014/216] synced README.md with the remote dev branch --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index dec2b9a..cb70ec4 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,16 @@ Changing Wiki Syntax Vimwiki currently ships with 3 syntaxes: Vimwiki (default), Markdown (markdown), and MediaWiki (media) + If you would prefer to use either Markdown or MediaWiki syntaxes, set the following option in your .vimrc: + ``` + let g:vimwiki_list = [{'path': '~/vimwiki/', + \ 'syntax': 'markdown', 'ext': '.md'}] + ``` + + +Installation +============================================================================== + Prerequisites ------------------------------------------------------------------------------ From 7e176c659b180c76d66d02f192171ec98a8d816a Mon Sep 17 00:00:00 2001 From: lyokha Date: Thu, 14 Mar 2019 14:24:13 +0300 Subject: [PATCH 015/216] synced README.md with the remote dev branch (2) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index cb70ec4..a2b10cd 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,6 @@ Changing Wiki Syntax \ 'syntax': 'markdown', 'ext': '.md'}] ``` - Installation ============================================================================== From 30c0bdffaafacff0a34ef8e86493a167dfe43c51 Mon Sep 17 00:00:00 2001 From: lyokha Date: Thu, 14 Mar 2019 14:25:35 +0300 Subject: [PATCH 016/216] synced README.md with the remote dev branch (3) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2b10cd..3ce36f5 100644 --- a/README.md +++ b/README.md @@ -121,10 +121,10 @@ Changing Wiki Syntax \ 'syntax': 'markdown', 'ext': '.md'}] ``` + Installation ============================================================================== - Prerequisites ------------------------------------------------------------------------------ From 07ba7339f15b4c975aef83ecf79ebf9d6c656b37 Mon Sep 17 00:00:00 2001 From: lyokha Date: Thu, 14 Mar 2019 14:44:08 +0300 Subject: [PATCH 017/216] added docs about new commands gq1 and gw1 --- doc/vimwiki.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 4f935e5..ac41297 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -513,6 +513,12 @@ gqq Format table. If you made some changes to a table or without swapping insert/normal modes this command gww will reformat it. + *vimwiki_gq1* *vimwiki_gw1* +gq1 Fast format table. The same as the previous, except + or that only a few lines above the current line are +gw1 tested. If the alignment of the current line differs, + then the whole table gets reformatted. + *vimwiki_* Move current table column to the left. See |:VimwikiTableMoveColumnLeft| From bb40826def8c5c019704ad4450e7317c0fc8bdb8 Mon Sep 17 00:00:00 2001 From: Greg Anders Date: Wed, 13 Mar 2019 08:28:22 -0600 Subject: [PATCH 018/216] Allow customization of header level of TOC Instead of forcing the TOC to always be at header level 1, allow the user to specify via the option g:vimwiki_toc_header_level what level they want. This defaults to 1, so if the user does nothing then the old behavior will remain the same. --- autoload/vimwiki/base.vim | 19 +++++++++++++------ autoload/vimwiki/diary.vim | 2 +- autoload/vimwiki/html.vim | 2 +- autoload/vimwiki/tags.vim | 2 +- autoload/vimwiki/vars.vim | 1 + doc/vimwiki.txt | 9 +++++++++ 6 files changed, 26 insertions(+), 9 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 7986609..e35b458 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -358,7 +358,7 @@ function! vimwiki#base#generate_links() let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' ' - call vimwiki#base#update_listing_in_buffer(lines, 'Generated Links', links_rx, line('$')+1, 1) + call vimwiki#base#update_listing_in_buffer(lines, 'Generated Links', links_rx, line('$')+1, 1, 1) endfunction @@ -1015,14 +1015,14 @@ endfunction " creates or updates auto-generated listings in a wiki file, like TOC, diary " links, tags list etc. -" - the listing consists of a level 1 header and a list of strings as content +" - the listing consists of a header and a list of strings as content " - a:content_regex is used to determine how long a potentially existing list is " - a:default_lnum is the line number where the new listing should be placed if " it's not already present " - if a:create is true, it will be created if it doesn't exist, otherwise it " will only be updated if it already exists function! vimwiki#base#update_listing_in_buffer(strings, start_header, - \ content_regex, default_lnum, create) + \ content_regex, default_lnum, header_level, create) " Vim behaves strangely when files change while in diff mode if &diff || &readonly return @@ -1031,7 +1031,8 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header, " check if the listing is already there let already_there = 0 - let header_rx = '\m^\s*'.substitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'), + let header_level = 'rxH' . a:header_level . '_Template' + let header_rx = '\m^\s*'.substitute(vimwiki#vars#get_syntaxlocal(header_level), \ '__Header__', a:start_header, '') .'\s*$' let start_lnum = 1 @@ -1083,7 +1084,7 @@ function! vimwiki#base#update_listing_in_buffer(strings, start_header, " write new listing let new_header = whitespaces_in_first_line - \ . s:safesubstitute(vimwiki#vars#get_syntaxlocal('rxH1_Template'), + \ . s:safesubstitute(vimwiki#vars#get_syntaxlocal(header_level), \ '__Header__', a:start_header, '') keepjumps call append(start_lnum - 1, new_header) let start_lnum += 1 @@ -1875,7 +1876,13 @@ function! vimwiki#base#table_of_contents(create) let links_rx = '\m^\s*'.vimwiki#u#escape(vimwiki#lst#default_symbol()).' ' - call vimwiki#base#update_listing_in_buffer(lines, toc_header_text, links_rx, 1, a:create) + call vimwiki#base#update_listing_in_buffer( + \ lines, + \ toc_header_text, + \ links_rx, + \ 1, + \ vimwiki#vars#get_global('toc_header_level'), + \ a:create) endfunction diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim index 37f6d5c..847378e 100644 --- a/autoload/vimwiki/diary.vim +++ b/autoload/vimwiki/diary.vim @@ -287,7 +287,7 @@ function! vimwiki#diary#generate_diary_section() if vimwiki#path#is_equal(current_file, diary_file) let content_rx = '^\%(\s*\* \)\|\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxHeader').'\)' call vimwiki#base#update_listing_in_buffer(s:format_diary(), - \ vimwiki#vars#get_wikilocal('diary_header'), content_rx, line('$')+1, 1) + \ vimwiki#vars#get_wikilocal('diary_header'), content_rx, line('$')+1, 1, 1) else echomsg 'Vimwiki Error: You can generate diary links only in a diary index page!' endif diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index ba2cc4c..dacb332 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -1078,7 +1078,7 @@ function! s:process_tag_h(line, id) else - let h_part = '

The default is 'Contents'. +------------------------------------------------------------------------------ +*g:vimwiki_toc_header_level* + +The header level of the Table of Contents (see |vimwiki-toc|). Valid values +are from 1 to 6. + +The default is 1. + + ------------------------------------------------------------------------------ *g:vimwiki_map_prefix* From e26d9fdb8efb2b6d345595981972809ffd1f3b3c Mon Sep 17 00:00:00 2001 From: Rane Date: Thu, 14 Mar 2019 14:03:42 -0600 Subject: [PATCH 019/216] Fix bold and italic markdown syntax --- syntax/vimwiki_markdown.vim | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim index 5962699..0740712 100644 --- a/syntax/vimwiki_markdown.vim +++ b/syntax/vimwiki_markdown.vim @@ -13,23 +13,21 @@ let s:markdown_syntax = g:vimwiki_syntax_variables['markdown'] let s:markdown_syntax.rxEqIn = '\$[^$`]\+\$' let s:markdown_syntax.char_eqin = '\$' -" text: *strong* -" let s:markdown_syntax.rxBold = '\*[^*]\+\*' +" text: **strong** or __strong__ let s:markdown_syntax.rxBold = '\%(^\|\s\|[[:punct:]]\)\@<='. - \'\*'. - \'\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)'. - \'\*'. + \'\(\*\|_\)\{2\}'. + \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. + \'\1\{2\}'. \'\%([[:punct:]]\|\s\|$\)\@=' -let s:markdown_syntax.char_bold = '*' +let s:markdown_syntax.char_bold = '\*\*\|__' -" text: _emphasis_ -" let s:markdown_syntax.rxItalic = '_[^_]\+_' +" text: _emphasis_ or *emphasis* let s:markdown_syntax.rxItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. - \'_'. - \'\%([^_`[:space:]][^_`]*[^_`[:space:]]\|[^_`[:space:]]\)'. - \'_'. + \'\(\*\|_\)'. + \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. + \'\1'. \'\%([[:punct:]]\|\s\|$\)\@=' -let s:markdown_syntax.char_italic = '_' +let s:markdown_syntax.char_italic = '\*\|_' " text: *_bold italic_* or _*italic bold*_ let s:markdown_syntax.rxBoldItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. From 6b29b6604c0a82e3078e17ac08a669c957a0126d Mon Sep 17 00:00:00 2001 From: Rane Date: Thu, 14 Mar 2019 15:21:04 -0600 Subject: [PATCH 020/216] Fix bold_italic and italic_bold markdown syntax. --- syntax/vimwiki.vim | 2 +- syntax/vimwiki_markdown.vim | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim index 512aad9..6a2f9cf 100644 --- a/syntax/vimwiki.vim +++ b/syntax/vimwiki.vim @@ -383,7 +383,7 @@ hi def link VimwikiBoldT VimwikiBold hi def VimwikiItalic term=italic cterm=italic gui=italic hi def link VimwikiItalicT VimwikiItalic -hi def VimwikiBoldItalic term=bold cterm=bold gui=bold,italic +hi def VimwikiBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic hi def link VimwikiItalicBold VimwikiBoldItalic hi def link VimwikiBoldItalicT VimwikiBoldItalic hi def link VimwikiItalicBoldT VimwikiBoldItalic diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim index 0740712..05e1f34 100644 --- a/syntax/vimwiki_markdown.vim +++ b/syntax/vimwiki_markdown.vim @@ -31,18 +31,18 @@ let s:markdown_syntax.char_italic = '\*\|_' " text: *_bold italic_* or _*italic bold*_ let s:markdown_syntax.rxBoldItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. - \'\*_'. - \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. - \'_\*'. + \'\(\*\)\{3\}'. + \'\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)'. + \'\1\{3\}'. \'\%([[:punct:]]\|\s\|$\)\@=' -let s:markdown_syntax.char_bolditalic = '\*_' +let s:markdown_syntax.char_bolditalic = '\*\*\*' let s:markdown_syntax.rxItalicBold = '\%(^\|\s\|[[:punct:]]\)\@<='. - \'_\*'. - \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. - \'\*_'. + \'\(_\)\{3\}'. + \'\%([^_`[:space:]][^_`]*[^_`[:space:]]\|[^_`[:space:]]\)'. + \'\1\{3\}'. \'\%([[:punct:]]\|\s\|$\)\@=' -let s:markdown_syntax.char_italicbold = '_\*' +let s:markdown_syntax.char_italicbold = '___' " text: `code` let s:markdown_syntax.rxCode = '`[^`]\+`' From 1f1966a4f643897668c4b797a8f2af6811db25eb Mon Sep 17 00:00:00 2001 From: Rane Date: Fri, 15 Mar 2019 06:12:35 -0600 Subject: [PATCH 021/216] Add description of markdown specific text decorators --- doc/vimwiki.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 4f935e5..908c9b3 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -877,6 +877,12 @@ is decorated: > super^script^ sub,,script,, +For Markdown syntax these variations are used: > + + **bold text** or __bold text__ + *italic text* or _italic text_ + ***bold_italic text*** or ___italic_bold text___ + Furthermore, there are a number of words which are highlighted extra flashy: TODO, DONE, STARTED, FIXME, FIXED, XXX. From 5e4a89c89889c2e630cc97c620bc138c7efa5adf Mon Sep 17 00:00:00 2001 From: lyokha Date: Fri, 15 Mar 2019 15:31:28 +0300 Subject: [PATCH 022/216] faster table format on InsertLeave; faster s:get_rows() --- autoload/vimwiki/tbl.vim | 14 ++++++++------ plugin/vimwiki.vim | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index 385823d..dfa3649 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -226,8 +226,7 @@ function! s:get_rows(lnum, ...) return endif - let upper_rows = [] - let lower_rows = [] + let rows = [] let lnum = a:lnum - 1 let depth = a:0 > 0 ? a:1 : 0 @@ -235,20 +234,23 @@ function! s:get_rows(lnum, ...) while lnum >= 1 && (depth == 0 || ldepth < depth) let line = getline(lnum) if s:is_table(line) - call add(upper_rows, [lnum, line]) + call insert(rows, [lnum, line]) else break endif let lnum -= 1 let ldepth += 1 endwhile - call reverse(upper_rows) let lnum = a:lnum while lnum <= line('$') let line = getline(lnum) if s:is_table(line) - call add(lower_rows, [lnum, line]) + if lnum == a:lnum + let cells = vimwiki#tbl#get_cells(line) + let line = s:fmt_row(cells, repeat([0], len(cells)), 0, 0) + endif + call add(rows, [lnum, line]) else break endif @@ -258,7 +260,7 @@ function! s:get_rows(lnum, ...) let lnum += 1 endwhile - return upper_rows + lower_rows + return rows endfunction diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim index 211e39c..17c43ac 100644 --- a/plugin/vimwiki.vim +++ b/plugin/vimwiki.vim @@ -261,7 +261,7 @@ augroup vimwiki " Format tables when exit from insert mode. Do not use textwidth to " autowrap tables. if vimwiki#vars#get_global('table_auto_fmt') - exe 'autocmd InsertLeave *'.s:ext.' call vimwiki#tbl#format(line("."))' + exe 'autocmd InsertLeave *'.s:ext.' call vimwiki#tbl#format(line("."), 2)' exe 'autocmd InsertEnter *'.s:ext.' call vimwiki#tbl#reset_tw(line("."))' endif if vimwiki#vars#get_global('folding') =~? ':quick$' From 88a6820e9eefe4db4785dc20dd9b453340286591 Mon Sep 17 00:00:00 2001 From: lyokha Date: Fri, 15 Mar 2019 16:07:52 +0300 Subject: [PATCH 023/216] updated for the new aligns feature --- autoload/vimwiki/tbl.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index c2af1db..5c3f97d 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -253,7 +253,10 @@ function! s:get_rows(lnum, ...) if s:is_table(line) if lnum == a:lnum let cells = vimwiki#tbl#get_cells(line) - let line = s:fmt_row(cells, repeat([0], len(cells)), 0, 0) + let clen = len(cells) + let max_lens = repeat([0], clen) + let aligns = repeat(['left'], clen) + let line = s:fmt_row(cells, max_lens, aligns, 0, 0) endif call add(rows, [lnum, line]) else From b4c9a4f0289733c69fffa6e71f52abcaf1ebe0f8 Mon Sep 17 00:00:00 2001 From: Henry Qin Date: Sun, 17 Mar 2019 10:43:12 -0700 Subject: [PATCH 024/216] Add DesignNotes.wiki, a place for internal documentation --- DesignNotes.wiki | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 DesignNotes.wiki diff --git a/DesignNotes.wiki b/DesignNotes.wiki new file mode 100644 index 0000000..2b8705c --- /dev/null +++ b/DesignNotes.wiki @@ -0,0 +1,5 @@ += Design Notes = + +This file is meant to document design decisions and algorithms inside vimwiki +which are too large for code comments, and not necessarily interesting to +users. Please create a new section to document each behavior. From 8941508e359e2edc546e39d54b3fc6d5c78b9493 Mon Sep 17 00:00:00 2001 From: Henry Qin Date: Mon, 11 Feb 2019 14:29:17 -0800 Subject: [PATCH 025/216] Allow AddHeaderLevel and RemoveHeaderLevel to take counts --- autoload/vimwiki/base.vim | 10 ++++++++-- ftplugin/vimwiki.vim | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 7986609..bbb1963 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -1618,7 +1618,10 @@ function! vimwiki#base#TO_table_col(inner, visual) endfunction -function! vimwiki#base#AddHeaderLevel() +function! vimwiki#base#AddHeaderLevel(...) + if a:1 > 1 + call vimwiki#base#AddHeaderLevel(a:1 - 1) + endif let lnum = line('.') let line = getline(lnum) let rxHdr = vimwiki#vars#get_syntaxlocal('rxH') @@ -1646,7 +1649,10 @@ function! vimwiki#base#AddHeaderLevel() endfunction -function! vimwiki#base#RemoveHeaderLevel() +function! vimwiki#base#RemoveHeaderLevel(...) + if a:1 > 1 + call vimwiki#base#RemoveHeaderLevel(a:1 - 1) + endif let lnum = line('.') let line = getline(lnum) let rxHdr = vimwiki#vars#get_syntaxlocal('rxH') diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index 2d3688b..3f02ab9 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -633,13 +633,14 @@ vnoremap il :call vimwiki#lst#TO_list_item(1, 1) if !hasmapto('VimwikiAddHeaderLevel') nmap = VimwikiAddHeaderLevel endif -nnoremap VimwikiAddHeaderLevel :call vimwiki#base#AddHeaderLevel() +nnoremap VimwikiAddHeaderLevel : + \call vimwiki#base#AddHeaderLevel(v:count) if !hasmapto('VimwikiRemoveHeaderLevel') nmap - VimwikiRemoveHeaderLevel endif nnoremap VimwikiRemoveHeaderLevel : - \call vimwiki#base#RemoveHeaderLevel() + \call vimwiki#base#RemoveHeaderLevel(v:count) if !hasmapto('VimwikiGoToParentHeader') nmap ]u VimwikiGoToParentHeader From 6f687aff5257cb3867fe3f8586f6234e4c15ba54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 17 Mar 2019 22:22:55 +0100 Subject: [PATCH 026/216] Move location of %wiki_path% documentation. --- doc/vimwiki.txt | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 01e3bfd..c88d7a6 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -1475,14 +1475,6 @@ The date of the wiki page. The value can be used in the HTML template, see If you omit the date after the placeholder, the date of the HTML conversion is used. ------------------------------------------------------------------------------- -%wiki_path% *vimwiki-path* - -The file path to the current wiki file. For example, if you are on page -a/b.wiki %wiki-path% contains "a/b.wiki". - -Mostly useful if you want to link the to raw wiki page from the rendered -version. ============================================================================== 8. Lists *vimwiki-lists* @@ -2051,13 +2043,17 @@ Each template could look like: > where - %title% is replaced by a wiki page name or by a |vimwiki-title| - %date% is replaced with the current date or by |vimwiki-date| - %root_path% is replaced by a count of ../ for pages buried in subdirs: + `%title%` is replaced by a wiki page name or by a |vimwiki-title| + `%date%` is replaced with the current date or by |vimwiki-date| + `%root_path%` is replaced by a count of ../ for pages buried in subdirs: if you have wikilink [[dir1/dir2/dir3/my page in a subdir]] then - %root_path% is replaced by '../../../'. + `%root_path%` is replaced by '../../../'. + `%wiki_path%` Path to current wiki-file.` The file path to the current wiki + file. For example, if you are on page a/b.wiki %wiki-path% contains + "a/b.wiki". Mostly useful if you want to link the to raw wiki page from + the rendered version. - %content% is replaced by a wiki file content. + `%content%` is replaced by a wiki file content. The default template will be applied to all wiki pages unless a page specifies From 2f87f92060a154f71416e8ac84dc48d96c03dc4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 17 Mar 2019 22:40:34 +0100 Subject: [PATCH 027/216] Better foreground for colorcodes. --- autoload/vimwiki/html.vim | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index b9ed95c..0ad9ea4 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -349,12 +349,18 @@ function! s:tag_code(value) let l:str = s:mid(a:value, 1) let l:match = match(l:str, '^#[a-fA-F0-9]\{6\}$') - if l:match != -1 - let l:inv_color = 0xFFFFFF - eval("0x" . l:str[1:]) + let l:r = eval("0x".l:str[1:2]) + let l:g = eval("0x".l:str[3:4]) + let l:b = eval("0x".l:str[5:6]) - let l:retstr .= printf(" style='background-color: %s; color: #%x;'", - \ l:str, l:inv_color) + let l:fg_color = + \ (((0.299 * r + 0.587 * g + 0.114 * b) / 0xFF) > 0.5) + \ ? "black" : "white" + + let l:retstr .= + \ " style='background-color:" . l:str . + \ ";color:" . l:fg_color . ";'" endif let l:retstr .= '>'.s:safe_html_preformatted(l:str).'' From da52523710af2f6252eae8fe02ff147e7d498d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 17 Mar 2019 22:50:56 +0100 Subject: [PATCH 028/216] Add documentation for colorcodes. --- doc/vimwiki.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 4f935e5..457b1f3 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -880,6 +880,12 @@ is decorated: > Furthermore, there are a number of words which are highlighted extra flashy: TODO, DONE, STARTED, FIXME, FIXED, XXX. +When rendered as HTML, code blocks containing only a hash prefixed 6 digit hex +number will be colored as themselves. For example > + `#ffe119` +Becomes > + #ffe119 + ------------------------------------------------------------------------------ 5.2. Links *vimwiki-syntax-links* From 1f4fb8ca58806edb370db5267ab49892a98c6e5c Mon Sep 17 00:00:00 2001 From: lyokha Date: Mon, 18 Mar 2019 16:02:52 +0300 Subject: [PATCH 029/216] notes on the newer table formatting algorithm --- DesignNotes.wiki | 183 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) diff --git a/DesignNotes.wiki b/DesignNotes.wiki index 2b8705c..f9ef39c 100644 --- a/DesignNotes.wiki +++ b/DesignNotes.wiki @@ -3,3 +3,186 @@ This file is meant to document design decisions and algorithms inside vimwiki which are too large for code comments, and not necessarily interesting to users. Please create a new section to document each behavior. + +== Formatting tables == + +In vimwiki, formatting tables occurs dynamically, when navigating between cells +and adding new rows in a table in the Insert mode, or statically, when pressing +`gqq` or `gqw` (which are mappings for commands `VimwikiTableAlignQ` and +`VimwikiTableAlignW` respectively) in the Normal mode. It also triggers when +leaving Insert mode, provided variable `g:vimwiki_table_auto_fmt` is set. In +this section, the original and the newer optimized algorithms of table +formatting will be described and compared. + +=== The older table formatting algorithm and why this is not optimal === + +Let's consider a simple example. Open a new file, say _tmp.wiki_, and create a +new table with command `VimwikiTable`. This should create a blank table. + +{{{ +| | | | | | +|---|---|---|---|---| +| | | | | | +}}} + +Let's put the cursor in the first header column of the table, enter the Insert +mode and type a name, say _Col1_. Then press _Tab_: the cursor will move to the +second column of the header and the table will get aligned (in the context of +the table formatting story, words _aligned_ and _formatted_ are considered as +synonyms). Now the table looks as in the following snippet. + +{{{ +| Col1 | | | | | +|------|---|---|---|---| +| | | | | | +}}} + +Then, when moving cursor to the first data row (i.e. to the third line of the +table below the separator line) and typing anything here and there while +navigating using _Tab_ or _Enter_ (pressing this creates a new row below the +current row), the table shall keep formatting. Below is a result of such a +random edit. + +{{{ +| Col1 | | | | | +|------|-------|---|-------|----------| +| | Data1 | | Data2 | | +| | | | | New data | +}}} + +The lowest row gets aligned when leaving the Insert mode. Let's copy _Data1_ +(using `viwy` or another keystroke) and paste it (using `p`) in the second data +row of the first column. Now the table looks mis-aligned (as we did not enter +the Insert mode). + +{{{ +| Col1 | | | | | +|------|-------|---|-------|----------| +| | Data1 | | Data2 | | +| Data1 | | | | New data | +}}} + +This is not a big problem though, because we can put the cursor at _any_ place +in the table and press `gqq`: the table will get aligned. + +{{{ +| Col1 | | | | | +|-------|-------|---|-------|----------| +| | Data1 | | Data2 | | +| Data1 | | | | New data | +}}} + +Now let's make real problems! Move the cursor to the lowest row and copy it +with `yy`. Then 500-fold paste it with `500p`. Now the table very long. Move +the cursor to the lowest row (by pressing `G`), enter the Insert mode, and try +a new random editing session by typing anything in cells with _Tab_ and _Enter_ +navigation interleaves. The editing got painfully slow, did not? + +The reason of the slowing down is the older table formatting algorithm. Every +time _Tab_ or _Enter_ get pressed down, all rows in the table get visited to +calculate a new alignment. Moreover, by design it may happen even more than +once per one press! + +{{{vim +function! s:kbd_create_new_row(cols, goto_first) + let cmd = "\o".s:create_empty_row(a:cols) + let cmd .= "\:call vimwiki#tbl#format(line('.'))\" + let cmd .= "\0" + if a:goto_first + let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'c', line('.'))\" + else + let cmd .= (col('.')-1)."l" + let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\" + endif + let cmd .= "a" + + return cmd +endfunction +}}} + +Function `s:kbd_create_new_row()` is called when _Tab_ or _Enter_ get pressed. +Formatting of the whole table happens in function `vimwiki#tbl#format()`. But +remember that leaving the Insert mode triggers re-formatting of a table when +variable `g:vimwiki_table_auto_fmt` is set. This means that formatting of the +whole table is called on all those multiple interleaves between the Insert and +the Normal mode in `s:kbd_create_new_row` (notice `\`, `o`, etc.). + +=== The newer table formating algorithm === + +The newer algorithm was introduced to struggle against performance issues when +formatting large tables. + +Let's take the table from the previous example in an intermediate state. + +{{{ +| Col1 | | | | | +|------|-------|---|-------|----------| +| | Data1 | | Data2 | | +| Data1 | | | | New data | +}}} + +Then move the cursor to the first data row, copy it with `yy`, go down to the +mis-aligned line, and press `5p`. Now we have a slightly bigger mis-aligned +table. + +{{{ +| Col1 | | | | | +|------|-------|---|-------|----------| +| | Data1 | | Data2 | | +| Data1 | | | | New data | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +}}} + +Go down to the lowest, the 7th, data row and press `gq1`. Nothing happened. +Let's go to the second or the third data row and press `gq1` once again. Now +the table gets aligned. Let's undo formatting with `u`, go to the fourth row, +and press `gq1`. Now the table should look like in the following snippet. + +{{{ +| Col1 | | | | | +|------|-------|---|-------|----------| +| | Data1 | | Data2 | | +| Data1 | | | | New data | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +| | Data1 | | Data2 | | +}}} + +What a peculiar command! Does using it make any sense? Not much, honestly. +Except it shows how the newer optimized table formatting algorithm works in the +Insert mode. + +Indeed, the newer table formatting algorithm introduces a _viewport_ on a table. +Now, when pressing _Tab_ or _Enter_ in the Insert mode, only a small part of +rows are checked for possible formatting: two rows above the current line and +the current line itself (the latter gets preliminary shrunk with function +`s:fmt_row()`). If all three lines in the viewport are of the same length, then +nothing happens (case 1 in the example). If the second or the shrunk current +line is longer then the topmost line in the viewport, then the algorithm falls +back to the older formatting algorithm and the whole table gets aligned +(case 2). If the topmost line in the viewport is longer than the second +and the shrunk current line, then the two lowest lines get aligned according to +the topmost line (case 3). + +Performance of the newer formatting algorithm should not depend on the height +of the table (*beware*: something still makes table editing speed linear with +respect to its height, perhaps syntax tracking or some uncovered parts of the +formatting algorithm). The newer algorithm should also be consistent with +respect to user editing experience. Indeed, as soon as a table should normally +be edited linearly, row by row, dynamic formatting should be both fast +(watching only three rows in a table, re-formatting only when the shrunk +current row gets longer than any of the two rows above) and eager (a table +should look formatted on every pressing on _Tab_ and _Enter_). However, the +newer algorithm differs from the older algorithm when starting editing a +mis-aligned table in an area where mis-aligned rows do not get into the +viewport: in this case the newer algorithm formats the table partly, in the +rows of the viewport, while the older algorithm re-formats the whole table on +every pressing of _Tab_ and _Enter_. In this case the whole table can be +formatted by pressing `gqq` in the Normal mode. + From ad6a3bceb6871e30e55e2dc64e1ca1c4595a1acb Mon Sep 17 00:00:00 2001 From: lyokha Date: Mon, 18 Mar 2019 17:49:13 +0300 Subject: [PATCH 030/216] the cause of the linear slowing down was fixed --- DesignNotes.wiki | 23 +++++++++++------------ autoload/vimwiki/tbl.vim | 23 ++++++++++++++--------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/DesignNotes.wiki b/DesignNotes.wiki index f9ef39c..a9f5662 100644 --- a/DesignNotes.wiki +++ b/DesignNotes.wiki @@ -171,18 +171,17 @@ and the shrunk current line, then the two lowest lines get aligned according to the topmost line (case 3). Performance of the newer formatting algorithm should not depend on the height -of the table (*beware*: something still makes table editing speed linear with -respect to its height, perhaps syntax tracking or some uncovered parts of the -formatting algorithm). The newer algorithm should also be consistent with -respect to user editing experience. Indeed, as soon as a table should normally -be edited linearly, row by row, dynamic formatting should be both fast +of the table. The newer algorithm should also be consistent with respect to +user editing experience. Indeed, as soon as a table should normally be edited +row by row from the top to the bottom, dynamic formatting should be both fast (watching only three rows in a table, re-formatting only when the shrunk current row gets longer than any of the two rows above) and eager (a table -should look formatted on every pressing on _Tab_ and _Enter_). However, the -newer algorithm differs from the older algorithm when starting editing a -mis-aligned table in an area where mis-aligned rows do not get into the -viewport: in this case the newer algorithm formats the table partly, in the -rows of the viewport, while the older algorithm re-formats the whole table on -every pressing of _Tab_ and _Enter_. In this case the whole table can be -formatted by pressing `gqq` in the Normal mode. +should look formatted on every press on _Tab_ and _Enter_). However, the newer +algorithm differs from the older algorithm when starting editing a mis-aligned +table in an area where mis-aligned rows do not get into the viewport: in this +case the newer algorithm will format the table partly (in the rows of the +viewport) until one of the being edited cells grows in length to a value big +enough to trigger the older algorithm and the whole table gets aligned. When +partial formatting is not desirable, the whole table can be formatted by +pressing `gqq` in the Normal mode. diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index 5c3f97d..0e67c68 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -205,7 +205,7 @@ function! s:col_count(lnum) endfunction -function! s:get_indent(lnum) +function! s:get_indent(lnum, depth) if !s:is_table(getline(a:lnum)) return endif @@ -220,6 +220,9 @@ function! s:get_indent(lnum) break endif let lnum -= 1 + if a:depth > 0 && lnum < a:lnum - a:depth + break + endif endwhile return indent @@ -272,9 +275,9 @@ function! s:get_rows(lnum, ...) endfunction -function! s:get_cell_aligns(lnum) +function! s:get_cell_aligns(lnum, depth) let aligns = {} - for [lnum, row] in s:get_rows(a:lnum) + for [lnum, row] in s:get_rows(a:lnum, a:depth) let found_separator = s:is_separator(row) if found_separator let cells = vimwiki#tbl#get_cells(row) @@ -353,7 +356,7 @@ function! s:get_aligned_rows(lnum, col1, col2, depth) endfor let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) endif - let aligns = s:get_cell_aligns(a:lnum) + let aligns = s:get_cell_aligns(a:lnum, a:depth) let result = [] for [lnum, row] in rows if s:is_separator(row) @@ -496,8 +499,9 @@ endfunction function! vimwiki#tbl#goto_next_col() let curcol = virtcol('.') let lnum = line('.') - let newcol = s:get_indent(lnum) - let rows = s:get_rows(lnum, 2) + let depth = 2 + let newcol = s:get_indent(lnum, depth) + let rows = s:get_rows(lnum, depth) let startlnum = rows[0][0] let cells = [] for [lnum, row] in rows @@ -530,8 +534,9 @@ endfunction function! vimwiki#tbl#goto_prev_col() let curcol = virtcol('.') let lnum = line('.') - let newcol = s:get_indent(lnum) - let rows = s:get_rows(lnum, 2) + let depth = 2 + let newcol = s:get_indent(lnum, depth) + let rows = s:get_rows(lnum, depth) let startlnum = rows[0][0] let cells = [] for [lnum, row] in rows @@ -637,7 +642,7 @@ function! vimwiki#tbl#format(lnum, ...) let col2 = 0 endif - let indent = s:get_indent(a:lnum) + let indent = s:get_indent(a:lnum, depth) if &expandtab let indentstring = repeat(' ', indent) else From c4b21b498e2896284eb2118e5510d8f07f20a64f Mon Sep 17 00:00:00 2001 From: Henry Qin Date: Mon, 18 Mar 2019 11:42:18 -0700 Subject: [PATCH 031/216] Convert DesignNotes to Markdown to fix display in GitHub. --- DesignNotes.wiki => DesignNotes.md | 45 +++++++++++++++--------------- 1 file changed, 22 insertions(+), 23 deletions(-) rename DesignNotes.wiki => DesignNotes.md (97%) diff --git a/DesignNotes.wiki b/DesignNotes.md similarity index 97% rename from DesignNotes.wiki rename to DesignNotes.md index a9f5662..5e7f957 100644 --- a/DesignNotes.wiki +++ b/DesignNotes.md @@ -1,10 +1,10 @@ -= Design Notes = +# Design Notes This file is meant to document design decisions and algorithms inside vimwiki which are too large for code comments, and not necessarily interesting to users. Please create a new section to document each behavior. -== Formatting tables == +## Formatting tables In vimwiki, formatting tables occurs dynamically, when navigating between cells and adding new rows in a table in the Insert mode, or statically, when pressing @@ -14,16 +14,16 @@ leaving Insert mode, provided variable `g:vimwiki_table_auto_fmt` is set. In this section, the original and the newer optimized algorithms of table formatting will be described and compared. -=== The older table formatting algorithm and why this is not optimal === +### The older table formatting algorithm and why this is not optimal Let's consider a simple example. Open a new file, say _tmp.wiki_, and create a new table with command `VimwikiTable`. This should create a blank table. -{{{ +``` | | | | | | |---|---|---|---|---| | | | | | | -}}} +``` Let's put the cursor in the first header column of the table, enter the Insert mode and type a name, say _Col1_. Then press _Tab_: the cursor will move to the @@ -31,11 +31,11 @@ second column of the header and the table will get aligned (in the context of the table formatting story, words _aligned_ and _formatted_ are considered as synonyms). Now the table looks as in the following snippet. -{{{ +``` | Col1 | | | | | |------|---|---|---|---| | | | | | | -}}} +``` Then, when moving cursor to the first data row (i.e. to the third line of the table below the separator line) and typing anything here and there while @@ -43,34 +43,34 @@ navigating using _Tab_ or _Enter_ (pressing this creates a new row below the current row), the table shall keep formatting. Below is a result of such a random edit. -{{{ +``` | Col1 | | | | | |------|-------|---|-------|----------| | | Data1 | | Data2 | | | | | | | New data | -}}} +``` The lowest row gets aligned when leaving the Insert mode. Let's copy _Data1_ (using `viwy` or another keystroke) and paste it (using `p`) in the second data row of the first column. Now the table looks mis-aligned (as we did not enter the Insert mode). -{{{ +``` | Col1 | | | | | |------|-------|---|-------|----------| | | Data1 | | Data2 | | | Data1 | | | | New data | -}}} +``` This is not a big problem though, because we can put the cursor at _any_ place in the table and press `gqq`: the table will get aligned. -{{{ +``` | Col1 | | | | | |-------|-------|---|-------|----------| | | Data1 | | Data2 | | | Data1 | | | | New data | -}}} +``` Now let's make real problems! Move the cursor to the lowest row and copy it with `yy`. Then 500-fold paste it with `500p`. Now the table very long. Move @@ -83,7 +83,7 @@ time _Tab_ or _Enter_ get pressed down, all rows in the table get visited to calculate a new alignment. Moreover, by design it may happen even more than once per one press! -{{{vim +```vim function! s:kbd_create_new_row(cols, goto_first) let cmd = "\o".s:create_empty_row(a:cols) let cmd .= "\:call vimwiki#tbl#format(line('.'))\" @@ -98,7 +98,7 @@ function! s:kbd_create_new_row(cols, goto_first) return cmd endfunction -}}} +``` Function `s:kbd_create_new_row()` is called when _Tab_ or _Enter_ get pressed. Formatting of the whole table happens in function `vimwiki#tbl#format()`. But @@ -107,25 +107,25 @@ variable `g:vimwiki_table_auto_fmt` is set. This means that formatting of the whole table is called on all those multiple interleaves between the Insert and the Normal mode in `s:kbd_create_new_row` (notice `\`, `o`, etc.). -=== The newer table formating algorithm === +### The newer table formating algorithm The newer algorithm was introduced to struggle against performance issues when formatting large tables. Let's take the table from the previous example in an intermediate state. -{{{ +``` | Col1 | | | | | |------|-------|---|-------|----------| | | Data1 | | Data2 | | | Data1 | | | | New data | -}}} +``` Then move the cursor to the first data row, copy it with `yy`, go down to the mis-aligned line, and press `5p`. Now we have a slightly bigger mis-aligned table. -{{{ +``` | Col1 | | | | | |------|-------|---|-------|----------| | | Data1 | | Data2 | | @@ -135,14 +135,14 @@ table. | | Data1 | | Data2 | | | | Data1 | | Data2 | | | | Data1 | | Data2 | | -}}} +``` Go down to the lowest, the 7th, data row and press `gq1`. Nothing happened. Let's go to the second or the third data row and press `gq1` once again. Now the table gets aligned. Let's undo formatting with `u`, go to the fourth row, and press `gq1`. Now the table should look like in the following snippet. -{{{ +``` | Col1 | | | | | |------|-------|---|-------|----------| | | Data1 | | Data2 | | @@ -152,7 +152,7 @@ and press `gq1`. Now the table should look like in the following snippet. | | Data1 | | Data2 | | | | Data1 | | Data2 | | | | Data1 | | Data2 | | -}}} +``` What a peculiar command! Does using it make any sense? Not much, honestly. Except it shows how the newer optimized table formatting algorithm works in the @@ -184,4 +184,3 @@ viewport) until one of the being edited cells grows in length to a value big enough to trigger the older algorithm and the whole table gets aligned. When partial formatting is not desirable, the whole table can be formatted by pressing `gqq` in the Normal mode. - From ad8e1d30bf217e2985671652960d28ecedb6ea75 Mon Sep 17 00:00:00 2001 From: Steven Stallion Date: Mon, 18 Mar 2019 14:35:28 -0700 Subject: [PATCH 032/216] Add g:vimwiki_create_link option to prevent link creation. Adds a new global option named create_link, which allows the user to control :VimwikiFollowLink behavior when attempting to follow a non-existent link. The original behavior of creating a new link is preserved. However, by setting this option to 0, new links will not be created when pressing return over regular text. Closes #528. --- autoload/vimwiki/base.vim | 2 +- autoload/vimwiki/vars.vim | 1 + doc/vimwiki.txt | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index bbb1963..4f6e234 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -1200,7 +1200,7 @@ function! vimwiki#base#follow_link(split, ...) else if a:0 >= 3 execute "normal! ".a:3 - else + elseif vimwiki#vars#get_global('create_link') call vimwiki#base#normalize_link(0) endif endif diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index d60a561..a9d82a2 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -145,6 +145,7 @@ function! s:read_global_settings_from_user() \ 'auto_chdir': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, \ 'autowriteall': {'type': type(0), 'default': 1, 'min': 0, 'max': 1}, \ 'conceallevel': {'type': type(0), 'default': 2, 'min': 0, 'max': 3}, + \ 'create_link': {'type': type(0), 'default': 1, 'min':0, 'max': 1}, \ 'diary_months': {'type': type({}), 'default': \ { \ 1: 'January', 2: 'February', 3: 'March', diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index e8de748..8b956c1 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -2541,6 +2541,18 @@ Value Description~ Default: 1 +------------------------------------------------------------------------------ +*g:vimwiki_create_link* + +Create target wiki page if it does not exist. See |:VimwikiFollowLink|. + +Value Description~ +0 Do not create target wiki page. +1 Create target wiki page. + +Default: 1 + + ------------------------------------------------------------------------------ *VimwikiLinkHandler* From e0f4ab8c5e59b92218e7479f18f6e4d58eaa4cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D1=91=D1=85=D0=B0?= Date: Mon, 18 Mar 2019 23:28:58 +0300 Subject: [PATCH 033/216] Revert implementation of function s:get_cell_aligns() This commit reverses a change to s:get_cell_aligns introduced by bdcfca1e5ce10b571d4ecacc9e2c3527f54fe226. --- autoload/vimwiki/tbl.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index 0e67c68..4cc81b7 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -275,9 +275,9 @@ function! s:get_rows(lnum, ...) endfunction -function! s:get_cell_aligns(lnum, depth) +function! s:get_cell_aligns(lnum) let aligns = {} - for [lnum, row] in s:get_rows(a:lnum, a:depth) + for [lnum, row] in s:get_rows(a:lnum) let found_separator = s:is_separator(row) if found_separator let cells = vimwiki#tbl#get_cells(row) @@ -356,7 +356,7 @@ function! s:get_aligned_rows(lnum, col1, col2, depth) endfor let max_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows) endif - let aligns = s:get_cell_aligns(a:lnum, a:depth) + let aligns = s:get_cell_aligns(a:lnum) let result = [] for [lnum, row] in rows if s:is_separator(row) From eb00d30d9b1d77c6252863cc18b68bb2893ead69 Mon Sep 17 00:00:00 2001 From: Steven Stallion Date: Thu, 12 Jul 2018 08:47:47 -0500 Subject: [PATCH 034/216] Initial commit --- autoload/vimwiki/base.vim | 26 ++++++++++++++++++++------ autoload/vimwiki/vars.vim | 14 +++++++++++--- doc/vimwiki.txt | 13 +++++++++++++ 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 79dcf47..141c796 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -197,7 +197,10 @@ function! vimwiki#base#resolve_link(link_text, ...) \ vimwiki#vars#get_wikilocal('ext', link_infos.index) endif else - let link_infos.filename .= vimwiki#vars#get_wikilocal('ext', link_infos.index) + let ext = fnamemodify(link_text, ':e') + if ext == '' " append ext iff one not already present + let link_infos.filename .= vimwiki#vars#get_wikilocal('ext', link_infos.index) + endif endif elseif link_infos.scheme ==# 'diary' @@ -350,9 +353,15 @@ function! vimwiki#base#generate_links() for link in links let abs_filepath = vimwiki#path#abs_path_of_link(link) if !s:is_diary_file(abs_filepath) - call add(lines, bullet. - \ s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'), - \ '__LinkUrl__', link, '')) + if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template') + else + let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate1') + endif + + let entry = s:safesubstitute(link_tpl, '__LinkUrl__', link, '') + let entry = s:safesubstitute(entry, '__LinkDescription__', link, '') + call add(lines, bullet. entry) endif endfor @@ -598,7 +607,12 @@ function! s:get_links(wikifile, idx) endif let syntax = vimwiki#vars#get_wikilocal('syntax', a:idx) - let rx_link = vimwiki#vars#get_syntaxlocal('wikilink', syntax) + if syntax == 'markdown' + let rx_link = vimwiki#vars#get_syntaxlocal('rxWeblink1MatchUrl', syntax) + else + let rx_link = vimwiki#vars#get_syntaxlocal('wikilink', syntax) + endif + let links = [] let lnum = 0 @@ -1870,7 +1884,7 @@ function! vimwiki#base#table_of_contents(create) let bullet = vimwiki#lst#default_symbol().' ' for [lvl, link, desc] in complete_header_infos if vimwiki#vars#get_wikilocal('syntax') == 'markdown' - let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template') + let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink2Template') else let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate2') endif diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index 7fa0914..1aa30f7 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -168,6 +168,7 @@ function! s:read_global_settings_from_user() \ 'listsyms': {'type': type(''), 'default': ' .oOX', 'min_length': 2}, \ 'listsym_rejected': {'type': type(''), 'default': '-', 'length': 1}, \ 'map_prefix': {'type': type(''), 'default': 'w'}, + \ 'markdown_link_ext': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, \ 'menu': {'type': type(''), 'default': 'Vimwiki'}, \ 'table_auto_fmt': {'type': type(0), 'default': 1, 'min': 0, 'max': 1}, \ 'table_mappings': {'type': type(0), 'default': 1, 'min': 0, 'max': 1}, @@ -689,10 +690,17 @@ function! s:populate_extra_markdown_vars() let mkd_syntax.rxWeblink1Prefix = '[' let mkd_syntax.rxWeblink1Suffix = ')' let mkd_syntax.rxWeblink1Separator = '](' + let mkd_syntax.rxWeblink1Ext = '' + if vimwiki#vars#get_global('markdown_link_ext') + let mkd_syntax.rxWeblink1Ext = vimwiki#vars#get_wikilocal('ext') + endif " [DESCRIPTION](URL) let mkd_syntax.Weblink1Template = mkd_syntax.rxWeblink1Prefix . '__LinkDescription__'. - \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'. + \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'. mkd_syntax.rxWeblink1Ext. \ mkd_syntax.rxWeblink1Suffix + " [DESCRIPTION](ANCHOR) + let mkd_syntax.Weblink2Template = mkd_syntax.rxWeblink1Prefix . '__LinkDescription__'. + \ mkd_syntax.rxWeblink1Separator. '__LinkUrl__'. mkd_syntax.rxWeblink1Suffix let valid_chars = '[^\\]' @@ -705,8 +713,8 @@ function! s:populate_extra_markdown_vars() " 1. [DESCRIPTION](URL) " 1a) match [DESCRIPTION](URL) let mkd_syntax.rxWeblink1 = mkd_syntax.rxWeblink1Prefix. - \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1Separator. - \ mkd_syntax.rxWeblink1Descr . mkd_syntax.rxWeblink1Suffix + \ mkd_syntax.rxWeblink1Descr . mkd_syntax.rxWeblink1Separator. + \ mkd_syntax.rxWeblink1Url . mkd_syntax.rxWeblink1Suffix " 1b) match URL within [DESCRIPTION](URL) let mkd_syntax.rxWeblink1MatchUrl = mkd_syntax.rxWeblink1Prefix. \ mkd_syntax.rxWeblink1Descr. mkd_syntax.rxWeblink1Separator. diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 152b146..aba87e8 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -2553,6 +2553,19 @@ Value Description~ Default: 1 +------------------------------------------------------------------------------ +*g:vimwiki_markdown_link_ext* + +Append wiki file extension to links in Markdown. This is needed for +compatibility with other Markdown tools. + +Value Description~ +0 Do not append wiki file extension. +1 Append wiki file extension. + +Default: 0 + + ------------------------------------------------------------------------------ *VimwikiLinkHandler* From 9964026586c1241e8465330e4a3541e6493f5c1b Mon Sep 17 00:00:00 2001 From: Samir Benmendil Date: Fri, 29 Apr 2016 12:06:31 +0100 Subject: [PATCH 035/216] Don't override existing mappings --- plugin/vimwiki.vim | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim index 17c43ac..350a560 100644 --- a/plugin/vimwiki.vim +++ b/plugin/vimwiki.vim @@ -309,43 +309,43 @@ command! VimwikiShowVersion call s:get_version() let s:map_prefix = vimwiki#vars#get_global('map_prefix') -if !hasmapto('VimwikiIndex') +if !hasmapto('VimwikiIndex') && maparg(s:map_prefix.'w', 'n') == "" exe 'nmap '.s:map_prefix.'w VimwikiIndex' endif nnoremap + + ------------------------------------------------------------------------------ From ce4074aeb9a7d174bf501018acee096701c2156a Mon Sep 17 00:00:00 2001 From: tinmarino Date: Mon, 28 Oct 2019 19:14:50 +0100 Subject: [PATCH 144/216] Test: Add vader tests for fixing going back links on same file --- test/link_markdown_multiple_per_file.vader | 225 +++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 test/link_markdown_multiple_per_file.vader diff --git a/test/link_markdown_multiple_per_file.vader b/test/link_markdown_multiple_per_file.vader new file mode 100644 index 0000000..c99e48c --- /dev/null +++ b/test/link_markdown_multiple_per_file.vader @@ -0,0 +1,225 @@ +Include: vader_includes/vader_setup.vader + +Given vimwiki (Internal links + one link to filenew): + # Contents + + - [Test1](#Test1) + - [Test2](#Test2) + + # Test1 + + - [Test1](#Test1) + - [Test2](#Test2) + - [filenew](filenew) + + # Test2 + + - [Test1](#Test1) + - [Test2](#Test2) + - [filenew](filenew) + +Execute (Set filename wiki_test.md): + file wiki_test.md + call SetSyntax('markdown') + +Do (Navigate with ): + A more Contents\ + \ + \ + A more Test1\ + \ + \ + \ + A more Test2\ + +Expect (Content added to titles): + # Contents more Contents + + - [Test1](#Test1) + - [Test2](#Test2) + + # Test1 more Test1 + + - [Test1](#Test1) + - [Test2](#Test2) + - [filenew](filenew) + + # Test2 more Test2 + + - [Test1](#Test1) + - [Test2](#Test2) + - [filenew](filenew) + +Do (Navigate with and and come back with ): + \ + \ +# Cursor at Test1 + \ + \ + \ +# Cursor at Test2 + \ + \ + \ +# Cursor at Test2/filenew + A not yet\ + \ +# Cursor at Test1/test2 + A near Test1/test2 + \ + \ +# Cursor at Contents/test1 + A near Contents/test1 + \ + +Expect (Vimwiki links): + # Contents + + - [Test1](#Test1) near Contents/test1 + - [Test2](#Test2) + + # Test1 + + - [Test1](#Test1) + - [Test2](#Test2) near Test1/test2 + - [filenew](filenew) + + # Test2 + + - [Test1](#Test1) + - [Test2](#Test2) + - [filenew](filenew) not yet + +Do (Navigate with comeback with from filenew): + \ + A first shot\ + 0\ +# Cursor at Contents/test1 + \ + \ + \ + A first shot\ + 0\ +# Cursor at Test1/test2 + \ + G +# Cursor at Test2/filenew + A first shot\ + 0\ +# Cursor at Test2/filenew + \ +# Cursor in filenew (a new file) + A anything in filenew: empirically it does not count\ + \ +# Cursor at Test2/filenew + \ +# Cursor at Test1/test2 + \ +# Cursor at Contents/test1 + A second shot + +Expect (Just Contents/test1 got the second shot): + # Contents + + - [Test1](#Test1) first shot second shot + - [Test2](#Test2) + + # Test1 + + - [Test1](#Test1) + - [Test2](#Test2) first shot + - [filenew](filenew) + + # Test2 + + - [Test1](#Test1) + - [Test2](#Test2) + - [filenew](filenew) first shot + +Execute (Delete filenew buffer): + bd! /testplugin/filenew.md + +Do (Navigate with comeback with too far): + \ +# Cursor at Contents/test1 + \ + \ + \ +# Cursor at Test1/test2 + \ + \ +# Cursor at Test2/test1 + \ + \ + \ +# Cursor at Test1/test2 + \ + A first test2\ + \ +# Cursor at Test2/test1 + \ + A first test1\ +# Back + \ +# Cursor at Test2/test1 + A second test2/test1\ + \ +# Cursor at Test1/test2 + A second test1/test2\ + \ +# Cursor at Test2/test1 + \ +# Cursor at Test1/test2 + \ +# Cursor at Contents/test1 +# Finished + \ + \ + \ + \ + A 1\ + \ + A 2\ + \ + A 3\ + \ + A 4\ + +Expect (After too many , cursor stays at the first spot in first file: Contents/test1): + # Contents + + - [Test1](#Test1) 1 2 3 4 + - [Test2](#Test2) + + # Test1 first test1 + + - [Test1](#Test1) + - [Test2](#Test2) second test1/test2 + - [filenew](filenew) + + # Test2 first test2 + + - [Test1](#Test1) second test2/test1 + - [Test2](#Test2) + - [filenew](filenew) + +Given vimwiki (link to self): + - [Bad link](Very bad.html) + - [My own file](wiki_test) + - [Test1](#Test1) + - [Test2](#Test2) + +Do (Follow link to self and append chars): + \ + \ + \ + a this_is_18_chars \ + +Expect (Some chars appended at self link): + - [Bad link](Very bad.html) + - [ this_is_18_chars My own file](wiki_test) + - [Test1](#Test1) + - [Test2](#Test2) + + +Include: vader_includes/vader_teardown.vader From c48637fd992b2ae624c5615e7089d2b69faca412 Mon Sep 17 00:00:00 2001 From: Michael Brauweiler Date: Fri, 29 Nov 2019 15:03:27 +0800 Subject: [PATCH 145/216] Add better echoing of custom wiki2html script This commit adds a check to the call of the wiki2html script, so that it is only echoed if it actually produces output. --- autoload/vimwiki/html.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index fca30db..80e5164 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -1437,7 +1437,7 @@ endfunction function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) call vimwiki#path#mkdir(a:path) - echomsg system(vimwiki#vars#get_wikilocal('custom_wiki2html'). ' '. + let output = system(vimwiki#vars#get_wikilocal('custom_wiki2html'). ' '. \ a:force. ' '. \ vimwiki#vars#get_wikilocal('syntax'). ' '. \ strpart(vimwiki#vars#get_wikilocal('ext'), 1). ' '. @@ -1454,6 +1454,10 @@ function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) \ shellescape(s:root_path(vimwiki#vars#get_bufferlocal('subdir'))) : '-'). ' '. \ (len(vimwiki#vars#get_wikilocal('custom_wiki2html_args')) > 0 ? \ vimwiki#vars#get_wikilocal('custom_wiki2html_args') : '-')) + " Echo if non void + if output !~ "^\s*$" + echomsg output + endif endfunction From 460fcb692e562c13f740e6e89864bbf40d018805 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 2 Dec 2019 21:59:32 -0700 Subject: [PATCH 146/216] Make generation functions compatible with older vims. PR #634, PR #635, and PR #636 introduced new features that broke compatibility with older version of Vim. This modifies those changes to ensure compatibility. Closes #781. Removes usage of funcref(), closure. Fixes filter() call. Made globpath calls not use the list argument. Unlet a variable that is reused (sticky type checking) v7.4.1989 modified filter() to accept a Funcref v7.4.2120 Added function "closure" argument v7.4.2137 add funcref() --- autoload/vimwiki/base.vim | 36 +++++++++++++++++++----------------- autoload/vimwiki/diary.vim | 5 +++-- autoload/vimwiki/tags.vim | 14 +++++++++----- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index e18d724..0e895b0 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -380,7 +380,8 @@ endfunction function! vimwiki#base#generate_links(create) - function! Generator() closure + let GeneratorLinks = copy(l:) + function! GeneratorLinks.f() let lines = [] let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0) @@ -413,7 +414,7 @@ function! vimwiki#base#generate_links(create) let links_rx = '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)' call vimwiki#base#update_listing_in_buffer( - \ funcref('Generator'), + \ GeneratorLinks, \ vimwiki#vars#get_global('links_header'), \ links_rx, \ line('$')+1, @@ -489,17 +490,15 @@ function! vimwiki#base#find_files(wiki_nr, directories_only) else let pattern = '**/*'.ext endif - let files = globpath(root_directory, pattern, 0, 1) + let files = split(globpath(root_directory, pattern)) + " filter excluded files before returning - function! ExcludeFiles(idx, val) closure - for pattern in vimwiki#vars#get_wikilocal('exclude_files') - if index(globpath(root_directory, pattern, 0, 1), a:val) != -1 - return 0 - endif - endfor - return 1 - endfunction - return filter(files, funcref('ExcludeFiles')) + for pattern in vimwiki#vars#get_wikilocal('exclude_files') + let efiles = split(globpath(root_directory, pattern)) + let files = filter(files, 'index(efiles, v:val) == -1') + endfor + + return files endfunction @@ -1209,7 +1208,7 @@ function! vimwiki#base#update_listing_in_buffer(Generator, start_header, let lines_diff += 1 endfor endif - for string in a:Generator() + for string in a:Generator.f() keepjumps call append(start_lnum - 1, string) let start_lnum += 1 let lines_diff += 1 @@ -1999,15 +1998,18 @@ function! vimwiki#base#table_of_contents(create) endif endif - function! Generator() closure + " use a dictionary function for closure like capability + " copy all local variables into dict (add a: if arguments are needed) + let GeneratorTOC = copy(l:) + function! GeneratorTOC.f() let numbering = vimwiki#vars#get_global('html_header_numbering') let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]] let complete_header_infos = [] - for header in headers + for header in self.headers let h_text = header[2] let h_level = header[1] " don't include the TOC's header itself - if h_text ==# toc_header_text + if h_text ==# self.toc_header_text continue endif let headers_levels[h_level-1] = [h_text, headers_levels[h_level-1][1]+1] @@ -2050,7 +2052,7 @@ function! vimwiki#base#table_of_contents(create) let links_rx = '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)' call vimwiki#base#update_listing_in_buffer( - \ funcref('Generator'), + \ GeneratorTOC, \ toc_header_text, \ links_rx, \ 1, diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim index 45760ae..adea893 100644 --- a/autoload/vimwiki/diary.vim +++ b/autoload/vimwiki/diary.vim @@ -312,7 +312,8 @@ endfunction function! vimwiki#diary#generate_diary_section() - function! Generator() closure + let GeneratorDiary = copy(l:) + function! GeneratorDiary.f() let lines = [] let links_with_captions = s:read_captions(s:get_diary_files()) @@ -392,7 +393,7 @@ function! vimwiki#diary#generate_diary_section() \ '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)' call vimwiki#base#update_listing_in_buffer( - \ funcref('Generator'), + \ GeneratorDiary, \ vimwiki#vars#get_wikilocal('diary_header'), \ content_rx, \ 1, diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index 511b11e..d3f0160 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -303,8 +303,11 @@ function! vimwiki#tags#generate_tags(create, ...) abort let specific_tags = a:000 let header_level = vimwiki#vars#get_global('tags_header_level') - function! Generator() closure - let need_all_tags = empty(specific_tags) + " use a dictionary function for closure like capability + " copy all local variables into dict (add a: if arguments are needed) + let GeneratorTags = copy(l:) + function! GeneratorTags.f() + let need_all_tags = empty(self.specific_tags) let metadata = s:load_tags_metadata() " make a dictionary { tag_name: [tag_links, ...] } @@ -317,17 +320,18 @@ function! vimwiki#tags#generate_tags(create, ...) abort let tags_entries[entry.tagname] = [entry.link] endif endfor + unlet entry " needed for older vims with sticky type checking since name is reused endfor let lines = [] let bullet = repeat(' ', vimwiki#lst#get_list_margin()).vimwiki#lst#default_symbol().' ' for tagname in sort(keys(tags_entries)) - if need_all_tags || index(specific_tags, tagname) != -1 + if need_all_tags || index(self.specific_tags, tagname) != -1 if len(lines) > 0 call add(lines, '') endif - let tag_tpl = printf('rxH%d_Template', header_level + 1) + let tag_tpl = printf('rxH%d_Template', self.header_level + 1) call add(lines, s:safesubstitute(vimwiki#vars#get_syntaxlocal(tag_tpl), '__Header__', tagname, '')) if vimwiki#vars#get_wikilocal('syntax') == 'markdown' @@ -363,7 +367,7 @@ function! vimwiki#tags#generate_tags(create, ...) abort \ '\%(^\s*$\)\|\%('.vimwiki#vars#get_syntaxlocal('rxListBullet').'\)' call vimwiki#base#update_listing_in_buffer( - \ funcref('Generator'), + \ GeneratorTags, \ vimwiki#vars#get_global('tags_header'), \ links_rx, \ line('$')+1, From eb26a66be551f82dbeaa7bfbbd424960ef6a6fae Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 13 Dec 2019 12:59:59 -0700 Subject: [PATCH 147/216] Add check to generate_tags() to ensure a header is present. Prior to this fix a file with tags present before any header would result in vim errors. Now a single Vimwiki message is printed to alert the user of the issue. --- autoload/vimwiki/tags.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index d3f0160..3a63317 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -344,6 +344,10 @@ function! vimwiki#tags#generate_tags(create, ...) abort if vimwiki#vars#get_wikilocal('syntax') == 'markdown' let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink3Template') let link_infos = vimwiki#base#resolve_link(taglink) + if empty(link_infos.anchor) + echom 'Vimwiki Error: Tags must appear after a header.' + return [] + endif let link_caption = split(link_infos.anchor, '#', 0)[-1] let link_text = split(taglink, '#', 1)[0] From 4f648b6567a813646517fcb29a7bbd925d6d3d5c Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 13 Dec 2019 19:58:08 -0700 Subject: [PATCH 148/216] Modify how tests are run to improve overall speed. A Vader issue causes problems with the test results when using the location list. Because of this the tests were modified to run 1 test file per vim instance instead of running all tests in a single vim instance. This resulted in signficant slow down in test execution time. To speed up execution time only specific tests are run individually now. --- test/Readme.md | 3 +++ test/{ => independent_runs}/search.vader | 4 ++-- test/independent_runs/vader_setup | 1 + test/independent_runs/vader_teardown | 1 + test/run_tests.sh | 11 ++++++++++- 5 files changed, 17 insertions(+), 3 deletions(-) rename test/{ => independent_runs}/search.vader (96%) create mode 120000 test/independent_runs/vader_setup create mode 120000 test/independent_runs/vader_teardown diff --git a/test/Readme.md b/test/Readme.md index a91681e..27747b4 100644 --- a/test/Readme.md +++ b/test/Readme.md @@ -50,3 +50,6 @@ plugin source files. For more information run `./run_tests.sh -h`. `Vim: Error reading input, exiting...` - Probably need to look into this more and determine if the issue is Vader, Neovim, or Docker. +2. Vader does not play nice with the location list. Tests that use the location + list should be placed in `independent_runs/`. + - [Vader Issue #199](https://github.com/junegunn/vader.vim/issues/199) diff --git a/test/search.vader b/test/independent_runs/search.vader similarity index 96% rename from test/search.vader rename to test/independent_runs/search.vader index 7ea374e..0cf0f66 100644 --- a/test/search.vader +++ b/test/independent_runs/search.vader @@ -1,4 +1,4 @@ -Include: vader_includes/vader_setup.vader +Include: vader_setup Execute (Setup search testing wrapper): function! TestSearch(search_command, test_name) @@ -63,4 +63,4 @@ Execute (Search failure message): redir END Assert match(output, 'VimwikiSearch: No match found.') > -1, "expected custom error" -Include: vader_includes/vader_teardown.vader +Include: vader_teardown diff --git a/test/independent_runs/vader_setup b/test/independent_runs/vader_setup new file mode 120000 index 0000000..a3289bd --- /dev/null +++ b/test/independent_runs/vader_setup @@ -0,0 +1 @@ +../vader_includes/vader_setup.vader \ No newline at end of file diff --git a/test/independent_runs/vader_teardown b/test/independent_runs/vader_teardown new file mode 120000 index 0000000..35ddc04 --- /dev/null +++ b/test/independent_runs/vader_teardown @@ -0,0 +1 @@ +../vader_includes/vader_teardown.vader \ No newline at end of file diff --git a/test/run_tests.sh b/test/run_tests.sh index c96f84e..6e8387a 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -36,11 +36,20 @@ runVader() { echo "" echo "Running version: $v" vim="/vim-build/bin/$v -u test/vimrc -i NONE" - test_cmd="for VF in test/*.vader; do $vim \"+Vader! \$VF\"; done" + test_cmd="for VF in test/independent_runs/*.vader; do $vim \"+Vader! \$VF\"; done" + set -o pipefail + + # tests that must be run in individual vim instances + # see README.md for more information docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \ /bin/bash -c "$test_cmd" 2>&1 | vader_filter | vader_color + + # remaining tests + docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \ + "$v" -u test/vimrc -i NONE "+Vader! test/*" 2>&1 | vader_filter | vader_color set +o pipefail + done } From fb5d2f3f8274d3ecd536d03a72b1f66ec0827b56 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 13 Dec 2019 12:55:58 -0700 Subject: [PATCH 149/216] Move notes about vim patches to readme. Add some info on additonal patches. --- Dockerfile | 4 ---- test/{Readme.md => README.md} | 11 +++++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) rename test/{Readme.md => README.md} (83%) diff --git a/Dockerfile b/Dockerfile index 988cdd1..3e83bfc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,10 +12,6 @@ RUN pip3 install --upgrade pip setuptools RUN pip3 install vim-vint RUN git clone https://github.com/junegunn/vader.vim vader -# Notable versions: -# v7.4.1546 sticky type checking removed (allow a variables type to change) -# v7.3.831 getbufvar added a default value -# v8.0 async jobs and timers RUN install_vim -tag v7.3.429 -name vim_7.3.429 -build \ -tag v7.4.1099 -name vim_7.4.1099 -build \ -tag v7.4.1546 -name vim_7.4.1546 -build \ diff --git a/test/Readme.md b/test/README.md similarity index 83% rename from test/Readme.md rename to test/README.md index 27747b4..40eb52b 100644 --- a/test/Readme.md +++ b/test/README.md @@ -53,3 +53,14 @@ plugin source files. For more information run `./run_tests.sh -h`. 2. Vader does not play nice with the location list. Tests that use the location list should be placed in `independent_runs/`. - [Vader Issue #199](https://github.com/junegunn/vader.vim/issues/199) + +## Notable Vim patches + +- `v7.3.831` `getbufvar` added a default value +- `v7.4.236` add ability to check patch with has("patch-7.4.123") +- `v7.4.1546` sticky type checking removed (allow a variables type to change) +- `v7.4.1989` `filter()` accepts a Funcref +- `v7.4.2044` lambda support added - see `:h expr-lambda` +- `v7.4.2120` Added function "closure" argument +- `v7.4.2137` add `funcref()` +- `v8.0` async jobs and timers From c58d5da0499c61ce0f707e3fa7577bb4f981fc17 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 2 Dec 2019 12:53:41 -0700 Subject: [PATCH 150/216] Set default ext2syntax values for markdown and mediawiki. Closes #769. Also fixes an error when adding missing '.' to mapped extensions. The previous behavior tried to access a value after it was removed from the dictionary. --- autoload/vimwiki/vars.vim | 14 +++++++++----- doc/vimwiki.txt | 15 ++++++++++----- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index f9d2bfb..b428e38 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -157,7 +157,8 @@ function! s:read_global_settings_from_user() \ 10: 'October', 11: 'November', 12: 'December' \ }}, \ 'dir_link': {'type': type(''), 'default': ''}, - \ 'ext2syntax': {'type': type({}), 'default': {}}, + \ 'ext2syntax': {'type': type({}), 'default': {'.md': 'markdown', '.mkdn': 'markdown', + \ '.mdwn': 'markdown', '.mdown': 'markdown', '.markdown': 'markdown', '.mw': 'media'}}, \ 'folding': {'type': type(''), 'default': '', 'possible_values': ['', 'expr', 'syntax', \ 'list', 'custom', ':quick', 'expr:quick', 'syntax:quick', 'list:quick', \ 'custom:quick']}, @@ -245,16 +246,19 @@ endfunction function! s:normalize_global_settings() let keys = keys(g:vimwiki_global_vars.ext2syntax) for ext in keys + " for convenience, we also allow the term 'mediawiki' + if g:vimwiki_global_vars.ext2syntax[ext] ==# 'mediawiki' + let g:vimwiki_global_vars.ext2syntax[ext] = 'media' + endif + " ensure the file extensions in ext2syntax start with a dot + " make sure this occurs after anything else that tries to access + " the entry using the index 'ext' since this removes that index if ext[0] != '.' let new_ext = '.' . ext let g:vimwiki_global_vars.ext2syntax[new_ext] = g:vimwiki_global_vars.ext2syntax[ext] call remove(g:vimwiki_global_vars.ext2syntax, ext) endif - " for convenience, we also allow the term 'mediawiki' - if g:vimwiki_global_vars.ext2syntax[ext] ==# 'mediawiki' - let g:vimwiki_global_vars.ext2syntax[ext] = 'media' - endif endfor " ensure key_mappings dictionary has all required keys diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index dd8dd6b..6b9c6cb 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -2657,13 +2657,18 @@ E.g.: > \ '.mkd': 'markdown', \ '.wiki': 'media'} -An extension that is registered with Vimwiki can trigger creation of a -|vimwiki-temporary-wiki| with the associated syntax. File extensions used in -|g:vimwiki_list| are automatically registered with Vimwiki using the default -syntax. +An extension that is registered with Vimwiki can trigger creation of +a |vimwiki-temporary-wiki|. File extensions used in |g:vimwiki_list| are +automatically registered with Vimwiki using the default syntax. Extensions +mapped with this option will instead use the mapped syntax. -Default: {} +Default: > + {'.md': 'markdown', '.mkdn': 'markdown', + \ '.mdwn': 'markdown', '.mdown': 'markdown', + \ '.markdown': 'markdown', '.mw': 'media'}}, +Note: setting this option will overwrite the default values so include them if +desired. ------------------------------------------------------------------------------ *g:vimwiki_menu* From 58331993c7e7c5bbae83d2734c0ffc7944a4f944 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Sat, 14 Dec 2019 21:08:32 -0700 Subject: [PATCH 151/216] Update changelog --- doc/vimwiki.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 6b9c6cb..e98afe6 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3486,6 +3486,8 @@ https://github.com/vimwiki-backup/vimwiki/issues. 2.5 (in progress)~ New:~ + * Add test framework (vader, vint, vim-testbed) + * Issue #769. Set default values for |g:vimwiki_ext2syntax|. * PR #735: Make list-toggling work properly even when code blocks are embedded within the list in Markdown mode. * PR #711: Allow forcing VimwikiAll2HTML with ! @@ -3553,9 +3555,12 @@ Removed:~ point. Fixed:~ + * Issue #781: Compatablity fixes for older versions of Vim. + * Issue #691: Allow |:VimwikiGoBackLink| to go back multiple times. + * Update MathJax CDN loading instructions. * Issue #212: Don't treat comment characters within code blocks as headers. - * Issue #420: Add error handling to VimwikiSearch + * Issue #420: Add error handling to |:VimwikiSearch| * PR #744: Fix typo in vimwiki_list_manipulation * Issue #715: s:clean_url is compatible with vim pre 7.4.1546 (sticky type checking) @@ -3819,7 +3824,7 @@ http://code.google.com/p/vimwiki/issues/list highlighted when open wiki files. * Issue 146: Filetype difficulty with ".txt" as a vimwiki extension. * Issue 148: There are no mailto links. - * Issue 151: Use location list instead of quickfix list for :VimwikiSearch + * Issue 151: Use location list instead of quickfix list for |:VimwikiSearch| command result. Use :lopen instead of :copen, :lnext instead of :cnext etc. * Issue 152: Add the list of HTML files that would not be deleted after From 36faec1de98d8063afc86a1a4d43c9a37c2e5091 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Sat, 14 Dec 2019 21:37:28 -0700 Subject: [PATCH 152/216] Merge tinmarino-dev_vader. Add new vader tests. Adds tests for the commands: VimwikiTOC, VimwikiGenerateLinks, VimwikiDiaryGenerateLinks, VimwikiRebuildTags, VimwikiGenerateTags, VimwikiGoto Add syntax tests, key mapping tests and table auto format tests. New helper function in vader setup file. The default wikis setup in the test vimrc are now mapped to the Docker containers test user's home directory. The test user does not have access to write to other locations. --- test/README.md | 9 + test/command_generate_links.vader | 108 ++++++ test/command_generate_tags.vader | 75 ++++ test/command_goto.vader | 29 ++ test/command_toc.vader | 148 ++++++++ test/independent_runs/map.vader | 460 +++++++++++++++++++++++ test/resources/testmarkdown/buzz_bozz.md | 3 + test/resources/testmarkdown/index.md | 59 +++ test/syntax.vader | 291 ++++++++++++++ test/table_autoformat.vader | 157 ++++++++ test/vader_includes/vader_setup.vader | 26 ++ test/vimrc | 18 +- 12 files changed, 1377 insertions(+), 6 deletions(-) create mode 100644 test/command_generate_links.vader create mode 100644 test/command_generate_tags.vader create mode 100644 test/command_goto.vader create mode 100644 test/command_toc.vader create mode 100644 test/independent_runs/map.vader create mode 100644 test/resources/testmarkdown/buzz_bozz.md create mode 100644 test/resources/testmarkdown/index.md create mode 100644 test/syntax.vader create mode 100644 test/table_autoformat.vader diff --git a/test/README.md b/test/README.md index 40eb52b..11108e0 100644 --- a/test/README.md +++ b/test/README.md @@ -43,6 +43,15 @@ automatically run all tests for all installed vim versions. The vim/nvim versions are parsed from the Dockerfile. This script will also run `Vint` for all plugin source files. For more information run `./run_tests.sh -h`. + +## Inside the container + +* `$USER` -> `vimtest` : unprivileged => very hard to mess up things +* `$HOME` -> `/home/vimtest` : but it is readonly ! +* `$PWD` -> `/testplugin` : mapped to vimwiki plugin root directory + +For more information, read the [base docker image](https://github.com/tweekmonster/vim-testbed) + ## Known Issues 1. neovim v0.2.x does not work correctly with Vader output from the docker diff --git a/test/command_generate_links.vader b/test/command_generate_links.vader new file mode 100644 index 0000000..c62938e --- /dev/null +++ b/test/command_generate_links.vader @@ -0,0 +1,108 @@ +Include: vader_includes/vader_setup.vader + +Execute (Copy Wiki's Resources): + Log "Start: Copy Resources" + call CopyResources() + +# 1 VimwikiGenerateLinks +########################## + +Execute (New Command): + Log "1. Testing VimwikiGenerateLinks" + set sw=4 + AssertEqual 4, &sw + + +Given (Void): + +Execute (Goto markdown resource wiki): + VimwikiIndex 2 + AssertEqual $HOME . '/testmarkdown/index.md', expand('%') + +Execute (Edit Test file / VimwikiGenerateLinks): + edit $HOME/testmarkdown/Test.md + AssertEqual $HOME . '/testmarkdown/Test.md', expand('%') + AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + + VimwikiGenerateLinks + +Expect (The links with a header): + + + # Generated Links + + - [Buzz Bozz](buzz_bozz) + - [Test Wiki](index) + +Do (Save Test.md && Re-GenerateLinks): + :edit $HOME/testmarkdown/Test.md\ + :set bt=\ + :write %\ + :VimwikiGenerateLinks\ + +Expect (The links with a header with file Test): + + + # Generated Links + + - [Generated Links](Test) + - [Buzz Bozz](buzz_bozz) + - [Test Wiki](index) + + +# 2 VimwikiDiaryGenerateLinks +############################# + +Execute (New Command): + Log "2. Testing VimwikiDiaryGenerateLinks TODO" + set sw=4 + AssertEqual 4, &sw + +Do (Edit diary/2019-12-10): + :edit $HOME/testmarkdown/diary/2019-12-10.md\ + iinformative content\ + :call WriteMe()\ + +Do (Edit and save diary/2019-07-13): + :edit $HOME/testmarkdown/diary/2019-07-13.md\ + i# informative title\ + :call WriteMe()\ + +Do (Edit and save diary/2018-03-01): + :edit $HOME/testmarkdown/diary/2019-03-01.md\ + :call WriteMe()\ + + +Do (Edit diary.md && GenerateDiaryLinks): + :edit $HOME/testmarkdown/diary/diary.md\ + :VimwikiDiaryGenerateLinks\ + +Expect (diary index generated): + # Diary + + ## 2019 + + ### December + + - [2019-12-10](2019-12-10) + + ### July + + - [informative title](2019-07-13) + + ### March + + - [2019-03-01](2019-03-01) + + +Execute (Clean): + Log "End: Clean" + call system("rm $HOME/testmarkdown/diary/2019-12-10.md") + call system("rm $HOME/testmarkdown/diary/2019-07-13.md") + call system("rm $HOME/testmarkdown/diary/2019-03-01.md") + call system("rm $HOME/testmarkdown/diary/diary.md") + + +Include: vader_includes/vader_teardown.vader +# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= diff --git a/test/command_generate_tags.vader b/test/command_generate_tags.vader new file mode 100644 index 0000000..ab0a7c4 --- /dev/null +++ b/test/command_generate_tags.vader @@ -0,0 +1,75 @@ +Include: vader_includes/vader_setup.vader + + +Execute (Copy Wiki's Resources): + Log "Start: Copy Resources" + call CopyResources() + + +# 1 VimwikiRebuildTags +###################### + +Execute (New Command): + Log "1 Testing VimwikiRebuildTags" + set sw=4 + AssertEqual 4, &sw + + +Execute (Edit Test-Tag.md): + edit $HOME/testmarkdown/Test-Tag.md + AssertEqual $HOME . '/testmarkdown/Test-Tag.md', expand('%') + AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + +Do (Add tag <- with `Do` trick to save file): + :edit $HOME/testmarkdown/Test-Tag.md\ + :call append(0, ":test-tag:")\ + :set bt=\ + :write %\ + :VimwikiRebuildTags\ + +Execute (Edit .vimwiki_tags): + edit $HOME/testmarkdown/.vimwiki_tags + AssertEqual $HOME . '/testmarkdown/.vimwiki_tags', expand('%') + AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + +# Carefull, following 2 lines have tabs: `this is the way` +Expect (Tag file with test-tag): + !_TAG_FILE_SORTED 1 + test-tag Test-Tag.md 1;" vimwiki:Test-Tag\tTest-Tag + + +# 2 VimwikiGenerateTags +######################### + +Execute (New Command): + Log "2 Testing VimwikiGenerateTags TODO" + set sw=4 + AssertEqual 4, &sw + +Given (Void): + +Do (Edit Test-Tag && GenerateTags): + :edit $HOME/testmarkdown/Test-Tag.md\ + :call append(0, ':Tag:')\ + :call append(0, '')\ + :call append(0, 'Test Here')\ + :call append(0, '')\ + :call append(0, '# A header')\ + :call WriteMe()\ + :VimwikiRebuildTags\ + :VimwikiGenerateTags\ + :Log "TODO give the expect block when VimwikigenerateTags is working"\ + + +Execute (Clean Test-Tag and .vimwiki_tags): + Log "End: Clean" + call system("rm $HOME/testmarkdown/Test.md") + call system("rm $HOME/testmarkdown/.vimwiki_tags") + call system("rm $HOME/testmarkdown/Test-Tag.md") + call DeleteHiddenBuffers() + + +Include: vader_includes/vader_teardown.vader +# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= diff --git a/test/command_goto.vader b/test/command_goto.vader new file mode 100644 index 0000000..eeaf569 --- /dev/null +++ b/test/command_goto.vader @@ -0,0 +1,29 @@ +Include: vader_includes/vader_setup.vader + + +Execute (Copy Wiki's Resources): + Log "Start: Copy Resources" + call CopyResources() + + +Execute (VimwikiGoto buzz_bozz && Assert): + VimwikiIndex 2 + VimwikiGoto buzz_bozz + AssertEqual $HOME . '/testmarkdown/buzz_bozz.md', expand('%') + +Do (VimwikiGoto buzz_bozz && Assert): + :VimwikiIndex 2\ + :VimwikiGoto\ + buzz_bozz\ + :AssertEqual $HOME . '/testmarkdown/buzz_bozz.md', expand('%')\ + + +Execute (:VimwikiGoto + Completion): + VimwikiIndex 2 + AssertEqual $HOME . '/testmarkdown/index.md', expand('%') + let s_complete=vimwiki#base#get_globlinks_escaped() + Assert -1 != stridx(s_complete, 'buzz_bozz') + + +Include: vader_includes/vader_teardown.vader +# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= diff --git a/test/command_toc.vader b/test/command_toc.vader new file mode 100644 index 0000000..b9265c9 --- /dev/null +++ b/test/command_toc.vader @@ -0,0 +1,148 @@ +Include: vader_includes/vader_setup.vader + +Execute (Reset TOC header to default): + let g:vimwiki_global_vars['toc_header'] = "Contents" + +Given vimwiki (Headings): + # Header 1 + random text + ## Header 1.1 + random text + ### Header 1.1.1 + random text + + # Header 2 + ### Header 2.1.1 + +Execute (Set syntax markdown && Set sw=8): + call SetSyntax('markdown') + set sw=8 + +Execute (VimwikiTOC): + VimwikiTOC + +Expect (With a TOC sw=8): + # Contents + + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) + + # Header 1 + random text + ## Header 1.1 + random text + ### Header 1.1.1 + random text + + # Header 2 + ### Header 2.1.1 + +Execute (Set sw=4 && VimwikiTOC): + set sw=4 + VimwikiTOC + +Expect (With a TOC sw=4): + # Contents + + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) + + # Header 1 + random text + ## Header 1.1 + random text + ### Header 1.1.1 + random text + + # Header 2 + ### Header 2.1.1 + +Do (Destroy some stuff): + jj + dd + jj + dd + +Execute (VimwikiTOC): + VimwikiTOC + +Expect (Brand new TOC): + # Contents + + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) + + # Header 1 + random text + ## Header 1.1 + random text + ### Header 1.1.1 + random text + + # Header 2 + ### Header 2.1.1 + + +Execute (Let toc_header = Sommaire && VimwikiTOC): + let g:vimwiki_global_vars['toc_header'] = "Sommaire" + VimwikiTOC + +Expect (Append a Sommaire && Leave Contents alone): + # Sommaire + + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) + + # Header 1 + random text + ## Header 1.1 + random text + ### Header 1.1.1 + random text + + # Header 2 + ### Header 2.1.1 + +Do (Destroy some stuff): + jj + dd + jj + dd + +Execute (VimwikiTOC): + VimwikiTOC + +Expect (Brand new TOC with sommaire): + # Sommaire + + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) + + # Header 1 + random text + ## Header 1.1 + random text + ### Header 1.1.1 + random text + + # Header 2 + ### Header 2.1.1 + + +Include: vader_includes/vader_teardown.vader +# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= diff --git a/test/independent_runs/map.vader b/test/independent_runs/map.vader new file mode 100644 index 0000000..2e82380 --- /dev/null +++ b/test/independent_runs/map.vader @@ -0,0 +1,460 @@ +Include: vader_setup + + +# 0 Configure {{{1 +################## + +Execute (Configure: Set vimwiki list to markdown resource): + Log "Let mapleader = ," + let mapleader = ',' + + Log "Declare function DestroyVar" + function! DestroyVar(var) + if ! exists(a:var) | return | endif + execute "unlet " . a:var + endfunction + + Log "Declare function AssertTab" + function! AssertTab(nr) + " Vader is creating 2 tabs + AssertEqual a:nr + 2, tabpagenr() + endfunction + + Log "Destroy vimrc or previous run heritage" + call DestroyVar('g:vimwiki_list') + call DestroyVar('g:vimwiki_global_vars') + call DestroyVar('g:vimwiki_wikilocal_vars') + + Log "Destroy vimrc variable, works better that way" + call DestroyVar('g:vimwiki_default') + call DestroyVar('g:vimwiki_markdown') + call DestroyVar('g:vimwiki_mediawiki') + + Log "Declare my vimwiki_list" + let g:vimwiki_list = [{ + \ 'path': 'test/resources/testmarkdown', + \ 'syntax': 'markdown', + \ 'ext': '.md' + \ }] + + Log "Declare my extension for temporary wiki" + let g:vimwiki_ext2syntax = {'.md': 'markdown'} + + Log "Reload vimwiki <- vader_setup.vader" + call ReloadVimwiki() + +Execute (Assert: 2 wiki in Index): + AssertEqual 2, len(vimwiki_wikilocal_vars) + +Execute (VimwikiIndex): + VimwikiIndex 1 + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + AssertEqual 'vimwiki', &filetype + AssertEqual 'test/resources/testmarkdown/', vimwiki_wikilocal_vars[0]['path'] + AssertEqual 'test/resources/testmarkdown/index.md', expand('%') + +Execute (Open buzz bozz): + edit test/resources/testmarkdown/buzz_bozz.md + AssertEqual 'test/resources/testmarkdown/buzz_bozz.md', expand('%') + + +# 1 Global {{{1 +############### + +Execute (===========================================================): + Log "Checking global map" + +Do (,ww -> open index [Assert]): + ,ww + :AssertEqual 'test/resources/testmarkdown/index.md', expand('%') + \ + :call AssertTab(1) + \ + +Do (,wt -> open index in tab [Assert]): + ,wt + :AssertEqual 'test/resources/testmarkdown/index.md', expand('%') + \ + :call AssertTab(2) + \ + +Do (,w,w -> open diary [Assert]): + ,w,w + :AssertEqual 'test/resources/testmarkdown/diary/' . strftime('%Y-%m-%d') . '.md', expand('%') + \ + :call AssertTab(1) + \ + +Do (,w,t -> open diary in tab [Assert]): + ,w,t + :AssertEqual 'test/resources/testmarkdown/diary/' . strftime('%Y-%m-%d') . '.md', expand('%') + \ + :call AssertTab(2) + \ + +Do (,ws -> list and select wiki [Assert]): + ,ws + 1 + \ + :AssertEqual 'test/resources/testmarkdown/index.md', expand('%') + \ + :call AssertTab(1) + \ + +Do (,wi -> open diary index [Assert]): + ,wi + :AssertEqual 'test/resources/testmarkdown/diary/diary.md', expand('%') + \ + :call AssertTab(1) + \ + +Do (,w,y -> open yesterday [Assert]): + ,w,y + :AssertEqual 'test/resources/testmarkdown/diary/' . strftime('%Y-%m-%d', localtime() - 60*60*24) . '.md', expand('%') + \ + :call AssertTab(1) + \ + +Do (,w,m -> open tomorrow [Assert]): + ,wm + :AssertEqual 'test/resources/testmarkdown/diary/' . strftime('%Y-%m-%d', localtime() + 60*60*24) . '.md', expand('%') + \ + :call AssertTab(1) + \ + + +# 2 Local {{{1 +############## + +Execute (===========================================================): + Log "Checking local map" + +# 2.1 Heading {{{2 +############## + +Do (,wn -> Create new wiki [Assert]): + ,wn + new_file1 + \ + :AssertEqual 'test/resources/testmarkdown/new_file1.md', expand('%') + \ + :call AssertTab(1) + \ + +Do (,wd -> Delete wiki yes [Assert]): + :edit 'test/resources/testmarkdown/file_new1.md' + \ + + ,wn + new_file2 + \ + ithis is content 2 + \ + + ,wd + yes + \ + + :AssertEqual 'test/resources/testmarkdown/index.md', expand('%') + \ + +Do (,wd -> Delete wiki no [Assert]): + :edit 'test/resources/testmarkdown/file_new1.md' + \ + + ,wn + new_file2 + \ + ithis is content 1 + \ + + ,wd + no + \ + + :AssertEqual 'test/resources/testmarkdown/new_file2.md', expand('%') + \ + +Do (,wn -> Rename wiki [Assert]): + ,wn + new_file1 + \ + ithis is content 1 + \ + + ,wn + new_file2 + \ + + :AssertEqual 'test/resources/testmarkdown/new_file2.md', expand('%') + \ + +Given (Some headings): + # Head 1 + ## Head 1.1 + content 1 + + # Head2 + content 2 + +Execute (file .md): + file toto.md + edit! + AssertEqual 'vimwiki', &ft + +Do (= -> add header level): + = + +Expect (Inc header level): + ## Head 1 + ## Head 1.1 + content 1 + + # Head2 + content 2 + +Do (- -> Dec header level): + j + - + +Expect (Dec header level): + # Head 1 + # Head 1.1 + content 1 + + # Head2 + content 2 + +Do ([[ -> Go to the previous header): + G + k + [[ + A placeholder + +Expect (placeholder): + # Head 1 + ## Head 1.1 placeholder + content 1 + + # Head2 + content 2 + +Do (]] -> Go to the next header): + ]] + A placeholder + +Expect (placeholder): + # Head 1 + ## Head 1.1 placeholder + content 1 + + # Head2 + content 2 + +Do ([= -> Go to the previous header which has the same level): + G + k + [= + A placeholder + +Expect (placeholder): + # Head 1 placeholder + ## Head 1.1 + content 1 + + # Head2 + content 2 + +Do (]= -> Go to the next header which has the same level): + ]= + A placeholder + +Expect (placeholder): + # Head 1 + ## Head 1.1 + content 1 + + # Head2 placeholder + content 2 + +Do (]u Go one level up): + j + ]u + A placeholder + +Expect (placeholder): + # Head 1 placeholder + ## Head 1.1 + content 1 + + # Head2 + content 2 + +Do ([u Go one level up): + j + [u + A placeholder + +Expect (placeholder): + # Head 1 placeholder + ## Head 1.1 + content 1 + + # Head2 + content 2 + + +# 2.2 List {{{2 +############## + +Given (Number list): + 1. I + 1. Relly + 2. Love + 1. Very + 1. Much + 3. You + +Execute (file .md): + file toto.md + edit! + AssertEqual 'vimwiki', &ft + set sw=2 + +Do (gll): + gll + +Expect (Increase): + 1. I + 2. Relly + 1. Love + 1. Very + 1. Much + 2. You + +Do (gLl): + gLl + +Expect (Increase self + child): + 1. I + 1. Relly + 1. Love + 1. Very + 1. Much + 2. You + +Do (glh): + jjj + glh + +Expect (Decrease): + 1. I + 1. Relly + 2. Love + 3. Very + 1. Much + 4. You + +Do (gLh): + jjj + gLh + +Expect (Decrease self + child): + 1. I + 1. Relly + 2. Love + 3. Very + 1. Much + 4. You + +Do (glr): + \\ + glr + +Expect (Renumber): + 1. I + 1. Relly + 2. Love + 1. Very + 1. Much + 3. You + +Do (gl*): + gl* + +Expect (item -> *): + * I + 1. Relly + 1. Love + 1. Very + 1. Much + 2. You + +Do (gL*): + gL* + +Expect (list -> *): + * I + 1. Relly + * Love + 1. Very + 1. Much + * You + + +# 3 Text Object {{{1 +#################### + +Execute (===========================================================): + Log "Checking text object" + +# 3.1 HEading Object {{{2 +#################### + + +Given (Some headings): + # Head 1 + ## Head 1.1 + content 1 + + # Head2 + content 2 + +Do (ah): + j + dah + +Expect (Change A header including its content up to the next header): + # Head 1 + # Head2 + content 2 + +Do (ih): + j + dih + +Expect (The content under a header): + # Head 1 + ## Head 1.1 + + # Head2 + content 2 + +Do (aH): + daH + +Expect (A header including all of its subheaders): + # Head2 + content 2 + +Do (iH): + diH + +Expect (Like 'aH', but excluding the header itself): + # Head 1 + + # Head2 + content 2 + +Include: vader_teardown +# vim: foldmethod=marker foldlevel=30 sw=2 diff --git a/test/resources/testmarkdown/buzz_bozz.md b/test/resources/testmarkdown/buzz_bozz.md new file mode 100644 index 0000000..7c5e5a8 --- /dev/null +++ b/test/resources/testmarkdown/buzz_bozz.md @@ -0,0 +1,3 @@ +# Buzz Bozz + +Cras nisl dolor, mattis condimentum neque ac, cursus tristique est. Sed vel imperdiet ipsum. Curabitur non dictum tortor. Donec massa justo, cursus at suscipit ornare, tempus a tellus. Praesent at orci mi. Praesent sed odio in leo pulvinar vulputate. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed eu leo dui. Fusce vitae laoreet massa. Donec ac tempor lectus. Curabitur eget ligula vel purus efficitur congue. Fusce ut pellentesque magna, eget facilisis nunc. diff --git a/test/resources/testmarkdown/index.md b/test/resources/testmarkdown/index.md new file mode 100644 index 0000000..a8fd8f3 --- /dev/null +++ b/test/resources/testmarkdown/index.md @@ -0,0 +1,59 @@ +# Test Wiki + +This test wiki exists to test various features of VimWiki. + +VimWiki Developers: Feel free to *add* to this wiki for additional test features. + +Foo bar +foo bar +biz baz +foo\bar +baz{13} <--- this is for testing a literal "baz{13}" +buzzzzz <--- this is for testing regex /buz{5}/ + +# Links + +1. [[buzz_bozz|l_Buzz Bozz]] +2. [l_Buzz_Bozz](buzz_bozz) +3. [l_Flashy](#Typefaces#Flashy) +4. [l_Test Wiki](#Test Wiki) + +# Typefaces + +## Generic + +~~strikeout text~~ +`code (no syntax) text` +super^script^ +sub,,script,, + +## Markdown + +**bold text** or __bold text__ +*italic text* or _italic text_ +***bold_italic text*** or ___italic_bold text___ + +## Flashy +TODO, DONE, STARTED, FIXME, FIXED, XXX. + +# More + +## Lorem ipsum dolor == + +Sit amet, consectetur adipiscing elit. Etiam sed efficitur lectus, sit amet consectetur purus. Vestibulum pulvinar, magna et fermentum aliquet, diam libero blandit ex, quis iaculis dui metus sit amet nulla. Mauris auctor massa magna, eu aliquam neque consequat a. Duis lorem nunc, tempus eu dignissim a, euismod sit amet ex. Duis nec condimentum libero. Nulla iaculis fringilla ante, in posuere lorem maximus vel. Nam pulvinar quis diam non ultrices. Vivamus maximus ipsum a placerat rutrum. Nam et consectetur erat, sodales hendrerit ligula. + +# Etiam dapibus iaculis + +Sed tincidunt vestibulum nunc, in dapibus eros dictum in. Nullam ut dolor nisi. + +* blandit nulla mi +* at gravida magna +* maximus eu + +### Morbi id sodales sem + +Nulla id malesuada velit. Mauris ac nisl orci. Donec maximus ex in sapien fringilla mollis. Praesent eu felis bibendum, auctor justo eget, bibendum purus. Nullam egestas, diam et eleifend tempus, ipsum libero auctor mi, quis rutrum neque metus ac tortor. Vestibulum porttitor tempus vulputate. + +## Praesent tempor turpis est + +Nunc scelerisque placerat auctor. Donec vel iaculis risus, non commodo nisl. Duis pretium nisi nibh, ac faucibus metus condimentum nec. Aliquam eu euismod lorem. Aenean sit amet tellus sed massa luctus dignissim. Nam tempor sapien quis felis hendrerit fermentum. Nunc vitae vehicula enim. diff --git a/test/syntax.vader b/test/syntax.vader new file mode 100644 index 0000000..ca22ce6 --- /dev/null +++ b/test/syntax.vader @@ -0,0 +1,291 @@ +Include: vader_includes/vader_setup.vader + + +# 1 Typeface {{{1 +################# + +Given vimwiki (TODO, XXX): + TODO + DONE + STARTED + FIXME + FIXED + XXX + +Execute (Assert Syntax VimwikiTodo): + AssertEqual SyntaxAt(1, 1), 'VimwikiTodo' + AssertEqual SyntaxAt(2, 1), 'VimwikiTodo' + AssertEqual SyntaxAt(3, 1), 'VimwikiTodo' + AssertEqual SyntaxAt(4, 1), 'VimwikiTodo' + AssertEqual SyntaxAt(5, 1), 'VimwikiTodo' + AssertEqual SyntaxAt(6, 1), 'VimwikiTodo' + +Given vimwiki (Typeface for markdown like italic): + **bold text 1** + __bold text 2__ + *italic text 1* + _italic text 2_ + ***bold italic text 1*** + ___bold italic text 2___ + ~~strikeout text~~ + `code (no syntax) text` + sp^script^ + sb,,script,, + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Assert Syntax for typeface): + AssertEqual SyntaxAt(1, 4), 'VimwikiBold' + AssertEqual SyntaxAt(2, 4), 'VimwikiBold' + AssertEqual SyntaxAt(3, 4), 'VimwikiItalic' + AssertEqual SyntaxAt(4, 4), 'VimwikiItalic' + AssertEqual SyntaxAt(5, 4), 'VimwikiBoldItalic' + AssertEqual SyntaxAt(6, 4), 'VimwikiItalicBold' + AssertEqual SyntaxAt(7, 4), 'VimwikiDelText' + AssertEqual SyntaxAt(8, 4), 'VimwikiCode' + AssertEqual SyntaxAt(9, 4), 'VimwikiSuperScript' + AssertEqual SyntaxAt(10, 4), 'VimwikiSubScript' + + +# 2 Links {{{1 +################# + +Given vimwiki (Wiki Links): + Plain link: > + [[This is a link]] + With description: > + [[This is a link source|Description of the link]] + Interwiki1: > + [[wiki1:This is a link]] + Interwiki2: > + [[wn.My Name:This is a link]] + Interwiki3: > + [[wn.MyWiki:This is a link source|Description of the link]] + Diary: > + [[diary:2012-03-05]] + Anchor1: > + [[Todo List#Tomorrow|Tasks for tomorrow]] + Anchor2: > + [[#Tomorrow]] + Raw1: > + https://github.com/vimwiki/vimwiki.git + Raw2: > + mailto:habamax@gmail.com + Raw3: > + ftp://vim.org + File1: > + [[file:/home/somebody/a/b/c/music.mp3]] + File2: > + [[file:C:/Users/somebody/d/e/f/music.mp3]] + File3: > + [[file:~/a/b/c/music.mp3]] + File4: > + [[file:../assets/data.csv|Important Data]] + File5: > + [[local:C:/Users/somebody/d/e/f/music.mp3]] + File6: > + [[file:/home/user/documents/|Link to a directory]] + Thumbnail links: > + [[http://someaddr.com/bigpicture.jpg|{{http://someaddr.com/thumbnail.jpg}}]] + +Execute (Assert Syntax link): + AssertEqual SyntaxAt(2, 6), 'VimwikiLink' + AssertEqual SyntaxAt(4, 6), 'VimwikiLink' + AssertEqual SyntaxAt(6, 6), 'VimwikiLink' + AssertEqual SyntaxAt(8, 6), 'VimwikiLink' + AssertEqual SyntaxAt(10, 6), 'VimwikiLink' + AssertEqual SyntaxAt(12, 6), 'VimwikiLink' + AssertEqual SyntaxAt(14, 6), 'VimwikiLink' + AssertEqual SyntaxAt(16, 6), 'VimwikiLink' + AssertEqual SyntaxAt(18, 6), 'VimwikiLink' + AssertEqual SyntaxAt(20, 6), 'VimwikiLink' + AssertEqual SyntaxAt(22, 6), 'VimwikiLink' + AssertEqual SyntaxAt(24, 6), 'VimwikiLink' + AssertEqual SyntaxAt(26, 6), 'VimwikiLink' + AssertEqual SyntaxAt(28, 6), 'VimwikiLink' + AssertEqual SyntaxAt(30, 6), 'VimwikiLink' + AssertEqual SyntaxAt(32, 6), 'VimwikiLink' + AssertEqual SyntaxAt(34, 6), 'VimwikiLink' + AssertEqual SyntaxAt(36, 6), 'VimwikiLink' + +Given vimwiki (Markdown Links): + Inline link: > + [Looks like this](URL) + + Image link: > + ![Looks like this](URL) + + Reference-style links: > + a) [Link Name][Id] + b) [Id][], using the "implicit link name" shortcut + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Assert Syntax link): + AssertEqual SyntaxAt(2, 8), 'VimwikiWeblink1' + AssertEqual SyntaxAt(5, 8), 'VimwikiImage' + AssertEqual SyntaxAt(8, 8), 'VimwikiWikiLink1' + AssertEqual SyntaxAt(9, 8), 'VimwikiWikiLink1' + + +# 3 Header {{{1 +############### + +Given vimwiki (Wiki Headers): + = Header level 1 = + == Header level 2 == + === Header level 3 === + ==== Header level 4 ==== + ===== Header level 5 ===== + ====== Header level 6 ====== + +Execute (Set syntax default): + call SetSyntax('default') + +Execute (Assert Syntax Header): + AssertEqual SyntaxAt(1, 10), 'VimwikiHeader1' + AssertEqual SyntaxAt(2, 10), 'VimwikiHeader2' + AssertEqual SyntaxAt(3, 10), 'VimwikiHeader3' + AssertEqual SyntaxAt(4, 10), 'VimwikiHeader4' + AssertEqual SyntaxAt(5, 10), 'VimwikiHeader5' + AssertEqual SyntaxAt(6, 10), 'VimwikiHeader6' + +Given vimwiki (Markdown Headers): + # Header level 1 + ## Header level 2 + ### Header level 3 + #### Header level 4 + ##### Header level 5 + ###### Header level 6 + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Assert Syntax Header): + AssertEqual SyntaxAt(1, 10), 'VimwikiHeader1' + AssertEqual SyntaxAt(2, 10), 'VimwikiHeader2' + AssertEqual SyntaxAt(3, 10), 'VimwikiHeader3' + AssertEqual SyntaxAt(4, 10), 'VimwikiHeader4' + AssertEqual SyntaxAt(5, 10), 'VimwikiHeader5' + AssertEqual SyntaxAt(6, 10), 'VimwikiHeader6' + + +# 10 Code {{{1 +# 10.1 Code Indent (4 spaces) {{{2 +################################# + +Given vimwiki (Code indent): + this is markdown + this is code + +Execute (Assert Syntax normal (i.e. no hi)): + AssertEqual SyntaxAt(1, 5), '' + AssertEqual SyntaxAt(2, 5), '' + + +# 10.2 Code Inline (1 backtick) {{{2 +################################### + +Given vimwiki (Code inline): + Well use the `man` + +Execute (Assert Syntax Code): + AssertEqual SyntaxAt(1, 16), 'VimwikiCode' + + +# 10.3 Code Block (3 backtiks) {{{2 +################################## + +Given vimwiki (Markdown, Text and Vim): + this is markdown + this is TODO + + ``` + this is text + ``` + + ```vim + " this is vim + set hlsearch + ``` + +Execute (Set syntax markdown): + let g:vimwiki_global_vars['vimwiki_automatic_nested_syntaxes'] = 1 + call SetSyntax('markdown') + +Execute (Assert ft, normal syntax and VimwikiTodo): + AssertEqual &ft, 'vimwiki' + AssertEqual SyntaxAt(1, 1), '' + AssertEqual SyntaxAt(2, 9), 'VimwikiTodo' + +Execute (Assert Code syntax): + AssertEqual SyntaxAt(4, 1), 'VimwikiPreDelim' + AssertEqual SyntaxAt(5, 1), 'VimwikiPre' + AssertEqual SyntaxAt(9, 1), 'vimLineComment' + AssertEqual SyntaxAt(10, 1), 'vimCommand' + + +# 11 Math {{{1 +# 11.1 Math Markdown {{{2 +####################### + +Given vimwiki (Math markdown): + math inline: $ \sum_i a_i^2 = 1 $ + + math block: + $$ + \sum_i a_i^2 + = + 1 + $$ + + math block env: + $$%align% + \sum_i a_i^2 &= 1 + 1 \\ + &= 2. + $$ + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Assert math syntax): + AssertEqual SyntaxAt(1, 18), 'VimwikiEqIn' + let syntax_5 = SyntaxAt(5, 1) + Assert syntax_5 == 'texStatement' || syntax_5 == 'texMathSymbol' + let syntax_12 = SyntaxAt(12, 1) + Assert syntax_12 == 'texStatement' || syntax_5 == 'texMathSymbol' + + +# 11.2 Math Wiki {{{2 +############################## + +Given vimwiki (Math wiki): + math inline: $ \sum_i a_i^2 = 1 $ + + math block: + {{$ + \sum_i a_i^2 + = + 1 + }}$ + + math block env: + {{$%align% + \sum_i a_i^2 &= 1 + 1 \\ + &= 2. + }}$ + +Execute (Set syntax markdown): + call SetSyntax('default') + +Execute (Assert math syntax): + AssertEqual SyntaxAt(1, 18), 'VimwikiEqIn' + let syntax_5 = SyntaxAt(5, 1) + Assert syntax_5 == 'texStatement' || syntax_5 == 'texMathSymbol' + let syntax_12 = SyntaxAt(12, 1) + Assert syntax_12 == 'texStatement' || syntax_5 == 'texMathSymbol' + +Include: vader_includes/vader_teardown.vader +# vim: foldmethod=marker foldlevel=30 sw=2 diff --git a/test/table_autoformat.vader b/test/table_autoformat.vader new file mode 100644 index 0000000..155d664 --- /dev/null +++ b/test/table_autoformat.vader @@ -0,0 +1,157 @@ +Include: vader_includes/vader_setup.vader + + + +# Autoformat {{{1 +################# + +Given vimwiki (Unaligned table): + | title1 | title2 | + | - | - | + | a1 | b1 | + | a2 | | + +Execute (Rename file wiki_test.md for table expand): + file wiki_test.md + +Do (A to trigger insertLeave): + A + +Expect (Table autoformat): + | title1 | title2 | + | - | - | + | a1 | b1 | + | a2 | | + +Do (gqq to reformats table after making changes.): + gqq + +Expect (Table autoformat): + | title1 | title2 | + | - | - | + | a1 | b1 | + | a2 | | + +Execute (Option table_reduce_last_col = 1): + let g:vimwiki_global_vars['table_reduce_last_col'] = 1 + +Do (A to trigger insertLeave): + A + +Expect (Last column not expanded): + | title1 | title2 | + | - | - | + | a1 | b1 | + | a2 | | + +Execute (Option table_reduce_last_col = 0 [restore]): + let g:vimwiki_global_vars['table_reduce_last_col'] = 0 + +Execute (Option table_auto_fmt = 0): + let g:vimwiki_global_vars['table_auto_fmt'] = 0 + +Expect (Same as input): + | title1 | title2 | + | - | - | + | a1 | b1 | + | a2 | | + +Execute (Option table_auto_fmt = 1 [restore]): + let g:vimwiki_global_vars['table_auto_fmt'] = 1 + + + +# Move and edit cells {{{1 +########################## + +Do (Use in insert mode): + GI + \ + this_is_16_chars + \ + this_is_16_chars + \ + +Expect (Table autoformated with more content): + | title1 | title2 | + | - | - | + | a1 | b1 | + | this_is_16_charsa2 | this_is_16_chars | + +Do (VimwikiTableMoveColumnRight): + gg:VimwikiTableMoveColumnRight\ + +Expect (Column inverted): + | title2 | title1 | + | - | - | + | b1 | a1 | + | | a2 | + +Do (CR must insert new row): + GI\a3 + +Expect (Table with new row starting by a3): + | title1 | title2 | + | - | - | + | a1 | b1 | + | a2 | | + | a3 | | + + + + +# VimwikiTable Command {{{1 +########################### + +Given (Nothing): + +Execute (VimwikiTable): + VimwikiTable + +Expect (Table 5 x 2): + + | | | | | | + |---|---|---|---|---| + | | | | | | + +Execute (VimwikiTable 8 3): + VimwikiTable 8 3 + +Expect (Table 8 x 3): + + | | | | | | | | | + |---|---|---|---|---|---|---|---| + | | | | | | | | | + | | | | | | | | | + + + +# Justify Cell Content {{{1 +########################### + + +Given vimwiki (To be justified from help file [Coffe price]): + | Date | Item | Price | + |------------|:------:|--------:| + | yest |Coffee |$15.00 | + | 2017-02-13 |Tea |$2.10 | + | 2017-03-14 |Cake |$143.12 | + +Execute (Rename file wiki_test.md for table expand): + file wiki_test.md + +Do (A to trigger insertLeave): + A + +Expect (Text justified): + | Date | Item | Price | + |------------|:------:|--------:| + | yest | Coffee | $15.00 | + | 2017-02-13 | Tea | $2.10 | + | 2017-03-14 | Cake | $143.12 | + + + + +Include: vader_includes/vader_teardown.vader +# vim: foldmethod=marker foldlevel=30 diff --git a/test/vader_includes/vader_setup.vader b/test/vader_includes/vader_setup.vader index 331f328..b04518b 100644 --- a/test/vader_includes/vader_setup.vader +++ b/test/vader_includes/vader_setup.vader @@ -46,3 +46,29 @@ Before (Define functions): unlet g:loaded_vimwiki source plugin/vimwiki.vim endfunction + + " Copy wiki test resources so that vimtest user can write them + function! CopyResources() + call system('cp -r /testplugin/test/resources/* $HOME/') + " Make diary directory + call system('mkdir $HOME/testwiki/diary') + call system('mkdir $HOME/testmarkdown/diary') + endfunction + + " Delete Hidden buffer, usefull to clean + " Stole from: https://stackoverflow.com/a/8459043/2544873 + function! DeleteHiddenBuffers() + let tpbl=[] + call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))') + for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1') + silent execute 'bwipeout!' buf + endfor + endfunction + + " Write current file: helper to hide `set bt=` + function! WriteMe() + set bt= + write % + endfunction + +# vim: ft=vim diff --git a/test/vimrc b/test/vimrc index 9eb0c89..5177423 100644 --- a/test/vimrc +++ b/test/vimrc @@ -6,26 +6,32 @@ set nocompatible filetype plugin indent on syntax enable +" Wiki's resources to be used after: +" :!cp -r /testplugin/test/resources/* $HOME/ +" or from a test.vader file Execute block: +" call CopyResources() +" This complication aims for these copies to be writable + " default syntax let vimwiki_default = {} -let vimwiki_default.path = 'test/resources/vimwiki/default' -let vimwiki_default.path_html = 'test/resources/default/html' +let vimwiki_default.path = $HOME . '/testwiki' +let vimwiki_default.path_html = $HOME . '/html/default' let vimwiki_default.syntax = 'default' let vimwiki_default.ext = '.wiki' let vimwiki_default.name = 'DefaultSyntax' " markdown syntax - https://github.github.com/gfm/ let vimwiki_markdown = {} -let vimwiki_markdown.path = 'test/resources/vimwiki/markdown' -let vimwiki_markdown.path_html = '~/vimwiki/markdown/html' +let vimwiki_markdown.path = $HOME . '/testmarkdown' +let vimwiki_markdown.path_html = $HOME . '/html/markdown' let vimwiki_markdown.syntax = 'markdown' let vimwiki_markdown.ext = '.md' let vimwiki_markdown.name = 'MarkdownSyntax' " mediawiki syntax - https://www.mediawiki.org/wiki/Help:Formatting let vimwiki_mediawiki = {} -let vimwiki_mediawiki.path = 'test/resources/vimwiki/mediawiki' -let vimwiki_mediawiki.path_html = 'test/resources/vimwiki/mediawiki/html' +let vimwiki_mediawiki.path = $HOME . '/testmediawiki' +let vimwiki_mediawiki.path_html = $HOME . '/html/mediawiki' let vimwiki_mediawiki.syntax = 'mediawiki' let vimwiki_mediawiki.ext = '.mw' let vimwiki_mediawiki.name = 'MediaWikiSyntax' From 64eea36b1e6fa55202a7666ad2903e074c993e14 Mon Sep 17 00:00:00 2001 From: tinmarino Date: Sat, 7 Dec 2019 11:32:49 -0300 Subject: [PATCH 153/216] Feature: VimwikiGoto completion get also link of files nested in directories Before: VimwikiGoto -> completed only files in current dir After: complete also files in nested dirs Changes: glob(*) -> glob(**/*) --- autoload/vimwiki/base.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 0e895b0..b0bb494 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -362,7 +362,7 @@ function! vimwiki#base#get_globlinks_escaped() abort let orig_pwd = getcwd() lcd! %:h " all path are relative to the current file's location - let globlinks = glob('*'.vimwiki#vars#get_wikilocal('ext'), 1)."\n" + let globlinks = glob('**/*'.vimwiki#vars#get_wikilocal('ext'), 1)."\n" " remove extensions let globlinks = substitute(globlinks, '\'.vimwiki#vars#get_wikilocal('ext').'\ze\n', '', 'g') " restore the original working directory From 80013f457dcca527cfc8e3aab518499a2dc121ab Mon Sep 17 00:00:00 2001 From: tinmarino Date: Wed, 11 Dec 2019 16:27:41 -0300 Subject: [PATCH 154/216] Feature: VimwikiGoto completion works with only part of filename Problem: Could not complete when the user argument was not the begining of the filepath Solution: use custom smartcase filter and customlist instead of custom --- autoload/vimwiki/base.vim | 17 +++++++++-------- ftplugin/vimwiki.vim | 2 +- test/command_goto.vader | 39 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index b0bb494..8c1b9c7 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -356,7 +356,8 @@ function! vimwiki#base#open_link(cmd, link, ...) endfunction -function! vimwiki#base#get_globlinks_escaped() abort +function! vimwiki#base#get_globlinks_escaped(...) abort + let s_arg_lead = a:0 > 0 ? a:1 : "" " only get links from the current dir " change to the directory of the current file let orig_pwd = getcwd() @@ -369,12 +370,14 @@ function! vimwiki#base#get_globlinks_escaped() abort exe 'lcd! '.orig_pwd " convert to a List let lst = split(globlinks, '\n') + " Filter files whose path matches the user's argument leader + " " use smart case matching + let r_arg = substitute(s_arg_lead, '\u', '[\0\l\0]', 'g') + call filter(lst, '-1 != match(v:val, r_arg)') " Apply fnameescape() to each item call map(lst, 'fnameescape(v:val)') - " Convert back to newline-separated list - let globlinks = join(lst, "\n") - " return all escaped links as a single newline-separated string - return globlinks + " Return list (for customlist completion) + return lst endfunction @@ -2279,9 +2282,7 @@ endfunction function! vimwiki#base#complete_links_escaped(ArgLead, CmdLine, CursorPos) abort - " We can safely ignore args if we use -custom=complete option, Vim engine - " will do the job of filtering. - return vimwiki#base#get_globlinks_escaped() + return vimwiki#base#get_globlinks_escaped(a:ArgLead) endfunction diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index 5b5b9ce..eeac6de 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -261,7 +261,7 @@ command! -buffer -nargs=0 VWB call vimwiki#base#backlinks() command! -buffer -nargs=* VimwikiSearch call vimwiki#base#search() command! -buffer -nargs=* VWS call vimwiki#base#search() -command! -buffer -nargs=* -complete=custom,vimwiki#base#complete_links_escaped +command! -buffer -nargs=* -complete=customlist,vimwiki#base#complete_links_escaped \ VimwikiGoto call vimwiki#base#goto() command! -buffer VimwikiCheckLinks call vimwiki#base#check_links() diff --git a/test/command_goto.vader b/test/command_goto.vader index eeaf569..7c3ee94 100644 --- a/test/command_goto.vader +++ b/test/command_goto.vader @@ -17,13 +17,48 @@ Do (VimwikiGoto buzz_bozz && Assert): buzz_bozz\ :AssertEqual $HOME . '/testmarkdown/buzz_bozz.md', expand('%')\ - Execute (:VimwikiGoto + Completion): VimwikiIndex 2 AssertEqual $HOME . '/testmarkdown/index.md', expand('%') - let s_complete=vimwiki#base#get_globlinks_escaped() + let s_complete=string(vimwiki#base#get_globlinks_escaped()) Assert -1 != stridx(s_complete, 'buzz_bozz') +Execute (Create dir1/dir2/test_goto_file.md): + call system("mkdir $HOME/testmarkdown/dir1") + call system("mkdir $HOME/testmarkdown/dir1/dir2") + edit $HOME/testmarkdown/dir1/dir2/test_goto_file.md + call WriteMe() + +Execute (:VimwikiGoto + Completion in directory): + " Return to base + VimwikiIndex 2 + AssertEqual $HOME . '/testmarkdown/index.md', expand('%') + + " Complete without argment + let s_complete1=string(vimwiki#base#get_globlinks_escaped()) + Assert -1 != stridx(s_complete1, 'test_goto_file') + + " Complete with file argument + let s_complete2=string(vimwiki#base#get_globlinks_escaped('test_goto_file')) + Assert -1 != stridx(s_complete2, 'test_goto_file') + + " Complete with start of file argument + let s_complete3=string(vimwiki#base#get_globlinks_escaped('test_got')) + Assert -1 != stridx(s_complete3, 'test_goto_file') + + " Complete with (nested) dir2 argument + let s_complete4=string(vimwiki#base#get_globlinks_escaped('dir2')) + Assert -1 != stridx(s_complete4, 'test_goto_file') + + " Complete with bad argument + let l_complete5=vimwiki#base#get_globlinks_escaped('this_string_is_nowhere') + let s_complete5=string(l_complete5) + Assert -1 == stridx(s_complete5, 'test_goto_file') + AssertEqual 0, len(l_complete5) + +Execute (Clean): + Log "End: Clean" + call system("rm $HOME/testmarkdown/dir1") Include: vader_includes/vader_teardown.vader # vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= From 8db9d4b3873b166ccc5991b2004c0f6d46ce6284 Mon Sep 17 00:00:00 2001 From: tinmarino Date: Sun, 15 Dec 2019 19:23:50 -0300 Subject: [PATCH 155/216] VimwikiGoto: Enable VimwikiGoBackLink after --- autoload/vimwiki/base.vim | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 8c1b9c7..a29783e 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -430,9 +430,14 @@ function! vimwiki#base#goto(...) let key = a:0 > 0 ? a:1 : input('Enter name: ') let anchor = a:0 > 1 ? a:2 : '' + " Save current file pos + let vimwiki_prev_link = [vimwiki#path#current_wiki_file(), getpos('.')] + call vimwiki#base#edit_file(':e', \ vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext'), - \ anchor) + \ anchor, + \ vimwiki_prev_link, + \ &ft ==# 'vimwiki') endfunction From 2526547db254b7d6e72bd47caa7ffa4f4d0dada6 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 20 Dec 2019 20:40:43 -0700 Subject: [PATCH 156/216] Cleanup, add link to vim-testbed on DockerHub --- test/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/README.md b/test/README.md index 11108e0..b13a2da 100644 --- a/test/README.md +++ b/test/README.md @@ -3,7 +3,7 @@ This directory contains a test framework used to automatically test/verify Vimwiki functionality. It is based on the following tools: -- [vim-testbed](https://github.com/tweekmonster/vim-testbed) +- [vim-testbed GitHub](https://github.com/tweekmonster/vim-testbed) or on [testbed/vim dockerhub](https://hub.docker.com/r/testbed/vim) - [Vader](https://github.com/junegunn/vader.vim) - [Vint](https://github.com/Kuniwak/vint) @@ -43,12 +43,11 @@ automatically run all tests for all installed vim versions. The vim/nvim versions are parsed from the Dockerfile. This script will also run `Vint` for all plugin source files. For more information run `./run_tests.sh -h`. - ## Inside the container -* `$USER` -> `vimtest` : unprivileged => very hard to mess up things -* `$HOME` -> `/home/vimtest` : but it is readonly ! -* `$PWD` -> `/testplugin` : mapped to vimwiki plugin root directory +- `$USER` -> `vimtest` : unprivileged => very hard to mess up things +- `$HOME` -> `/home/vimtest` : but it is readonly ! +- `$PWD` -> `/testplugin` : mapped to vimwiki plugin root directory For more information, read the [base docker image](https://github.com/tweekmonster/vim-testbed) @@ -67,6 +66,7 @@ For more information, read the [base docker image](https://github.com/tweekmonst - `v7.3.831` `getbufvar` added a default value - `v7.4.236` add ability to check patch with has("patch-7.4.123") +- `v7.4.279` added the option to for `globpath()` to return a list - `v7.4.1546` sticky type checking removed (allow a variables type to change) - `v7.4.1989` `filter()` accepts a Funcref - `v7.4.2044` lambda support added - see `:h expr-lambda` From b6ea14d3f89ab342b04f543bc6b183480c7e34bb Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 20 Dec 2019 20:40:48 -0700 Subject: [PATCH 157/216] Pin versions for everything --- Dockerfile | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3e83bfc..68697ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,20 @@ -FROM tweekmonster/vim-testbed:latest +FROM testbed/vim:17 -ENV PACKAGES="\ - bash \ - git \ - python3 \ -" -RUN apk --update add $PACKAGES && \ - rm -rf /var/cache/apk/* /tmp/* /var/tmp/* +# add packages +RUN apk --no-cache add bash=~5.0 +RUN apk --no-cache add git=~2.22 +RUN apk --no-cache add python3=~3.7 -RUN pip3 install --upgrade pip setuptools -RUN pip3 install vim-vint -RUN git clone https://github.com/junegunn/vader.vim vader +# get vint for linting +RUN pip3 install vim-vint==0.3.21 +# get vader for unit tests +RUN git clone -n https://github.com/junegunn/vader.vim /vader +WORKDIR /vader +RUN git checkout de8a976f1eae2c2b680604205c3e8b5c8882493c + +# build vim and neovim versions we want to test +WORKDIR / RUN install_vim -tag v7.3.429 -name vim_7.3.429 -build \ -tag v7.4.1099 -name vim_7.4.1099 -build \ -tag v7.4.1546 -name vim_7.4.1546 -build \ From 7c892e2516fe49f1ac62d9eedff89f800252b868 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 20 Dec 2019 20:40:55 -0700 Subject: [PATCH 158/216] Add link to Vimwikiwiki and more info on contributing. Adds note that only the default syntax has a built in HTML converter. Also incorporates a few stylistic changes. --- README.md | 91 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 0fe8c34..5da2e26 100644 --- a/README.md +++ b/README.md @@ -22,32 +22,34 @@ ---- -## Intro +## Introduction VimWiki is a personal wiki for Vim -- a number of linked text files that have -their own syntax highlighting. +their own syntax highlighting. See the [VimWiki Wiki](https://vimwiki.github.io/vimwikiwiki/) +for an example website built with VimWiki! + +For the latest features and fixes checkout the [dev branch](https://github.com/vimwiki/vimwiki/tree/dev). +If you are interested in contributing see [this section](#helping-vimwiki). With VimWiki, you can: - * Organize notes and ideas - * Manage to-do lists - * Write documentation - * Maintain a diary - * Export everything to HTML +- Organize notes and ideas +- Manage to-do lists +- Write documentation +- Maintain a diary +- Export everything to HTML -To do a quick start, press `ww` (this is usually `\ww`) to go to your -index wiki file. By default, it is located in `~/vimwiki/index.wiki`. See -`:h vimwiki_list` for registering a different path/wiki. +To do a quick start, press `ww` (default is `\ww`) to go to your index +wiki file. By default, it is located in `~/vimwiki/index.wiki`. See `:h vimwiki_list` +for registering a different path/wiki. Feed it with the following example: -``` - +```text = My knowledge base = * Tasks -- things to be done _yesterday_!!! * Project Gutenberg -- good books are power. * Scratchpad -- various temporary stuff. - ``` Place your cursor on `Tasks` and press Enter to create a link. Once pressed, @@ -59,13 +61,11 @@ A VimWiki link can be constructed from more than one word. Just visually select the words to be linked and press Enter. Try it, with `Project Gutenberg`. The result should look something like: -``` - +```text = My knowledge base = * [[Tasks]] -- things to be done _yesterday_!!! * [[Project Gutenberg]] -- good books are power. * Scratchpad -- various temporary stuff. - ``` ## Screenshots @@ -75,7 +75,6 @@ The result should look something like: ![Todos View](doc/todos.png) ![Wiki View](doc/wiki.png) - ## Installation ### Prerequisites @@ -83,16 +82,13 @@ The result should look something like: Make sure you have these settings in your vimrc file: ```vim - set nocompatible filetype plugin on syntax on - ``` Without them, VimWiki will not work properly. - #### Installation using [Vim packages](http://vimhelp.appspot.com/repeat.txt.html#packages) (since Vim 7.4.1528) ```sh @@ -143,7 +139,7 @@ installed. ## Basic Markup -``` +```text = Header1 = == Header2 == === Header3 === @@ -156,9 +152,9 @@ _italic_ -- italic text [[wiki link|description]] -- wiki link with description ``` -### Lists: +### Lists -``` +```text * bullet list item 1 - bullet list item 2 - bullet list item 3 @@ -187,17 +183,17 @@ bindings if you encounter a problem. #### Basic key bindings - * `ww` -- Open default wiki index file. - * `wt` -- Open default wiki index file in a new tab. - * `ws` -- Select and open wiki index file. - * `wd` -- Delete wiki file you are in. - * `wr` -- Rename wiki file you are in. - * `` -- Follow/Create wiki link. - * `` -- Split and follow/create wiki link. - * `` -- Vertical split and follow/create wiki link. - * `` -- Go back to parent(previous) wiki link. - * `` -- Find next wiki link. - * `` -- Find previous wiki link. +- `ww` -- Open default wiki index file. +- `wt` -- Open default wiki index file in a new tab. +- `ws` -- Select and open wiki index file. +- `wd` -- Delete wiki file you are in. +- `wr` -- Rename wiki file you are in. +- `` -- Follow/Create wiki link. +- `` -- Split and follow/create wiki link. +- `` -- Vertical split and follow/create wiki link. +- `` -- Go back to parent(previous) wiki link. +- `` -- Find next wiki link. +- `` -- Find previous wiki link. #### Advanced key bindings @@ -206,18 +202,22 @@ more bindings. ## Commands - * `:Vimwiki2HTML` -- Convert current wiki link to HTML. - * `:VimwikiAll2HTML` -- Convert all your wiki links to HTML. - * `:help vimwiki-commands` -- List all commands. - * `:help vimwiki` -- General vimwiki help docs. +- `:Vimwiki2HTML` -- Convert current wiki link to HTML. +- `:VimwikiAll2HTML` -- Convert all your wiki links to HTML. +- `:help vimwiki-commands` -- List all commands. +- `:help vimwiki` -- General vimwiki help docs. ## Changing Wiki Syntax VimWiki currently ships with 3 syntaxes: VimWiki (default), Markdown (markdown), and MediaWiki (media). +**NOTE:** Only the default syntax ships with a built-in HTML converter. For +Markdown or MediaWiki see `:h vimwiki-option-custom_wiki2html`. Some examples +and 3rd party tools are available [here](https://vimwiki.github.io/vimwikiwiki/Related%20Tools.html#Related%20Tools-External%20Tools). + If you would prefer to use either Markdown or MediaWiki syntaxes, set the -following option in your .vimrc: +following option in your `.vimrc`: ```vim @@ -228,15 +228,20 @@ let g:vimwiki_list = [{'path': '~/vimwiki/', ## Getting help -**Have a question?** -Visit the IRC channel [`#vimwiki`](https://webchat.freenode.net/?channels=#vimwiki) on Freenode ([webchat](https://webchat.freenode.net/?channels=#vimwiki), also synced to Matrix/Riot: `#freenode_#vimwiki:matrix.org` and [Telegram](https://t.me/joinchat/JqBaKBfWs04qNVrp5oWcMg)) or post to the [mailing list](https://groups.google.com/forum/#!forum/vimwiki). +[GitHub issues](https://github.com/vimwiki/vimwiki/issues) are the primary +method for raising bug reports or feature requests. + +Additional resources include the IRC channel [#vimwiki](https://webchat.freenode.net/?channels=#vimwiki) on Freenode +([webchat](https://webchat.freenode.net/?channels=#vimwiki), also synced to Matrix/Riot: `#freenode_#vimwiki:matrix.org` and [Telegram](https://t.me/joinchat/JqBaKBfWs04qNVrp5oWcMg)) +or post to the [mailing list](https://groups.google.com/forum/#!forum/vimwiki). ## Helping VimWiki VimWiki has a lot of users but only very few recurring developers or people helping the community. Your help is therefore appreciated. Everyone can help! -See [#625](https://github.com/vimwiki/vimwiki/issues/625) for information on -how you can help. +See [#625](https://github.com/vimwiki/vimwiki/issues/625) for information on how you can help. + +Also, take a look at [CONTRIBUTING.md](https://github.com/vimwiki/vimwiki/blob/dev/CONTRIBUTING.md) on the `dev` branch. ---- From 68e33e37e51a53dbee916d1756b8fef2c2ecfdf5 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 20 Dec 2019 20:40:59 -0700 Subject: [PATCH 159/216] Add info about testing with vader and vint. Stylistic fixes. --- CONTRIBUTING.md | 50 +++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1685084..c6eb9f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,6 @@ -# Filing a bug +# Contributing to Vimwiki -Before filing a bug or starting to write a patch, check the latest development version from -https://github.com/vimwiki/vimwiki/tree/dev to see if your problem is already fixed. - -Issues can be filed at https://github.com/vimwiki/vimwiki/issues/ . - -# Creating a pull request +## Pull Requests If you want to provide a pull request on GitHub, please start from the `dev` branch, not from the `master` branch. (Caution, GitHub shows `master` as the default branch from which to start a PR.) @@ -15,9 +10,16 @@ Make sure to update `doc/vimwiki.txt` with the following information: 1. Update the changelog to include information on the new feature the PR introduces or the bug it is fixing. 2. Add a help section to describe any new features or options. -2. If you are a first time contributor add your name to the list of contributors. +3. If you are a first time contributor add your name to the list of contributors. -# More info and advice for (aspiring) core developers +**Testing:** Vimwiki uses [vader](https://github.com/junegunn/vader.vim) for unit tests and +[vint](https://github.com/Kuniwak/vint) for linting. Any new PRs must add new tests and pass all +linter checks. See the [test README](test/README.md) for more info. + +- In addition to the included tests, there are more example wikis that can be used for testing + [here](https://github.com/vimwiki/testwikis). + +## More info and advice for (aspiring) core developers - Before implementing a non-trivial feature, think twice what it means for the user. We should always try to keep backward compatibility. If you are not sure, discuss it on GitHub. @@ -30,17 +32,17 @@ Make sure to update `doc/vimwiki.txt` with the following information: ## Git branching model -- there are two branches with eternal lifetime: - - `dev`: This is where the main development happens. Tasks which are done in one or only a few - commits go here directly. Always try to keep this branch in a working state, that is, if the - task you work on requires multiple commits, make sure intermediate commits don't make Vimwiki - unusable (or at least push these commits at one go). - - `master`: This branch is for released states only. Whenever a reasonable set of changes has - piled up in the `dev` branch, a [release is done](#Preparing a release). After a release, - `dev` has been merged into `master` and `master` got exactly one additional commit in which - the version number in `plugin/vimwiki.vim` is updated. Apart from these commits and the merge - commit from `dev`, nothing happens on `master`. Never should `master` merge into `dev`. When - the users ask, we should recommend this branch for them to use. +- There are two branches with eternal lifetime: + 1. `dev`: This is where the main development happens. Tasks which are done in one or only a few + commits go here directly. Always try to keep this branch in a working state, that is, if the + task you work on requires multiple commits, make sure intermediate commits don't make + Vimwiki unusable (or at least push these commits at one go). + 2. `master`: This branch is for released states only. Whenever a reasonable set of changes has + piled up in the `dev` branch, a [release is done](#preparing-a-release). After a release, + `dev` has been merged into `master` and `master` got exactly one additional commit in which + the version number in `plugin/vimwiki.vim` is updated. Apart from these commits and the + merge commit from `dev`, nothing happens on `master`. Never should `master` merge into + `dev`. When the users ask, we should recommend this branch for them to use. - Larger changes which require multiple commits are done in feature branches. They are based on `dev` and merge into `dev` when the work is done. @@ -55,9 +57,9 @@ Make sure to update `doc/vimwiki.txt` with the following information: 7. Update the version number at the top of plugin/vimwiki.vim. 8. Set a tag with the version number in Git: `git tag vX.Y` 9. `git push --tags` -10. In GitHub, go to _Releases_ -> _Draft a new release_ -> choose the tag, convert the changelog from the - doc to markdown and post it there. Make plans to build an automatic converter and immediately - forget this plan. +10. In GitHub, go to _Releases_ -> _Draft a new release_ -> choose the tag, convert the changelog + from the doc to markdown and post it there. Make plans to build an automatic converter and + immediately forget this plan. 11. Tell the world. -%% vim:tw=99 + From 1a4e1ed1aef2e8b871aabca669cc98ebae4f3602 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 20 Dec 2019 20:41:03 -0700 Subject: [PATCH 160/216] Stylistic changes to pass vint tests. Two non-stylistic errors were also fixed: 1. Removed duplicate function with invalid argument usage 2. Added missing quotes to a function call argument --- autoload/vimwiki/base.vim | 344 ++++++++++++++--------------- autoload/vimwiki/diary.vim | 52 ++--- autoload/vimwiki/html.vim | 316 +++++++++++++------------- autoload/vimwiki/lst.vim | 226 +++++++++---------- autoload/vimwiki/markdown_base.vim | 16 +- autoload/vimwiki/path.vim | 44 ++-- autoload/vimwiki/tags.vim | 40 ++-- autoload/vimwiki/tbl.vim | 163 +++++++------- autoload/vimwiki/u.vim | 32 +-- autoload/vimwiki/vars.vim | 44 ++-- ftplugin/vimwiki.vim | 40 ++-- plugin/vimwiki.vim | 64 +++--- syntax/vimwiki.vim | 26 +-- syntax/vimwiki_markdown_custom.vim | 22 +- 14 files changed, 712 insertions(+), 717 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index a29783e..0e812ef 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -3,7 +3,7 @@ " Desc: Basic functionality " Home: https://github.com/vimwiki/vimwiki/ -if exists("g:loaded_vimwiki_auto") || &cp +if exists('g:loaded_vimwiki_auto') || &compatible finish endif let g:loaded_vimwiki_auto = 1 @@ -12,14 +12,14 @@ let g:loaded_vimwiki_auto = 1 let g:vimwiki_max_scan_for_caption = 5 -function! s:safesubstitute(text, search, replace, mode) +function! s:safesubstitute(text, search, replace, mode) abort " Substitute regexp but do not interpret replace let escaped = escape(a:replace, '\&') return substitute(a:text, a:search, escaped, a:mode) endfunction -function! s:vimwiki_get_known_syntaxes() +function! s:vimwiki_get_known_syntaxes() abort " Getting all syntaxes that different wikis could have let syntaxes = {} let syntaxes['default'] = 1 @@ -35,7 +35,7 @@ function! s:vimwiki_get_known_syntaxes() endfunction -function! vimwiki#base#file_pattern(files) +function! vimwiki#base#file_pattern(files) abort " Get search regex from glob() " string. Aim to support *all* special characters, forcing the user to choose " names that are compatible with any external restrictions that they @@ -47,7 +47,7 @@ endfunction "FIXME TODO slow and faulty -function! vimwiki#base#subdir(path, filename) +function! vimwiki#base#subdir(path, filename) abort let path = a:path " ensure that we are not fooled by a symbolic link "FIXME if we are not "fooled", we end up in a completely different wiki? @@ -71,12 +71,12 @@ function! vimwiki#base#subdir(path, filename) endfunction -function! vimwiki#base#current_subdir() +function! vimwiki#base#current_subdir() abort return vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), expand('%:p')) endfunction -function! vimwiki#base#invsubdir(subdir) +function! vimwiki#base#invsubdir(subdir) abort return substitute(a:subdir, '[^/\.]\+/', '../', 'g') endfunction @@ -84,7 +84,7 @@ endfunction " Returns: the number of the wiki a file belongs to or -1 if it doesn't belong " to any registered wiki. " The path can be the full path or just the directory of the file -function! vimwiki#base#find_wiki(path) +function! vimwiki#base#find_wiki(path) abort let bestmatch = -1 let bestlen = 0 let path = vimwiki#path#path_norm(vimwiki#path#chomp_slash(a:path)) @@ -105,7 +105,7 @@ endfunction " helper: check if a link a well formed wiki link -function! s:is_wiki_link(link_infos) +function! s:is_wiki_link(link_infos) abort return a:link_infos.scheme =~# '\mwiki\d\+' || a:link_infos.scheme ==# 'diary' endfunction @@ -114,7 +114,7 @@ endfunction " If the second parameter is present, which should be an absolute file path, it " is assumed that the link appears in that file. Without it, the current file " is used. -function! vimwiki#base#resolve_link(link_text, ...) +function! vimwiki#base#resolve_link(link_text, ...) abort if a:0 let source_wiki = vimwiki#base#find_wiki(a:1) let source_file = a:1 @@ -134,12 +134,12 @@ function! vimwiki#base#resolve_link(link_text, ...) \ 'anchor': '', \ } - if link_text == '' + if link_text ==? '' return link_infos endif let scheme = matchstr(link_text, '^\zs'.vimwiki#vars#get_global('rxSchemes').'\ze:') - if scheme == '' + if scheme ==? '' " interwiki link scheme is default let link_infos.scheme = 'wiki'.source_wiki else @@ -159,10 +159,10 @@ function! vimwiki#base#resolve_link(link_text, ...) if is_wiki_link let split_lnk = split(link_text, '#', 1) let link_text = split_lnk[0] - if len(split_lnk) > 1 && split_lnk[-1] != '' + if len(split_lnk) > 1 && split_lnk[-1] !=? '' let link_infos.anchor = join(split_lnk[1:], '#') endif - if link_text == '' " because the link was of the form '#anchor' + if link_text ==? '' " because the link was of the form '#anchor' let expected_ext = vimwiki#u#escape(vimwiki#vars#get_wikilocal('ext')).'$' if source_file =~# expected_ext " Source file has expected extension. Remove it, it will be added later on @@ -174,8 +174,8 @@ function! vimwiki#base#resolve_link(link_text, ...) endif " check if absolute or relative path - if is_wiki_link && link_text[0] == '/' - if link_text != '/' + if is_wiki_link && link_text[0] ==# '/' + if link_text !=# '/' let link_text = link_text[1:] endif let is_relative = 0 @@ -227,13 +227,13 @@ function! vimwiki#base#resolve_link(link_text, ...) let link_infos.filename = root_dir . link_text if vimwiki#path#is_link_to_dir(link_text) - if vimwiki#vars#get_global('dir_link') != '' + if vimwiki#vars#get_global('dir_link') !=? '' let link_infos.filename .= vimwiki#vars#get_global('dir_link') . \ vimwiki#vars#get_wikilocal('ext', link_infos.index) endif else let ext = fnamemodify(link_text, ':e') - if ext == '' " append ext iff one not already present + if ext ==? '' " append ext iff one not already present let link_infos.filename .= vimwiki#vars#get_wikilocal('ext', link_infos.index) endif endif @@ -261,12 +261,12 @@ function! vimwiki#base#resolve_link(link_text, ...) endfunction -function! vimwiki#base#system_open_link(url) +function! vimwiki#base#system_open_link(url) abort " handlers - function! s:win32_handler(url) + function! s:win32_handler(url) abort "Disable shellslash for cmd and command.com, but enable for all other shells "See Issue #560 - if (&shell =~? "cmd") || (&shell =~? "command.com") + if (&shell =~? 'cmd') || (&shell =~? 'command.com') if exists('+shellslash') let old_ssl = &shellslash @@ -292,10 +292,10 @@ function! vimwiki#base#system_open_link(url) endif endfunction - function! s:macunix_handler(url) + function! s:macunix_handler(url) abort call system('open ' . shellescape(a:url).' &') endfunction - function! s:linux_handler(url) + function! s:linux_handler(url) abort call system('xdg-open ' . shellescape(a:url).' &') endfunction try @@ -314,7 +314,7 @@ function! vimwiki#base#system_open_link(url) endfunction -function! vimwiki#base#open_link(cmd, link, ...) +function! vimwiki#base#open_link(cmd, link, ...) abort let link_infos = {} if a:0 let link_infos = vimwiki#base#resolve_link(a:link, a:1) @@ -322,7 +322,7 @@ function! vimwiki#base#open_link(cmd, link, ...) let link_infos = vimwiki#base#resolve_link(a:link) endif - if link_infos.filename == '' + if link_infos.filename ==? '' if link_infos.index == -1 echomsg 'Vimwiki Error: No registered wiki ''' . link_infos.scheme . '''.' elseif link_infos.index == -2 @@ -341,7 +341,7 @@ function! vimwiki#base#open_link(cmd, link, ...) if is_wiki_link if a:0 let vimwiki_prev_link = [a:1, []] - elseif &ft ==# 'vimwiki' + elseif &filetype ==# 'vimwiki' let vimwiki_prev_link = [vimwiki#path#current_wiki_file(), getpos('.')] endif endif @@ -357,7 +357,7 @@ endfunction function! vimwiki#base#get_globlinks_escaped(...) abort - let s_arg_lead = a:0 > 0 ? a:1 : "" + let s_arg_lead = a:0 > 0 ? a:1 : '' " only get links from the current dir " change to the directory of the current file let orig_pwd = getcwd() @@ -381,10 +381,10 @@ function! vimwiki#base#get_globlinks_escaped(...) abort endfunction -function! vimwiki#base#generate_links(create) +function! vimwiki#base#generate_links(create) abort let GeneratorLinks = copy(l:) - function! GeneratorLinks.f() + function! GeneratorLinks.f() abort let lines = [] let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0) @@ -394,14 +394,14 @@ function! vimwiki#base#generate_links(create) for link in links let link_infos = vimwiki#base#resolve_link(link) if !vimwiki#base#is_diary_file(link_infos.filename) - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template') else let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate1') endif let link_caption = vimwiki#base#read_caption(link_infos.filename) - if link_caption == '' " default to link if caption not found + if link_caption ==? '' " default to link if caption not found let link_caption = link endif @@ -426,7 +426,7 @@ function! vimwiki#base#generate_links(create) endfunction -function! vimwiki#base#goto(...) +function! vimwiki#base#goto(...) abort let key = a:0 > 0 ? a:1 : input('Enter name: ') let anchor = a:0 > 1 ? a:2 : '' @@ -437,12 +437,12 @@ function! vimwiki#base#goto(...) \ vimwiki#vars#get_wikilocal('path') . key . vimwiki#vars#get_wikilocal('ext'), \ anchor, \ vimwiki_prev_link, - \ &ft ==# 'vimwiki') + \ &filetype ==# 'vimwiki') endfunction -function! vimwiki#base#backlinks() - let current_filename = expand("%:p") +function! vimwiki#base#backlinks() abort + let current_filename = expand('%:p') let locations = [] for idx in range(vimwiki#vars#number_of_wikis()) let syntax = vimwiki#vars#get_wikilocal('syntax', idx) @@ -476,7 +476,7 @@ endfunction " Returns: a list containing all files of the given wiki as absolute file path. " If the given wiki number is negative, the diary of the current wiki is used " If the second argument is not zero, only directories are found -function! vimwiki#base#find_files(wiki_nr, directories_only) +function! vimwiki#base#find_files(wiki_nr, directories_only) abort let wiki_nr = a:wiki_nr if wiki_nr >= 0 let root_directory = vimwiki#vars#get_wikilocal('path', wiki_nr) @@ -514,7 +514,7 @@ endfunction " files in the given wiki. " If the given wiki number is negative, the diary of the current wiki is used. " If also_absolute_links is nonzero, also return links of the form /file -function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links) +function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links) abort let files = vimwiki#base#find_files(a:wiki_nr, 0) if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr') let cwd = vimwiki#path#wikify_path(expand('%:p:h')) @@ -554,7 +554,7 @@ endfunction " Returns: a list containing the links to all directories from the current file -function! vimwiki#base#get_wiki_directories(wiki_nr) +function! vimwiki#base#get_wiki_directories(wiki_nr) abort let dirs = vimwiki#base#find_files(a:wiki_nr, 1) if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr') let cwd = vimwiki#path#wikify_path(expand('%:p:h')) @@ -575,7 +575,7 @@ function! vimwiki#base#get_wiki_directories(wiki_nr) endfunction -function! vimwiki#base#get_anchors(filename, syntax) +function! vimwiki#base#get_anchors(filename, syntax) abort if !filereadable(a:filename) return [] endif @@ -604,7 +604,7 @@ function! vimwiki#base#get_anchors(filename, syntax) else let current_complete_anchor = '' for l in range(level-1) - if anchor_level[l] != '' + if anchor_level[l] !=? '' let current_complete_anchor .= anchor_level[l].'#' endif endfor @@ -617,11 +617,11 @@ function! vimwiki#base#get_anchors(filename, syntax) let bold_count = 1 while 1 let bold_text = matchstr(line, rxbold, 0, bold_count) - if bold_text == '' + if bold_text ==? '' break endif call add(anchors, bold_text) - if current_complete_anchor != '' + if current_complete_anchor !=? '' call add(anchors, current_complete_anchor.'#'.bold_text) endif let bold_count += 1 @@ -631,12 +631,12 @@ function! vimwiki#base#get_anchors(filename, syntax) let tag_count = 1 while 1 let tag_group_text = matchstr(line, rxtag, 0, tag_count) - if tag_group_text == '' + if tag_group_text ==? '' break endif for tag_text in split(tag_group_text, ':') call add(anchors, tag_text) - if current_complete_anchor != '' + if current_complete_anchor !=? '' call add(anchors, current_complete_anchor.'#'.tag_text) endif endfor @@ -649,7 +649,7 @@ function! vimwiki#base#get_anchors(filename, syntax) endfunction -function! s:jump_to_anchor(anchor) +function! s:jump_to_anchor(anchor) abort let oldpos = getpos('.') call cursor(1, 1) @@ -682,13 +682,13 @@ endfunction " Returns: a list of all links inside the wiki file " Every list item has the form " [target file, anchor, line number of the link in source file, column number] -function! s:get_links(wikifile, idx) +function! s:get_links(wikifile, idx) abort if !filereadable(a:wikifile) return [] endif let syntax = vimwiki#vars#get_wikilocal('syntax', a:idx) - if syntax == 'markdown' + if syntax ==# 'markdown' let rx_link = vimwiki#vars#get_syntaxlocal('rxWeblink1MatchUrl', syntax) else let rx_link = vimwiki#vars#get_syntaxlocal('wikilink', syntax) @@ -704,12 +704,12 @@ function! s:get_links(wikifile, idx) while 1 let col = match(line, rx_link, 0, link_count)+1 let link_text = matchstr(line, rx_link, 0, link_count) - if link_text == '' + if link_text ==? '' break endif let link_count += 1 let target = vimwiki#base#resolve_link(link_text, a:wikifile) - if target.filename != '' && target.scheme =~# '\mwiki\d\+\|diary\|file\|local' + if target.filename !=? '' && target.scheme =~# '\mwiki\d\+\|diary\|file\|local' call add(links, [target.filename, target.anchor, lnum, col]) endif endwhile @@ -719,7 +719,7 @@ function! s:get_links(wikifile, idx) endfunction -function! vimwiki#base#check_links() +function! vimwiki#base#check_links() abort let anchors_of_files = {} let links_of_files = {} let errors = [] @@ -734,26 +734,26 @@ function! vimwiki#base#check_links() for wikifile in keys(links_of_files) for [target_file, target_anchor, lnum, col] in links_of_files[wikifile] - if target_file == '' && target_anchor == '' + if target_file ==? '' && target_anchor ==? '' call add(errors, {'filename':wikifile, 'lnum':lnum, 'col':col, - \ 'text': "numbered scheme refers to a non-existent wiki"}) + \ 'text': 'numbered scheme refers to a non-existent wiki'}) elseif has_key(anchors_of_files, target_file) - if target_anchor != '' && index(anchors_of_files[target_file], target_anchor) < 0 + if target_anchor !=? '' && index(anchors_of_files[target_file], target_anchor) < 0 call add(errors, {'filename':wikifile, 'lnum':lnum, 'col':col, - \'text': "there is no such anchor: ".target_anchor}) + \'text': 'there is no such anchor: '.target_anchor}) endif else - if target_file =~ '\m/$' " maybe it's a link to a directory + if target_file =~? '\m/$' " maybe it's a link to a directory if !isdirectory(target_file) call add(errors, {'filename':wikifile, 'lnum':lnum, 'col':col, - \'text': "there is no such directory: ".target_file}) + \'text': 'there is no such directory: '.target_file}) endif else " maybe it's a non-wiki file if filereadable(target_file) let anchors_of_files[target_file] = [] else call add(errors, {'filename':wikifile, 'lnum':lnum, 'col':col, - \'text': "there is no such file: ".target_file}) + \'text': 'there is no such file: '.target_file}) endif endif endif @@ -794,7 +794,7 @@ function! vimwiki#base#check_links() break endif endfor - if next_unvisited_wikifile == '' + if next_unvisited_wikifile ==? '' break endif for [target_file, target_anchor, lnum, col] in links_of_files[next_unvisited_wikifile] @@ -806,7 +806,7 @@ function! vimwiki#base#check_links() for wf in keys(reachable_wikifiles) if reachable_wikifiles[wf] == 0 - call add(errors, {'text':wf." is not reachable from the index file"}) + call add(errors, {'text':wf.' is not reachable from the index file'}) endif endfor @@ -819,9 +819,9 @@ function! vimwiki#base#check_links() endfunction -function! vimwiki#base#edit_file(command, filename, anchor, ...) +function! vimwiki#base#edit_file(command, filename, anchor, ...) abort let fname = escape(a:filename, '% *|#`') - let dir = fnamemodify(a:filename, ":p:h") + let dir = fnamemodify(a:filename, ':p:h') let ok = vimwiki#path#mkdir(dir, 1) @@ -853,11 +853,11 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) " Make sure no other plugin takes ownership over the new file. Vimwiki " rules them all! Well, except for directories, which may be opened with " Netrw - if &filetype != 'vimwiki' && fname !~ '\m/$' + if &filetype !=# 'vimwiki' && fname !~? '\m/$' setfiletype vimwiki endif endif - if a:anchor != '' + if a:anchor !=? '' call s:jump_to_anchor(a:anchor) endif @@ -872,7 +872,7 @@ function! vimwiki#base#edit_file(command, filename, anchor, ...) endfunction -function! vimwiki#base#search_word(wikiRx, cmd) +function! vimwiki#base#search_word(wikiRx, cmd) abort let match_line = search(a:wikiRx, 's'.a:cmd) if match_line == 0 echomsg 'Vimwiki: Wiki link not found' @@ -881,7 +881,7 @@ endfunction " Returns part of the line that matches wikiRX at cursor -function! vimwiki#base#matchstr_at_cursor(wikiRX) +function! vimwiki#base#matchstr_at_cursor(wikiRX) abort let col = col('.') - 1 let line = getline('.') let ebeg = -1 @@ -899,12 +899,12 @@ function! vimwiki#base#matchstr_at_cursor(wikiRX) if ebeg >= 0 return strpart(line, ebeg, elen) else - return "" + return '' endif endfunction -function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) +function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) abort let col = col('.') - 1 let line = getline('.') let ebeg = -1 @@ -927,7 +927,7 @@ function! vimwiki#base#replacestr_at_cursor(wikiRX, sub) endfunction -function! s:print_wiki_list() +function! s:print_wiki_list() abort " find the max name length for prettier formatting let max_len = 0 for idx in range(vimwiki#vars#number_of_wikis()) @@ -961,8 +961,8 @@ function! s:print_wiki_list() endfunction -function! s:update_wiki_link(fname, old, new) - echo "Updating links in ".a:fname +function! s:update_wiki_link(fname, old, new) abort + echo 'Updating links in '.a:fname let has_updates = 0 let dest = [] for line in readfile(a:fname) @@ -970,7 +970,7 @@ function! s:update_wiki_link(fname, old, new) let has_updates = 1 endif " XXX: any other characters to escape!? - call add(dest, substitute(line, a:old, escape(a:new, "&"), "g")) + call add(dest, substitute(line, a:old, escape(a:new, '&'), 'g')) endfor " add exception handling... if has_updates @@ -981,7 +981,7 @@ function! s:update_wiki_link(fname, old, new) endfunction -function! s:update_wiki_links_dir(wiki_nr, dir, old_fname, new_fname) +function! s:update_wiki_links_dir(wiki_nr, dir, old_fname, new_fname) abort let old_fname = substitute(a:old_fname, '[/\\]', '[/\\\\]', 'g') let new_fname = a:new_fname @@ -997,15 +997,15 @@ function! s:update_wiki_links_dir(wiki_nr, dir, old_fname, new_fname) endfunction -function! s:tail_name(fname) - let result = substitute(a:fname, ":", "__colon__", "g") - let result = fnamemodify(result, ":t:r") - let result = substitute(result, "__colon__", ":", "g") +function! s:tail_name(fname) abort + let result = substitute(a:fname, ':', '__colon__', 'g') + let result = fnamemodify(result, ':t:r') + let result = substitute(result, '__colon__', ':', 'g') return result endfunction -function! s:update_wiki_links(wiki_nr, old_fname, new_fname,old_fname_relpath) +function! s:update_wiki_links(wiki_nr, old_fname, new_fname,old_fname_relpath) abort let old_fname = a:old_fname let new_fname = a:new_fname @@ -1037,15 +1037,15 @@ function! s:update_wiki_links(wiki_nr, old_fname, new_fname,old_fname_relpath) endfunction -function! s:get_wiki_buffers() +function! s:get_wiki_buffers() abort let blist = [] let bcount = 1 - while bcount<=bufnr("$") + while bcount<=bufnr('$') if bufexists(bcount) - let bname = fnamemodify(bufname(bcount), ":p") + let bname = fnamemodify(bufname(bcount), ':p') " this may find buffers that are not part of the current wiki, but that " doesn't hurt - if bname =~# vimwiki#vars#get_wikilocal('ext')."$" + if bname =~# vimwiki#vars#get_wikilocal('ext').'$' let bitem = [bname, vimwiki#vars#get_bufferlocal('prev_links', bcount)] call add(blist, bitem) endif @@ -1056,7 +1056,7 @@ function! s:get_wiki_buffers() endfunction -function! s:open_wiki_buffer(item) +function! s:open_wiki_buffer(item) abort call vimwiki#base#edit_file(':e', a:item[0], '') if !empty(a:item[1]) call vimwiki#vars#set_bufferlocal('prev_links', a:item[1], a:item[0]) @@ -1086,10 +1086,10 @@ function! vimwiki#base#nested_syntax(filetype, start, end, textSnipHl) abort " Previously, this used a try/catch block to intercept any errors thrown " when attempting to include files. The error(s) interferred with running " with Vader tests (specifically, testing VimwikiSearch). - if !empty(globpath(&rtp, 'syntax/'.a:filetype.'.vim')) + if !empty(globpath(&runtimepath, 'syntax/'.a:filetype.'.vim')) execute 'syntax include @'.group.' syntax/'.a:filetype.'.vim' endif - if !empty(globpath(&rtp, 'after/syntax/'.a:filetype.'.vim')) + if !empty(globpath(&runtimepath, 'after/syntax/'.a:filetype.'.vim')) execute 'syntax include @'.group.' after/syntax/'.a:filetype.'.vim' endif @@ -1137,7 +1137,7 @@ endfunction " - if a:create is true, it will be created if it doesn't exist, otherwise it " will only be updated if it already exists function! vimwiki#base#update_listing_in_buffer(Generator, start_header, - \ content_regex, default_lnum, header_level, create) + \ content_regex, default_lnum, header_level, create) abort " Vim behaves strangely when files change while in diff mode if &diff || &readonly return @@ -1209,7 +1209,7 @@ function! vimwiki#base#update_listing_in_buffer(Generator, start_header, keepjumps call append(start_lnum - 1, new_header) let start_lnum += 1 let lines_diff += 1 - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' for _ in range(vimwiki#vars#get_global('markdown_header_style')) keepjumps call append(start_lnum - 1, '') let start_lnum += 1 @@ -1242,28 +1242,28 @@ function! vimwiki#base#update_listing_in_buffer(Generator, start_header, call winrestview(winview_save) endfunction -function! vimwiki#base#find_next_task() +function! vimwiki#base#find_next_task() abort let taskRegex = vimwiki#vars#get_syntaxlocal('rxListItemWithoutCB') \ . '\+\(\[ \]\s\+\)\zs' call vimwiki#base#search_word(taskRegex, '') endfunction -function! vimwiki#base#find_next_link() +function! vimwiki#base#find_next_link() abort call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), '') endfunction -function! vimwiki#base#find_prev_link() +function! vimwiki#base#find_prev_link() abort "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(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b') endif call vimwiki#base#search_word(vimwiki#vars#get_syntaxlocal('rxAnyLink'), 'b') endfunction -function! vimwiki#base#follow_link(split, ...) +function! vimwiki#base#follow_link(split, ...) abort let reuse_other_split_window = a:0 >= 1 ? a:1 : 0 let move_cursor_to_new_window = a:0 >= 2 ? a:2 : 1 @@ -1274,12 +1274,12 @@ function! vimwiki#base#follow_link(split, ...) let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink')), \ vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl')) " try WikiIncl - if lnk == "" + if lnk ==? '' let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWikiIncl')), \ vimwiki#vars#get_global('rxWikiInclMatchUrl')) endif " try Weblink - if lnk == "" + if lnk ==? '' let lnk = matchstr(vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWeblink')), \ vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl')) endif @@ -1298,20 +1298,20 @@ function! vimwiki#base#follow_link(split, ...) endif endif - if lnk != "" " cursor is indeed on a link + if lnk !=? '' " cursor is indeed on a link let processed_by_user_defined_handler = VimwikiLinkHandler(lnk) if processed_by_user_defined_handler return endif - if a:split ==# "hsplit" - let cmd = ":split " - elseif a:split ==# "vsplit" - let cmd = ":vsplit " - elseif a:split ==# "tab" - let cmd = ":tabnew " + if a:split ==# 'hsplit' + let cmd = ':split ' + elseif a:split ==# 'vsplit' + let cmd = ':vsplit ' + elseif a:split ==# 'tab' + let cmd = ':tabnew ' else - let cmd = ":e " + let cmd = ':e ' endif " if we want to and can reuse a split window, jump to that window and open @@ -1325,7 +1325,7 @@ function! vimwiki#base#follow_link(split, ...) endif - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' let processed_by_markdown_reflink = vimwiki#markdown_base#open_reflink(lnk) if processed_by_markdown_reflink return @@ -1350,7 +1350,7 @@ function! vimwiki#base#follow_link(split, ...) else if a:0 >= 3 - execute "normal! ".a:3 + execute 'normal! '.a:3 elseif vimwiki#vars#get_global('create_link') call vimwiki#base#normalize_link(0) endif @@ -1358,7 +1358,7 @@ function! vimwiki#base#follow_link(split, ...) endfunction -function! vimwiki#base#go_back_link() +function! vimwiki#base#go_back_link() abort " try pop previous link from buffer list let prev_links = vimwiki#vars#get_bufferlocal('prev_links') if !empty(prev_links) @@ -1379,7 +1379,7 @@ function! vimwiki#base#go_back_link() endfunction -function! vimwiki#base#goto_index(wnum, ...) +function! vimwiki#base#goto_index(wnum, ...) abort " if wnum = 0 the current wiki is used if a:wnum == 0 @@ -1417,7 +1417,7 @@ function! vimwiki#base#goto_index(wnum, ...) endfunction -function! vimwiki#base#delete_link() +function! vimwiki#base#delete_link() abort " Delete wiki file you are in from filesystem let val = input('Delete "'.expand('%').'" [y]es/[N]o? ') if val !~? '^y' @@ -1432,22 +1432,22 @@ function! vimwiki#base#delete_link() endtry call vimwiki#base#go_back_link() - execute "bdelete! ".escape(fname, " ") + execute 'bdelete! '.escape(fname, ' ') " reread buffer => deleted wiki link should appear as non-existent - if expand('%:p') != "" - execute "e" + if expand('%:p') !=? '' + execute 'e' endif endfunction " Rename current file, update all links to it -function! vimwiki#base#rename_link() +function! vimwiki#base#rename_link() abort let subdir = vimwiki#vars#get_bufferlocal('subdir') let old_fname = subdir.expand('%:t') " there is no file (new one maybe) - if glob(expand('%:p')) == '' + if glob(expand('%:p')) ==? '' echomsg 'Vimwiki Error: Cannot rename "'.expand('%:p'). \'". It does not exist! (New file? Save it before renaming.)' return @@ -1465,23 +1465,23 @@ function! vimwiki#base#rename_link() return endif - if substitute(new_link, '\s', '', 'g') == '' + if substitute(new_link, '\s', '', 'g') ==? '' echomsg 'Vimwiki Error: Cannot rename to an empty filename!' return endif let url = matchstr(new_link, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl')) - if url != '' + if url !=? '' let new_link = url endif let new_link = subdir.new_link - let wiki_nr = vimwiki#vars#get_bufferlocal("wiki_nr") + let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr') let new_fname = vimwiki#vars#get_wikilocal('path') . new_link . vimwiki#vars#get_wikilocal('ext') " do not rename if file with such name exists let fname = glob(new_fname) - if fname != '' + if fname !=? '' echomsg 'Vimwiki Error: Cannot rename to "'.new_fname.'". File with that name exist!' return endif @@ -1490,14 +1490,14 @@ function! vimwiki#base#rename_link() echomsg 'Vimwiki: Renaming '.vimwiki#vars#get_wikilocal('path').old_fname.' to '.new_fname let res = rename(expand('%:p'), expand(new_fname)) if res != 0 - throw "Cannot rename!" + throw 'Cannot rename!' end catch /.*/ echomsg 'Vimwiki Error: Cannot rename "'.expand('%:t:r').'" to "'.new_fname.'"' return endtry - let &buftype="nofile" + let &buftype='nofile' let cur_buffer = [expand('%:p'), vimwiki#vars#get_bufferlocal('prev_links')] @@ -1538,7 +1538,7 @@ function! vimwiki#base#rename_link() endfunction -function! vimwiki#base#ui_select() +function! vimwiki#base#ui_select() abort call s:print_wiki_list() let idx = input('Select Wiki by number and press (empty cancels): ') if idx ==# '' @@ -1552,7 +1552,7 @@ function! vimwiki#base#ui_select() endfunction -function! vimwiki#base#TO_header(inner, including_subheaders, count) +function! vimwiki#base#TO_header(inner, including_subheaders, count) abort let headers = s:collect_headers() if empty(headers) return @@ -1605,7 +1605,7 @@ function! vimwiki#base#TO_header(inner, including_subheaders, count) endfunction -function! vimwiki#base#TO_table_cell(inner, visual) +function! vimwiki#base#TO_table_cell(inner, visual) abort if col('.') == col('$')-1 return endif @@ -1622,7 +1622,7 @@ function! vimwiki#base#TO_table_cell(inner, visual) if !search('|\|\(-+-\)', 'cb', line('.')) return endif - if getline('.')[virtcol('.')] == '+' + if getline('.')[virtcol('.')] ==# '+' normal! l endif if a:inner @@ -1633,7 +1633,7 @@ function! vimwiki#base#TO_table_cell(inner, visual) normal! `> call search('|\|\(-+-\)', '', line('.')) - if getline('.')[virtcol('.')] == '+' + if getline('.')[virtcol('.')] ==# '+' normal! l endif if a:inner @@ -1661,7 +1661,7 @@ function! vimwiki#base#TO_table_cell(inner, visual) endif normal! v call search('|\|\(-+-\)', '', line('.')) - if !a:inner && getline('.')[virtcol('.')-1] == '|' + if !a:inner && getline('.')[virtcol('.')-1] ==# '|' normal! h elseif a:inner normal! 2h @@ -1670,7 +1670,7 @@ function! vimwiki#base#TO_table_cell(inner, visual) endfunction -function! vimwiki#base#TO_table_col(inner, visual) +function! vimwiki#base#TO_table_col(inner, visual) abort let t_rows = vimwiki#tbl#get_rows(line('.')) if empty(t_rows) return @@ -1704,7 +1704,7 @@ function! vimwiki#base#TO_table_col(inner, visual) return endif " -+- column separator is matched --> move cursor to the + sign - if getline('.')[virtcol('.')] == '+' + if getline('.')[virtcol('.')] ==# '+' normal! l endif " inner selection --> reduce selection @@ -1715,7 +1715,7 @@ function! vimwiki#base#TO_table_col(inner, visual) endif normal! `> - if !firsttime && getline('.')[virtcol('.')] == '|' + if !firsttime && getline('.')[virtcol('.')] ==# '|' normal! l elseif a:inner && getline('.')[virtcol('.')+1] =~# '[|+]' normal! 2l @@ -1724,7 +1724,7 @@ function! vimwiki#base#TO_table_col(inner, visual) call search('|\|\(-+-\)', '', line('.')) " Outer selection selects a column without border on the right. So we move " our cursor left if the previous search finds | border, not -+-. - if getline('.')[virtcol('.')] != '+' + if getline('.')[virtcol('.')] !=# '+' normal! h endif if a:inner @@ -1758,7 +1758,7 @@ function! vimwiki#base#TO_table_col(inner, visual) return endif " -+- column separator is matched --> move cursor to the + sign - if getline('.')[virtcol('.')] == '+' + if getline('.')[virtcol('.')] ==# '+' normal! l endif " inner selection --> reduce selection @@ -1772,7 +1772,7 @@ function! vimwiki#base#TO_table_col(inner, visual) call search('|\|\(-+-\)', '', line('.')) " Outer selection selects a column without border on the right. So we move " our cursor left if the previous search finds | border, not -+-. - if getline('.')[virtcol('.')] != '+' + if getline('.')[virtcol('.')] !=# '+' normal! h endif " reduce selection a bit more if inner. @@ -1785,7 +1785,7 @@ function! vimwiki#base#TO_table_col(inner, visual) endfunction -function! vimwiki#base#AddHeaderLevel(...) +function! vimwiki#base#AddHeaderLevel(...) abort if a:1 > 1 call vimwiki#base#AddHeaderLevel(a:1 - 1) endif @@ -1816,7 +1816,7 @@ function! vimwiki#base#AddHeaderLevel(...) endfunction -function! vimwiki#base#RemoveHeaderLevel(...) +function! vimwiki#base#RemoveHeaderLevel(...) abort if a:1 > 1 call vimwiki#base#RemoveHeaderLevel(a:1 - 1) endif @@ -1855,7 +1855,7 @@ endfunction " Returns all the headers in the current buffer as a list of the form " [[line_number, header_level, header_text], [...], [...], ...] -function! s:collect_headers() +function! s:collect_headers() abort let is_inside_pre_or_math = 0 " 1: inside pre, 2: inside math, 0: outside let headers = [] for lnum in range(1, line('$')) @@ -1879,7 +1879,7 @@ function! s:collect_headers() if line_content !~# vimwiki#vars#get_syntaxlocal('rxHeader') continue endif - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' if stridx(line_content, vimwiki#vars#get_syntaxlocal('rxH')) > 0 continue " markdown headers must start in the first column endif @@ -1894,7 +1894,7 @@ function! s:collect_headers() endfunction -function! s:current_header(headers, line_number) +function! s:current_header(headers, line_number) abort if empty(a:headers) return -1 endif @@ -1911,7 +1911,7 @@ function! s:current_header(headers, line_number) endfunction -function! s:get_another_header(headers, current_index, direction, operation) +function! s:get_another_header(headers, current_index, direction, operation) abort if empty(a:headers) || a:current_index < 0 return -1 endif @@ -1930,7 +1930,7 @@ function! s:get_another_header(headers, current_index, direction, operation) endfunction -function! vimwiki#base#goto_parent_header() +function! vimwiki#base#goto_parent_header() abort let headers = s:collect_headers() let current_header_index = s:current_header(headers, line('.')) let parent_header = s:get_another_header(headers, current_header_index, -1, '<') @@ -1942,7 +1942,7 @@ function! vimwiki#base#goto_parent_header() endfunction -function! vimwiki#base#goto_next_header() +function! vimwiki#base#goto_next_header() abort let headers = s:collect_headers() let current_header_index = s:current_header(headers, line('.')) if current_header_index >= 0 && current_header_index < len(headers) - 1 @@ -1955,7 +1955,7 @@ function! vimwiki#base#goto_next_header() endfunction -function! vimwiki#base#goto_prev_header() +function! vimwiki#base#goto_prev_header() abort let headers = s:collect_headers() let current_header_index = s:current_header(headers, line('.')) " if the cursor already was on a header, jump to the previous one @@ -1970,7 +1970,7 @@ function! vimwiki#base#goto_prev_header() endfunction -function! vimwiki#base#goto_sibling(direction) +function! vimwiki#base#goto_sibling(direction) abort let headers = s:collect_headers() let current_header_index = s:current_header(headers, line('.')) let next_potential_sibling = @@ -1986,7 +1986,7 @@ endfunction " a:create == 1: creates or updates TOC in current file " a:create == 0: update if TOC exists -function! vimwiki#base#table_of_contents(create) +function! vimwiki#base#table_of_contents(create) abort let headers = s:collect_headers() let toc_header_text = vimwiki#vars#get_global('toc_header') @@ -2009,7 +2009,7 @@ function! vimwiki#base#table_of_contents(create) " use a dictionary function for closure like capability " copy all local variables into dict (add a: if arguments are needed) let GeneratorTOC = copy(l:) - function! GeneratorTOC.f() + function! GeneratorTOC.f() abort let numbering = vimwiki#vars#get_global('html_header_numbering') let headers_levels = [['', 0], ['', 0], ['', 0], ['', 0], ['', 0], ['', 0]] let complete_header_infos = [] @@ -2026,7 +2026,7 @@ function! vimwiki#base#table_of_contents(create) let h_complete_id = '' if vimwiki#vars#get_global('toc_link_format') == 0 for l in range(h_level-1) - if headers_levels[l][0] != '' + if headers_levels[l][0] !=? '' let h_complete_id .= headers_levels[l][0].'#' endif endfor @@ -2041,7 +2041,7 @@ function! vimwiki#base#table_of_contents(create) let indentstring = repeat(' ', vimwiki#u#sw()) let bullet = vimwiki#lst#default_symbol().' ' for [lvl, link, desc] in complete_header_infos - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink2Template') elseif vimwiki#vars#get_global('toc_link_format') == 0 let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate2') @@ -2074,22 +2074,22 @@ endfunction " for __LinkDescription__, and rxStyle for __LinkStyle__. The three " arguments rxUrl, rxDesc, and rxStyle are copied verbatim, without any " special character escapes or substitutions. -function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle) +function! vimwiki#base#apply_template(template, rxUrl, rxDesc, rxStyle) abort let lnk = a:template - if a:rxUrl != "" + if a:rxUrl !=? '' let lnk = s:safesubstitute(lnk, '__LinkUrl__', a:rxUrl, 'g') endif - if a:rxDesc != "" + if a:rxDesc !=? '' let lnk = s:safesubstitute(lnk, '__LinkDescription__', a:rxDesc, 'g') endif - if a:rxStyle != "" + if a:rxStyle !=? '' let lnk = s:safesubstitute(lnk, '__LinkStyle__', a:rxStyle, 'g') endif return lnk endfunction -function! s:clean_url(url) +function! s:clean_url(url) abort " don't use an extension as part of the description let url = substitute(a:url, '\'.vimwiki#vars#get_wikilocal('ext').'$', '', '') " remove protocol and tld @@ -2098,28 +2098,28 @@ function! s:clean_url(url) let url = substitute(url, '^\([^/]\+\)\.\a\{2,4}/', '\1/', '') let url_l = split(url, '/\|=\|-\|&\|?\|\.') let url_l = filter(url_l, 'v:val !=# ""') - if url_l[0] == "www" + if url_l[0] ==# 'www' let url_l = url_l[1:] endif - if url_l[-1] =~ '^\(htm\|html\|php\)$' + if url_l[-1] =~# '^\(htm\|html\|php\)$' let url_l = url_l[0:-2] endif " remove words consisting of only hexadecimal digits or non-word characters - let url_l = filter(url_l, 'v:val !~ "^\\A\\{4,}$"') - let url_l = filter(url_l, 'v:val !~ "^\\x\\{4,}$" || v:val !~ "\\d"') - return join(url_l, " ") + let url_l = filter(url_l, 'v:val !~? "^\\A\\{4,}$"') + let url_l = filter(url_l, 'v:val !~? "^\\x\\{4,}$" || v:val !~? "\\d"') + return join(url_l, ' ') endfunction -function! vimwiki#base#is_diary_file(filename) +function! vimwiki#base#is_diary_file(filename) abort let file_path = vimwiki#path#path_norm(a:filename) let rel_path = vimwiki#vars#get_wikilocal('diary_rel_path') let diary_path = vimwiki#path#path_norm(vimwiki#vars#get_wikilocal('path') . rel_path) - return rel_path != '' && file_path =~# '^'.vimwiki#u#escape(diary_path) + return rel_path !=? '' && file_path =~# '^'.vimwiki#u#escape(diary_path) endfunction -function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) +function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) abort let url = matchstr(a:str, a:rxUrl) if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' && vimwiki#vars#get_global('markdown_link_ext') " strip the extension if it exists so it doesn't get added multiple times @@ -2135,14 +2135,14 @@ function! vimwiki#base#normalize_link_helper(str, rxUrl, rxDesc, template) endfunction -function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, template) +function! vimwiki#base#normalize_imagelink_helper(str, rxUrl, rxDesc, rxStyle, template) abort let lnk = vimwiki#base#normalize_link_helper(a:str, a:rxUrl, a:rxDesc, a:template) let style = matchstr(a:str, a:rxStyle) let lnk = s:safesubstitute(lnk, '__LinkStyle__', style, '') return lnk endfunction -function! vimwiki#base#normalize_link_in_diary(lnk) +function! vimwiki#base#normalize_link_in_diary(lnk) abort let sc = vimwiki#vars#get_wikilocal('links_space_char') let link = a:lnk . vimwiki#vars#get_wikilocal('ext') let link_wiki = substitute(vimwiki#vars#get_wikilocal('path') . '/' . link, '\s', sc, 'g') @@ -2183,7 +2183,7 @@ function! vimwiki#base#normalize_link_in_diary(lnk) endfunction -function! s:normalize_link_syntax_n() +function! s:normalize_link_syntax_n() abort " try WikiLink let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_syntaxlocal('rxWikiLink')) @@ -2217,7 +2217,7 @@ function! s:normalize_link_syntax_n() " normalize_link_syntax_v let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord')) if !empty(lnk) - if vimwiki#base#is_diary_file(expand("%:p")) + if vimwiki#base#is_diary_file(expand('%:p')) let sub = vimwiki#base#normalize_link_in_diary(lnk) else let sub = s:safesubstitute( @@ -2230,9 +2230,9 @@ function! s:normalize_link_syntax_n() endfunction -function! s:normalize_link_syntax_v() +function! s:normalize_link_syntax_v() abort let sel_save = &selection - let &selection = "old" + let &selection = 'old' let default_register_save = @" let registertype_save = getregtype('"') @@ -2241,7 +2241,7 @@ function! s:normalize_link_syntax_v() normal! gv""y " Set substitution - if vimwiki#base#is_diary_file(expand("%:p")) + if vimwiki#base#is_diary_file(expand('%:p')) let sub = vimwiki#base#normalize_link_in_diary(@") else let sub = s:safesubstitute(vimwiki#vars#get_global('WikiLinkTemplate1'), @@ -2259,7 +2259,7 @@ function! s:normalize_link_syntax_v() endfunction -function! vimwiki#base#normalize_link(is_visual_mode) +function! vimwiki#base#normalize_link(is_visual_mode) abort if exists('*vimwiki#'.vimwiki#vars#get_wikilocal('syntax').'_base#normalize_link') " Syntax-specific links call vimwiki#{vimwiki#vars#get_wikilocal('syntax')}_base#normalize_link(a:is_visual_mode) @@ -2274,9 +2274,9 @@ function! vimwiki#base#normalize_link(is_visual_mode) endfunction -function! vimwiki#base#detect_nested_syntax() +function! vimwiki#base#detect_nested_syntax() abort let last_word = '\v.*<(\w+)\s*$' - let lines = map(filter(getline(1, "$"), 'v:val =~ "\\%({{{\\|```\\)" && v:val =~ last_word'), + let lines = map(filter(getline(1, '$'), 'v:val =~# "\\%({{{\\|```\\)" && v:val =~# last_word'), \ 'substitute(v:val, last_word, "\\=submatch(1)", "")') let dict = {} for elem in lines @@ -2286,12 +2286,12 @@ function! vimwiki#base#detect_nested_syntax() endfunction -function! vimwiki#base#complete_links_escaped(ArgLead, CmdLine, CursorPos) abort +function! vimwiki#base#complete_links_escaped(ArgLead, CmdLine, CursorPos) abort abort return vimwiki#base#get_globlinks_escaped(a:ArgLead) endfunction -function! vimwiki#base#read_caption(file) +function! vimwiki#base#read_caption(file) abort let rx_header = vimwiki#vars#get_syntaxlocal('rxHeader') if filereadable(a:file) @@ -2307,7 +2307,7 @@ endfunction " For commands VimwikiSearch and VWS -function vimwiki#base#search(search_pattern) +function! vimwiki#base#search(search_pattern) abort if empty(a:search_pattern) echomsg 'Vimwiki Error: No search pattern given.' return @@ -2323,14 +2323,14 @@ function vimwiki#base#search(search_pattern) let path = fnameescape(vimwiki#vars#get_wikilocal('path')) let ext = vimwiki#vars#get_wikilocal('ext') - let cmd = "lvimgrep ".pattern." ".path.'**/*'.ext + let cmd = 'lvimgrep '.pattern.' '.path.'**/*'.ext " Catch E480 error from lvimgrep if there's no match and present " a friendlier error message. try execute cmd catch - echomsg "VimwikiSearch: No match found." + echomsg 'VimwikiSearch: No match found.' endtry endfunction diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim index adea893..b918a1e 100644 --- a/autoload/vimwiki/diary.vim +++ b/autoload/vimwiki/diary.vim @@ -4,13 +4,13 @@ " Home: https://github.com/vimwiki/vimwiki/ -if exists("g:loaded_vimwiki_diary_auto") || &cp +if exists('g:loaded_vimwiki_diary_auto') || &compatible finish endif let g:loaded_vimwiki_diary_auto = 1 -function! s:prefix_zero(num) +function! s:prefix_zero(num) abort if a:num < 10 return '0'.a:num endif @@ -18,20 +18,20 @@ function! s:prefix_zero(num) endfunction -function! s:diary_path(...) +function! s:diary_path(...) abort let idx = a:0 == 0 ? vimwiki#vars#get_bufferlocal('wiki_nr') : a:1 return vimwiki#vars#get_wikilocal('path', idx).vimwiki#vars#get_wikilocal('diary_rel_path', idx) endfunction -function! s:diary_index(...) +function! s:diary_index(...) abort let idx = a:0 == 0 ? vimwiki#vars#get_bufferlocal('wiki_nr') : a:1 return s:diary_path(idx).vimwiki#vars#get_wikilocal('diary_index', idx). \ vimwiki#vars#get_wikilocal('ext', idx) endfunction -function! vimwiki#diary#diary_date_link(...) +function! vimwiki#diary#diary_date_link(...) abort if a:0 return strftime('%Y-%m-%d', a:1) else @@ -40,7 +40,7 @@ function! vimwiki#diary#diary_date_link(...) endfunction -function! s:get_position_links(link) +function! s:get_position_links(link) abort let idx = -1 let links = [] if a:link =~# '^\d\{4}-\d\d-\d\d' @@ -56,11 +56,11 @@ function! s:get_position_links(link) endfunction -function! s:get_month_name(month) +function! s:get_month_name(month) abort return vimwiki#vars#get_global('diary_months')[str2nr(a:month)] endfunction -function! s:get_first_header(fl) +function! s:get_first_header(fl) abort " Get the first header in the file within the first s:vimwiki_max_scan_for_caption lines. let header_rx = vimwiki#vars#get_syntaxlocal('rxHeader') @@ -72,7 +72,7 @@ function! s:get_first_header(fl) return '' endfunction -function! s:get_all_headers(fl, maxlevel) +function! s:get_all_headers(fl, maxlevel) abort " Get a list of all headers in a file up to a given level. " Returns a list whose elements are pairs [level, title] let headers_rx = {} @@ -92,7 +92,7 @@ function! s:get_all_headers(fl, maxlevel) return headers endfunction -function! s:count_headers_level_less_equal(headers, maxlevel) +function! s:count_headers_level_less_equal(headers, maxlevel) abort " Count headers with level <= maxlevel in a list of [level, title] pairs. let l:count = 0 for [header_level, _] in a:headers @@ -103,7 +103,7 @@ function! s:count_headers_level_less_equal(headers, maxlevel) return l:count endfunction -function! s:get_min_header_level(headers) +function! s:get_min_header_level(headers) abort " The minimum level of any header in a list of [level, title] pairs. if len(a:headers) == 0 return 0 @@ -116,7 +116,7 @@ function! s:get_min_header_level(headers) endfunction -function! s:read_captions(files) +function! s:read_captions(files) abort let result = {} let caption_level = vimwiki#vars#get_wikilocal('diary_caption_level') @@ -157,7 +157,7 @@ function! s:read_captions(files) endfunction -function! s:get_diary_files() +function! s:get_diary_files() abort let rx = '^\d\{4}-\d\d-\d\d' let s_files = glob(vimwiki#vars#get_wikilocal('path'). \ vimwiki#vars#get_wikilocal('diary_rel_path').'*'.vimwiki#vars#get_wikilocal('ext')) @@ -171,7 +171,7 @@ function! s:get_diary_files() endfunction -function! s:group_links(links) +function! s:group_links(links) abort let result = {} let p_year = 0 let p_month = 0 @@ -193,7 +193,7 @@ function! s:group_links(links) endfunction -function! s:sort(lst) +function! s:sort(lst) abort if vimwiki#vars#get_wikilocal('diary_sort') ==? 'desc' return reverse(sort(a:lst)) else @@ -205,7 +205,7 @@ endfunction " The given wiki number a:wnum is 1 for the first wiki, 2 for the second and so on. This is in " contrast to most other places, where counting starts with 0. When a:wnum is 0, the current wiki " is used. -function! vimwiki#diary#make_note(wnum, ...) +function! vimwiki#diary#make_note(wnum, ...) abort if a:wnum == 0 let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr') if wiki_nr < 0 " this happens when e.g. VimwikiMakeDiaryNote was called outside a wiki buffer @@ -242,7 +242,7 @@ function! vimwiki#diary#make_note(wnum, ...) call vimwiki#base#open_link(cmd, link, s:diary_index(wiki_nr)) endfunction -function! vimwiki#diary#goto_diary_index(wnum) +function! vimwiki#diary#goto_diary_index(wnum) abort " if wnum = 0 the current wiki is used if a:wnum == 0 @@ -268,7 +268,7 @@ function! vimwiki#diary#goto_diary_index(wnum) endfunction -function! vimwiki#diary#goto_next_day() +function! vimwiki#diary#goto_next_day() abort let link = '' let [idx, links] = s:get_position_links(expand('%:t:r')) @@ -289,7 +289,7 @@ function! vimwiki#diary#goto_next_day() endfunction -function! vimwiki#diary#goto_prev_day() +function! vimwiki#diary#goto_prev_day() abort let link = '' let [idx, links] = s:get_position_links(expand('%:t:r')) @@ -310,10 +310,10 @@ function! vimwiki#diary#goto_prev_day() endfunction -function! vimwiki#diary#generate_diary_section() +function! vimwiki#diary#generate_diary_section() abort let GeneratorDiary = copy(l:) - function! GeneratorDiary.f() + function! GeneratorDiary.f() abort let lines = [] let links_with_captions = s:read_captions(s:get_diary_files()) @@ -332,7 +332,7 @@ function! vimwiki#diary#generate_diary_section() call add(lines, substitute(vimwiki#vars#get_syntaxlocal('rxH3_Template'), \ '__Header__', s:get_month_name(month), '')) - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' for _ in range(vimwiki#vars#get_global('markdown_header_style')) call add(lines, '') endfor @@ -342,7 +342,7 @@ function! vimwiki#diary#generate_diary_section() let topcap = captions['top'] let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate2') - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template') if empty(topcap) " When using markdown syntax, we should ensure we always have a link description. @@ -386,7 +386,7 @@ function! vimwiki#diary#generate_diary_section() return lines endfunction - let current_file = vimwiki#path#path_norm(expand("%:p")) + let current_file = vimwiki#path#path_norm(expand('%:p')) let diary_file = vimwiki#path#path_norm(s:diary_index()) if vimwiki#path#is_equal(current_file, diary_file) let content_rx = '^\%('.vimwiki#vars#get_syntaxlocal('rxHeader').'\)\|'. @@ -406,7 +406,7 @@ endfunction " Callback function for Calendar.vim -function! vimwiki#diary#calendar_action(day, month, year, week, dir) +function! vimwiki#diary#calendar_action(day, month, year, week, dir) abort let day = s:prefix_zero(a:day) let month = s:prefix_zero(a:month) @@ -428,7 +428,7 @@ function! vimwiki#diary#calendar_action(day, month, year, week, dir) endfunction -function vimwiki#diary#calendar_sign(day, month, year) +function! vimwiki#diary#calendar_sign(day, month, year) abort let day = s:prefix_zero(a:day) let month = s:prefix_zero(a:month) let sfile = vimwiki#vars#get_wikilocal('path').vimwiki#vars#get_wikilocal('diary_rel_path'). diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index 80e5164..db3002b 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -4,30 +4,30 @@ " Home: https://github.com/vimwiki/vimwiki/ -if exists("g:loaded_vimwiki_html_auto") || &cp +if exists('g:loaded_vimwiki_html_auto') || &compatible finish endif let g:loaded_vimwiki_html_auto = 1 -function! s:root_path(subdir) +function! s:root_path(subdir) abort return repeat('../', len(split(a:subdir, '[/\\]'))) endfunction -function! s:syntax_supported() - return vimwiki#vars#get_wikilocal('syntax') ==? "default" +function! s:syntax_supported() abort + return vimwiki#vars#get_wikilocal('syntax') ==? 'default' endfunction -function! s:remove_blank_lines(lines) +function! s:remove_blank_lines(lines) abort while !empty(a:lines) && a:lines[-1] =~# '^\s*$' call remove(a:lines, -1) endwhile endfunction -function! s:is_web_link(lnk) +function! s:is_web_link(lnk) abort if a:lnk =~# '^\%(https://\|http://\|www.\|ftp://\|file://\|mailto:\)' return 1 endif @@ -35,7 +35,7 @@ function! s:is_web_link(lnk) endfunction -function! s:is_img_link(lnk) +function! s:is_img_link(lnk) abort if tolower(a:lnk) =~# '\.\%(png\|jpg\|gif\|jpeg\)$' return 1 endif @@ -43,7 +43,7 @@ function! s:is_img_link(lnk) endfunction -function! s:has_abs_path(fname) +function! s:has_abs_path(fname) abort if a:fname =~# '\(^.:\)\|\(^/\)' return 1 endif @@ -51,10 +51,10 @@ function! s:has_abs_path(fname) endfunction -function! s:find_autoload_file(name) +function! s:find_autoload_file(name) abort for path in split(&runtimepath, ',') let fname = path.'/autoload/vimwiki/'.a:name - if glob(fname) != '' + if glob(fname) !=? '' return fname endif endfor @@ -62,19 +62,19 @@ function! s:find_autoload_file(name) endfunction -function! s:default_CSS_full_name(path) +function! s:default_CSS_full_name(path) abort let path = expand(a:path) let css_full_name = path . vimwiki#vars#get_wikilocal('css_name') return css_full_name endfunction -function! s:create_default_CSS(path) +function! s:create_default_CSS(path) abort let css_full_name = s:default_CSS_full_name(a:path) - if glob(css_full_name) == "" + if glob(css_full_name) ==? '' call vimwiki#path#mkdir(fnamemodify(css_full_name, ':p:h')) let default_css = s:find_autoload_file('style.css') - if default_css != '' + if default_css !=? '' let lines = readfile(default_css) call writefile(lines, css_full_name) return 1 @@ -84,8 +84,8 @@ function! s:create_default_CSS(path) endfunction -function! s:template_full_name(name) - if a:name == '' +function! s:template_full_name(name) abort + if a:name ==? '' let name = vimwiki#vars#get_wikilocal('template_default') else let name = a:name @@ -102,11 +102,11 @@ function! s:template_full_name(name) endfunction -function! s:get_html_template(template) +function! s:get_html_template(template) abort " TODO: refactor it!!! let lines=[] - if a:template != '' + if a:template !=? '' let template_name = s:template_full_name(a:template) try let lines = readfile(template_name) @@ -118,7 +118,7 @@ function! s:get_html_template(template) let default_tpl = s:template_full_name('') - if default_tpl == '' + if default_tpl ==? '' let default_tpl = s:find_autoload_file('default.tpl') endif @@ -127,19 +127,19 @@ function! s:get_html_template(template) endfunction -function! s:safe_html_preformatted(line) +function! s:safe_html_preformatted(line) abort let line = substitute(a:line,'<','\<', 'g') let line = substitute(line,'>','\>', 'g') return line endfunction -function! s:escape_html_attribute(string) +function! s:escape_html_attribute(string) abort return substitute(a:string, '"', '\"', 'g') endfunction -function! s:safe_html_line(line) +function! s:safe_html_line(line) abort " escape & < > when producing HTML text " s:lt_pattern, s:gt_pattern depend on g:vimwiki_valid_html_tags " and are set in vimwiki#html#Wiki2HTML() @@ -151,18 +151,18 @@ function! s:safe_html_line(line) endfunction -function! s:delete_html_files(path) +function! s:delete_html_files(path) abort let htmlfiles = split(glob(a:path.'**/*.html'), '\n') for fname in htmlfiles " ignore user html files, e.g. search.html,404.html - if stridx(vimwiki#vars#get_global('user_htmls'), fnamemodify(fname, ":t")) >= 0 + if stridx(vimwiki#vars#get_global('user_htmls'), fnamemodify(fname, ':t')) >= 0 continue endif " delete if there is no corresponding wiki file let subdir = vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path_html'), fname) let wikifile = vimwiki#vars#get_wikilocal('path').subdir. - \fnamemodify(fname, ":t:r").vimwiki#vars#get_wikilocal('ext') + \fnamemodify(fname, ':t:r').vimwiki#vars#get_wikilocal('ext') if filereadable(wikifile) continue endif @@ -176,22 +176,22 @@ function! s:delete_html_files(path) endfunction -function! s:mid(value, cnt) +function! s:mid(value, cnt) abort return strpart(a:value, a:cnt, len(a:value) - 2 * a:cnt) endfunction -function! s:subst_func(line, regexp, func, ...) +function! s:subst_func(line, regexp, func, ...) abort " Substitute text found by regexp with result of " func(matched) function. let pos = 0 let lines = split(a:line, a:regexp, 1) - let res_line = "" + let res_line = '' for line in lines let res_line = res_line.line let matched = matchstr(a:line, a:regexp, pos) - if matched != "" + if matched !=? '' if a:0 let res_line = res_line.{a:func}(matched, a:1) else @@ -204,7 +204,7 @@ function! s:subst_func(line, regexp, func, ...) endfunction -function! s:process_date(placeholders, default_date) +function! s:process_date(placeholders, default_date) abort if !empty(a:placeholders) for [placeholder, row, idx] in a:placeholders let [type, param] = placeholder @@ -217,7 +217,7 @@ function! s:process_date(placeholders, default_date) endfunction -function! s:process_title(placeholders, default_title) +function! s:process_title(placeholders, default_title) abort if !empty(a:placeholders) for [placeholder, row, idx] in a:placeholders let [type, param] = placeholder @@ -230,15 +230,15 @@ function! s:process_title(placeholders, default_title) endfunction -function! s:is_html_uptodate(wikifile) +function! s:is_html_uptodate(wikifile) abort let tpl_time = -1 let tpl_file = s:template_full_name('') - if tpl_file != '' + if tpl_file !=? '' let tpl_time = getftime(tpl_file) endif - let wikifile = fnamemodify(a:wikifile, ":p") + let wikifile = fnamemodify(a:wikifile, ':p') if vimwiki#vars#get_wikilocal('html_filename_parameterization') let parameterized_wikiname = s:parameterized_wikiname(wikifile) @@ -246,7 +246,7 @@ function! s:is_html_uptodate(wikifile) \ vimwiki#vars#get_bufferlocal('subdir') . parameterized_wikiname) else let htmlfile = expand(vimwiki#vars#get_wikilocal('path_html') . - \ vimwiki#vars#get_bufferlocal('subdir') . fnamemodify(wikifile, ":t:r").".html") + \ vimwiki#vars#get_bufferlocal('subdir') . fnamemodify(wikifile, ':t:r').'.html') endif if getftime(wikifile) <= getftime(htmlfile) && tpl_time <= getftime(htmlfile) @@ -255,17 +255,17 @@ function! s:is_html_uptodate(wikifile) return 0 endfunction -function! s:parameterized_wikiname(wikifile) - let initial = fnamemodify(a:wikifile, ":t:r") +function! s:parameterized_wikiname(wikifile) abort + let initial = fnamemodify(a:wikifile, ':t:r') let lower_sanitized = tolower(initial) - let substituted = substitute(lower_sanitized, '[^a-z0-9_-]\+',"-", "g") - let substituted = substitute(substituted, '\-\+',"-", "g") - let substituted = substitute(substituted, '^-', '', "g") - let substituted = substitute(substituted, '-$', '', "g") - return substitute(substituted, '\-\+',"-", "g") . ".html" + let substituted = substitute(lower_sanitized, '[^a-z0-9_-]\+','-', 'g') + let substituted = substitute(substituted, '\-\+','-', 'g') + let substituted = substitute(substituted, '^-', '', 'g') + let substituted = substitute(substituted, '-$', '', 'g') + return substitute(substituted, '\-\+','-', 'g') . '.html' endfunction -function! s:html_insert_contents(html_lines, content) +function! s:html_insert_contents(html_lines, content) abort let lines = [] for line in a:html_lines if line =~# '%content%' @@ -288,27 +288,27 @@ function! s:html_insert_contents(html_lines, content) endfunction -function! s:tag_eqin(value) +function! s:tag_eqin(value) abort " mathJAX wants \( \) for inline maths return '\('.s:mid(a:value, 1).'\)' endfunction -function! s:tag_em(value) +function! s:tag_em(value) abort return ''.s:mid(a:value, 1).'' endfunction -function! s:tag_strong(value, header_ids) +function! s:tag_strong(value, header_ids) abort let text = s:mid(a:value, 1) let id = s:escape_html_attribute(text) let complete_id = '' for l in range(6) - if a:header_ids[l][0] != '' + if a:header_ids[l][0] !=? '' let complete_id .= a:header_ids[l][0].'-' endif endfor - if a:header_ids[5][0] == '' + if a:header_ids[5][0] ==? '' let complete_id = complete_id[:-2] endif let complete_id .= '-'.id @@ -317,14 +317,14 @@ function! s:tag_strong(value, header_ids) endfunction -function! s:tag_tags(value, header_ids) +function! s:tag_tags(value, header_ids) abort let complete_id = '' for level in range(6) - if a:header_ids[level][0] != '' + if a:header_ids[level][0] !=? '' let complete_id .= a:header_ids[level][0].'-' endif endfor - if a:header_ids[5][0] == '' + if a:header_ids[5][0] ==? '' let complete_id = complete_id[:-2] endif let complete_id = s:escape_html_attribute(complete_id) @@ -339,44 +339,44 @@ function! s:tag_tags(value, header_ids) endfunction -function! s:tag_todo(value) +function! s:tag_todo(value) abort return ''.a:value.'' endfunction -function! s:tag_strike(value) +function! s:tag_strike(value) abort return ''.s:mid(a:value, 2).'' endfunction -function! s:tag_super(value) +function! s:tag_super(value) abort return ''.s:mid(a:value, 1).'' endfunction -function! s:tag_sub(value) +function! s:tag_sub(value) abort return ''.s:mid(a:value, 2).'' endfunction -function! s:tag_code(value) +function! s:tag_code(value) abort let l:retstr = ' 0.5) - \ ? "black" : "white" + \ ? 'black' : 'white' let l:retstr .= \ " style='background-color:" . l:str . - \ ";color:" . l:fg_color . ";'" + \ ';color:' . l:fg_color . ";'" endif let l:retstr .= '>'.s:safe_html_preformatted(l:str).'' @@ -386,7 +386,7 @@ endfunction " match n-th ARG within {{URL[|ARG1|ARG2|...]}} " *c,d,e),... -function! s:incl_match_arg(nn_index) +function! s:incl_match_arg(nn_index) abort let rx = vimwiki#vars#get_global('rxWikiInclPrefix'). vimwiki#vars#get_global('rxWikiInclUrl') let rx = rx . repeat(vimwiki#vars#get_global('rxWikiInclSeparator') . \ vimwiki#vars#get_global('rxWikiInclArg'), a:nn_index-1) @@ -400,10 +400,10 @@ function! s:incl_match_arg(nn_index) endfunction -function! s:linkify_link(src, descr) +function! s:linkify_link(src, descr) abort let src_str = ' href="'.s:escape_html_attribute(a:src).'"' let descr = vimwiki#u#trim(a:descr) - let descr = (descr == "" ? a:src : descr) + let descr = (descr ==? '' ? a:src : descr) let descr_str = (descr =~# vimwiki#vars#get_global('rxWikiIncl') \ ? s:tag_wikiincl(descr) \ : descr) @@ -411,15 +411,15 @@ function! s:linkify_link(src, descr) endfunction -function! s:linkify_image(src, descr, verbatim_str) +function! s:linkify_image(src, descr, verbatim_str) abort let src_str = ' src="'.a:src.'"' - let descr_str = (a:descr != '' ? ' alt="'.a:descr.'"' : '') - let verbatim_str = (a:verbatim_str != '' ? ' '.a:verbatim_str : '') + let descr_str = (a:descr !=? '' ? ' alt="'.a:descr.'"' : '') + let verbatim_str = (a:verbatim_str !=? '' ? ' '.a:verbatim_str : '') return '' endfunction -function! s:tag_weblink(value) +function! s:tag_weblink(value) abort " Weblink Template -> descr let str = a:value let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWeblinkMatchUrl')) @@ -429,7 +429,7 @@ function! s:tag_weblink(value) endfunction -function! s:tag_wikiincl(value) +function! s:tag_wikiincl(value) abort " {{imgurl|arg1|arg2}} -> ??? " {{imgurl}} -> " {{imgurl|descr|style="A"}} -> descr @@ -438,7 +438,7 @@ function! s:tag_wikiincl(value) " custom transclusions let line = VimwikiWikiIncludeHandler(str) " otherwise, assume image transclusion - if line == '' + if line ==? '' let url_0 = matchstr(str, vimwiki#vars#get_global('rxWikiInclMatchUrl')) let descr = matchstr(str, s:incl_match_arg(1)) let verbatim_str = matchstr(str, s:incl_match_arg(2)) @@ -463,7 +463,7 @@ function! s:tag_wikiincl(value) endfunction -function! s:tag_wikilink(value) +function! s:tag_wikilink(value) abort " [[url]] -> url " [[url|descr]] -> descr " [[url|{{...}}]] -> ... @@ -475,10 +475,10 @@ function! s:tag_wikilink(value) let url = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchUrl')) let descr = matchstr(str, vimwiki#vars#get_syntaxlocal('rxWikiLinkMatchDescr')) let descr = vimwiki#u#trim(descr) - let descr = (descr != '' ? descr : url) + let descr = (descr !=? '' ? descr : url) let line = VimwikiLinkConverter(url, s:current_wiki_file, s:current_html_file) - if line == '' + if line ==? '' let link_infos = vimwiki#base#resolve_link(url, s:current_wiki_file) if link_infos.scheme ==# 'file' @@ -492,14 +492,14 @@ function! s:tag_wikilink(value) let html_link = vimwiki#path#relpath( \ fnamemodify(s:current_wiki_file, ':h'), \ fnamemodify(link_infos.filename, ':r')) - if html_link !~ '\m/$' + if html_link !~? '\m/$' let html_link .= '.html' endif else " other schemes, like http, are left untouched let html_link = link_infos.filename endif - if link_infos.anchor != '' + if link_infos.anchor !=? '' let anchor = substitute(link_infos.anchor, '#', '-', 'g') let html_link .= '#'.anchor endif @@ -511,19 +511,19 @@ function! s:tag_wikilink(value) endfunction -function! s:tag_remove_internal_link(value) +function! s:tag_remove_internal_link(value) abort let value = s:mid(a:value, 2) let line = '' if value =~# '|' - let link_parts = split(value, "|", 1) + let link_parts = split(value, '|', 1) else - let link_parts = split(value, "][", 1) + let link_parts = split(value, '][', 1) endif if len(link_parts) > 1 if len(link_parts) < 3 - let style = "" + let style = '' else let style = link_parts[2] endif @@ -535,7 +535,7 @@ function! s:tag_remove_internal_link(value) endfunction -function! s:tag_remove_external_link(value) +function! s:tag_remove_external_link(value) abort let value = s:mid(a:value, 1) let line = '' @@ -543,7 +543,7 @@ function! s:tag_remove_external_link(value) let lnkElements = split(value) let head = lnkElements[0] let rest = join(lnkElements[1:]) - if rest == "" + if rest ==? '' let rest = head endif let line = rest @@ -558,7 +558,7 @@ function! s:tag_remove_external_link(value) endfunction -function! s:make_tag(line, regexp, func, ...) +function! s:make_tag(line, regexp, func, ...) abort " Make tags for a given matched regexp. " Exclude preformatted text and href links. " FIXME @@ -584,7 +584,7 @@ function! s:make_tag(line, regexp, func, ...) " result: " ['hello world ', ' simple ', 'type of', ' prg'] let lines = split(a:line, patt_splitter, 1) - let res_line = "" + let res_line = '' for line in lines if a:0 let res_line = res_line.s:subst_func(line, a:regexp, a:func, a:1) @@ -599,7 +599,7 @@ function! s:make_tag(line, regexp, func, ...) endfunction -function! s:process_tags_remove_links(line) +function! s:process_tags_remove_links(line) abort let line = a:line let line = s:make_tag(line, '\[\[.\{-}\]\]', 's:tag_remove_internal_link') let line = s:make_tag(line, '\[.\{-}\]', 's:tag_remove_external_link') @@ -607,7 +607,7 @@ function! s:process_tags_remove_links(line) endfunction -function! s:process_tags_typefaces(line, header_ids) +function! s:process_tags_typefaces(line, header_ids) abort let line = a:line let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxItalic'), 's:tag_em') let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxBold'), 's:tag_strong', a:header_ids) @@ -622,7 +622,7 @@ function! s:process_tags_typefaces(line, header_ids) endfunction -function! s:process_tags_links(line) +function! s:process_tags_links(line) abort let line = a:line let line = s:make_tag(line, vimwiki#vars#get_syntaxlocal('rxWikiLink'), 's:tag_wikilink') let line = s:make_tag(line, vimwiki#vars#get_global('rxWikiIncl'), 's:tag_wikiincl') @@ -631,23 +631,23 @@ function! s:process_tags_links(line) endfunction -function! s:process_inline_tags(line, header_ids) +function! s:process_inline_tags(line, header_ids) abort let line = s:process_tags_links(a:line) let line = s:process_tags_typefaces(line, a:header_ids) return line endfunction -function! s:close_tag_pre(pre, ldest) +function! s:close_tag_pre(pre, ldest) abort if a:pre[0] - call insert(a:ldest, "") + call insert(a:ldest, '') return 0 endif return a:pre endfunction -function! s:close_tag_math(math, ldest) +function! s:close_tag_math(math, ldest) abort if a:math[0] call insert(a:ldest, "\\\]") return 0 @@ -656,25 +656,25 @@ function! s:close_tag_math(math, ldest) endfunction -function! s:close_tag_quote(quote, ldest) +function! s:close_tag_quote(quote, ldest) abort if a:quote - call insert(a:ldest, "") + call insert(a:ldest, '') return 0 endif return a:quote endfunction -function! s:close_tag_para(para, ldest) +function! s:close_tag_para(para, ldest) abort if a:para - call insert(a:ldest, "

") + call insert(a:ldest, '

') return 0 endif return a:para endfunction -function! s:close_tag_table(table, ldest, header_ids) +function! s:close_tag_table(table, ldest, header_ids) abort " The first element of table list is a string which tells us if table should be centered. " The rest elements are rows which are lists of columns: " ['center', @@ -684,7 +684,7 @@ function! s:close_tag_table(table, ldest, header_ids) " ] " And CELLx is: { 'body': 'col_x', 'rowspan': r, 'colspan': c } - function! s:sum_rowspan(table) + function! s:sum_rowspan(table) abort let table = a:table " Get max cells @@ -716,7 +716,7 @@ function! s:close_tag_table(table, ldest, header_ids) endfor endfunction - function! s:sum_colspan(table) + function! s:sum_colspan(table) abort for row in a:table[1:] let cols = 1 @@ -731,7 +731,7 @@ function! s:close_tag_table(table, ldest, header_ids) endfor endfunction - function! s:close_tag_row(row, header, ldest, header_ids) + function! s:close_tag_row(row, header, ldest, header_ids) abort call add(a:ldest, '') " Set tag element of columns @@ -775,7 +775,7 @@ function! s:close_tag_table(table, ldest, header_ids) if table[0] ==# 'center' call add(ldest, "") else - call add(ldest, "
") + call add(ldest, '
') endif " Empty lists are table separators. @@ -803,14 +803,14 @@ function! s:close_tag_table(table, ldest, header_ids) call s:close_tag_row(row, 0, ldest, a:header_ids) endfor endif - call add(ldest, "
") + call add(ldest, '') let table = [] endif return table endfunction -function! s:close_tag_list(lists, ldest) +function! s:close_tag_list(lists, ldest) abort while len(a:lists) let item = remove(a:lists, 0) call insert(a:ldest, item[0]) @@ -818,16 +818,16 @@ function! s:close_tag_list(lists, ldest) endfunction -function! s:close_tag_def_list(deflist, ldest) +function! s:close_tag_def_list(deflist, ldest) abort if a:deflist - call insert(a:ldest, "") + call insert(a:ldest, '') return 0 endif return a:deflist endfunction -function! s:process_tag_pre(line, pre) +function! s:process_tag_pre(line, pre) abort " pre is the list of [is_in_pre, indent_of_pre] "XXX always outputs a single line or empty list! let lines = [] @@ -839,16 +839,16 @@ function! s:process_tag_pre(line, pre) let class = matchstr(a:line, '{{{\zs.*$') "FIXME class cannot contain arbitrary strings let class = substitute(class, '\s\+$', '', 'g') - if class != "" - call add(lines, "
")
+    if class !=? ''
+      call add(lines, '
')
     else
-      call add(lines, "
")
+      call add(lines, '
')
     endif
     let pre = [1, len(matchstr(a:line, '^\s*\ze{{{'))]
     let processed = 1
   elseif pre[0] && a:line =~# '^\s*}}}\s*$'
     let pre = [0, 0]
-    call add(lines, "
") + call add(lines, '
') let processed = 1 elseif pre[0] let processed = 1 @@ -860,7 +860,7 @@ function! s:process_tag_pre(line, pre) endfunction -function! s:process_tag_math(line, math) +function! s:process_tag_math(line, math) abort " math is the list of [is_in_math, indent_of_math] let lines = [] let math = a:math @@ -872,9 +872,9 @@ function! s:process_tag_math(line, math) " 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 != "" + if s:current_math_env !=? '' call add(lines, substitute(class, '^%\(\S\+\)%', '\\begin{\1}', '')) - elseif class != "" + elseif class !=? '' call add(lines, "\\\[".class) else call add(lines, "\\\[") @@ -883,8 +883,8 @@ function! s:process_tag_math(line, math) let processed = 1 elseif math[0] && a:line =~# '^\s*}}\$\s*$' let math = [0, 0] - if s:current_math_env != "" - call add(lines, "\\end{".s:current_math_env."}") + if s:current_math_env !=? '' + call add(lines, "\\end{".s:current_math_env.'}') else call add(lines, "\\\]") endif @@ -897,28 +897,28 @@ function! s:process_tag_math(line, math) endfunction -function! s:process_tag_quote(line, quote) +function! s:process_tag_quote(line, quote) abort let lines = [] let quote = a:quote let processed = 0 if a:line =~# '^\s\{4,}\S' if !quote - call add(lines, "
") + call add(lines, '
') let quote = 1 endif let processed = 1 call add(lines, substitute(a:line, '^\s*', '', '')) elseif quote - call add(lines, "
") + call add(lines, '
') let quote = 0 endif return [processed, lines, quote] endfunction -function! s:process_tag_list(line, lists) +function! s:process_tag_list(line, lists) abort - function! s:add_checkbox(line, rx_list) + function! s:add_checkbox(line, rx_list) abort let st_tag = '
  • ' let chk = matchlist(a:line, a:rx_list) if !empty(chk) && len(chk[1]) > 0 @@ -969,7 +969,7 @@ function! s:process_tag_list(line, lists) let lstRegExp = '' endif - if lstSym != '' + if lstSym !=? '' " To get proper indent level 'retab' the line -- change all tabs " to spaces*tabstop let line = substitute(a:line, '\t', repeat(' ', &tabstop), 'g') @@ -1015,55 +1015,55 @@ function! s:process_tag_list(line, lists) endfunction -function! s:process_tag_def_list(line, deflist) +function! s:process_tag_def_list(line, deflist) abort let lines = [] let deflist = a:deflist let processed = 0 let matches = matchlist(a:line, '\(^.*\)::\%(\s\|$\)\(.*\)') if !deflist && len(matches) > 0 - call add(lines, "
    ") + call add(lines, '
    ') let deflist = 1 endif if deflist && len(matches) > 0 - if matches[1] != '' - call add(lines, "
    ".matches[1]."
    ") + if matches[1] !=? '' + call add(lines, '
    '.matches[1].'
    ') endif - if matches[2] != '' - call add(lines, "
    ".matches[2]."
    ") + if matches[2] !=? '' + call add(lines, '
    '.matches[2].'
    ') endif let processed = 1 elseif deflist let deflist = 0 - call add(lines, "
    ") + call add(lines, '
    ') endif return [processed, lines, deflist] endfunction -function! s:process_tag_para(line, para) +function! s:process_tag_para(line, para) abort let lines = [] let para = a:para let processed = 0 if a:line =~# '^\s\{,3}\S' if !para - call add(lines, "

    ") + call add(lines, '

    ') let para = 1 endif let processed = 1 if vimwiki#vars#get_global('text_ignore_newline') call add(lines, a:line) else - call add(lines, a:line."
    ") + call add(lines, a:line.'
    ') endif elseif para && a:line =~# '^\s*$' - call add(lines, "

    ") + call add(lines, '

    ') let para = 0 endif return [processed, lines, para] endfunction -function! s:process_tag_h(line, id) +function! s:process_tag_h(line, id) abort let line = a:line let processed = 0 let h_level = 0 @@ -1092,7 +1092,7 @@ function! s:process_tag_h(line, id) for l in range(h_level-1) let h_number .= a:id[l][1].'.' - if a:id[l][0] != '' + if a:id[l][0] !=? '' let h_complete_id .= a:id[l][0].'-' endif endfor @@ -1134,7 +1134,7 @@ function! s:process_tag_h(line, id) endfunction -function! s:process_tag_hr(line) +function! s:process_tag_hr(line) abort let line = a:line let processed = 0 if a:line =~# '^-----*$' @@ -1145,8 +1145,8 @@ function! s:process_tag_hr(line) endfunction -function! s:process_tag_table(line, table, header_ids) - function! s:table_empty_cell(value) +function! s:process_tag_table(line, table, header_ids) abort + function! s:table_empty_cell(value) abort let cell = {} if a:value =~# '^\s*\\/\s*$' @@ -1170,7 +1170,7 @@ function! s:process_tag_table(line, table, header_ids) return cell endfunction - function! s:table_add_row(table, line) + function! s:table_add_row(table, line) abort if empty(a:table) if a:line =~# '^\s\+' let row = ['center', []] @@ -1205,7 +1205,7 @@ function! s:process_tag_table(line, table, header_ids) endfunction -function! s:parse_line(line, state) +function! s:parse_line(line, state) abort let state = {} let state.para = a:state.para let state.quote = a:state.quote @@ -1428,14 +1428,14 @@ function! s:parse_line(line, state) endfunction -function! s:use_custom_wiki2html() +function! s:use_custom_wiki2html() abort let custom_wiki2html = vimwiki#vars#get_wikilocal('custom_wiki2html') return !empty(custom_wiki2html) && \ (s:file_exists(custom_wiki2html) || s:binary_exists(custom_wiki2html)) endfunction -function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) +function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) abort call vimwiki#path#mkdir(a:path) let output = system(vimwiki#vars#get_wikilocal('custom_wiki2html'). ' '. \ a:force. ' '. @@ -1455,19 +1455,19 @@ function! vimwiki#html#CustomWiki2HTML(path, wikifile, force) \ (len(vimwiki#vars#get_wikilocal('custom_wiki2html_args')) > 0 ? \ vimwiki#vars#get_wikilocal('custom_wiki2html_args') : '-')) " Echo if non void - if output !~ "^\s*$" + if output !~? '^\s*$' echomsg output endif endfunction -function! s:convert_file(path_html, wikifile) +function! s:convert_file(path_html, wikifile) abort let done = 0 - let wikifile = fnamemodify(a:wikifile, ":p") + let wikifile = fnamemodify(a:wikifile, ':p') let path_html = expand(a:path_html).vimwiki#vars#get_bufferlocal('subdir') - let htmlfile = fnamemodify(wikifile, ":t:r").'.html' + let htmlfile = fnamemodify(wikifile, ':t:r').'.html' " the currently processed file name is needed when processing links " yeah yeah, shame on me for using (quasi-) global variables @@ -1511,7 +1511,7 @@ function! s:convert_file(path_html, wikifile) " prepare constants for s:safe_html_line() let s:lt_pattern = '<' let s:gt_pattern = '>' - if vimwiki#vars#get_global('valid_html_tags') != '' + if vimwiki#vars#get_global('valid_html_tags') !=? '' let tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|') let s:lt_pattern = '\c<\%(/\?\%('.tags.'\)\%(\s\{-1}\S\{-}\)\{-}/\?>\)\@!' let s:gt_pattern = '\c\%(' @@ -1549,7 +1549,7 @@ function! s:convert_file(path_html, wikifile) if nohtml - echon "\r"."%nohtml placeholder found" + echon "\r".'%nohtml placeholder found' return '' endif @@ -1567,7 +1567,7 @@ function! s:convert_file(path_html, wikifile) call s:close_tag_table(state.table, lines, state.header_ids) call extend(ldest, lines) - let title = s:process_title(placeholders, fnamemodify(a:wikifile, ":t:r")) + let title = s:process_title(placeholders, fnamemodify(a:wikifile, ':t:r')) let date = s:process_date(placeholders, strftime('%Y-%m-%d')) let wiki_path = strpart(s:current_wiki_file, strlen(vimwiki#vars#get_wikilocal('path'))) @@ -1585,7 +1585,7 @@ function! s:convert_file(path_html, wikifile) call map(html_lines, 'substitute(v:val, "%css%", "'. css_name .'", "g")') let enc = &fileencoding - if enc == '' + if enc ==? '' let enc = &encoding endif call map(html_lines, 'substitute(v:val, "%encoding%", "'. enc .'", "g")') @@ -1606,16 +1606,16 @@ function! s:convert_file(path_html, wikifile) endfunction -function! vimwiki#html#Wiki2HTML(path_html, wikifile) +function! vimwiki#html#Wiki2HTML(path_html, wikifile) abort let result = s:convert_file(a:path_html, a:wikifile) - if result != '' + if result !=? '' call s:create_default_CSS(a:path_html) endif return result endfunction -function! vimwiki#html#WikiAll2HTML(path_html, force) +function! vimwiki#html#WikiAll2HTML(path_html, force) abort if !s:syntax_supported() && !s:use_custom_wiki2html() echomsg 'Vimwiki Error: Conversion to HTML is not supported for this syntax' return @@ -1623,7 +1623,7 @@ function! vimwiki#html#WikiAll2HTML(path_html, force) echomsg 'Vimwiki: Saving Vimwiki files ...' let save_eventignore = &eventignore - let &eventignore = "all" + let &eventignore = 'all' try wall catch @@ -1650,7 +1650,7 @@ function! vimwiki#html#WikiAll2HTML(path_html, force) let wikifiles = split(glob(vimwiki#vars#get_wikilocal('path').'**/*'. \ vimwiki#vars#get_wikilocal('ext')), '\n') for wikifile in wikifiles - let wikifile = fnamemodify(wikifile, ":p") + let wikifile = fnamemodify(wikifile, ':p') " temporarily adjust 'subdir' and 'invsubdir' state variables let subdir = vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), wikifile) @@ -1680,29 +1680,29 @@ function! vimwiki#html#WikiAll2HTML(path_html, force) endfunction -function! s:file_exists(fname) +function! s:file_exists(fname) abort return !empty(getftype(expand(a:fname))) endfunction -function! s:binary_exists(fname) +function! s:binary_exists(fname) abort return executable(expand(a:fname)) endfunction -function! s:get_wikifile_url(wikifile) +function! s:get_wikifile_url(wikifile) abort return vimwiki#vars#get_wikilocal('path_html') . \ vimwiki#base#subdir(vimwiki#vars#get_wikilocal('path'), a:wikifile). - \ fnamemodify(a:wikifile, ":t:r").'.html' + \ fnamemodify(a:wikifile, ':t:r').'.html' endfunction -function! vimwiki#html#PasteUrl(wikifile) +function! vimwiki#html#PasteUrl(wikifile) abort execute 'r !echo file://'.s:get_wikifile_url(a:wikifile) endfunction -function! vimwiki#html#CatUrl(wikifile) +function! vimwiki#html#CatUrl(wikifile) abort execute '!echo file://'.s:get_wikifile_url(a:wikifile) endfunction diff --git a/autoload/vimwiki/lst.vim b/autoload/vimwiki/lst.vim index c22a00e..bebd89b 100644 --- a/autoload/vimwiki/lst.vim +++ b/autoload/vimwiki/lst.vim @@ -4,7 +4,7 @@ " Home: https://github.com/vimwiki/vimwiki/ -if exists("g:loaded_vimwiki_list_auto") || &cp +if exists('g:loaded_vimwiki_list_auto') || &compatible finish endif let g:loaded_vimwiki_list_auto = 1 @@ -14,12 +14,12 @@ let g:loaded_vimwiki_list_auto = 1 " incrementation functions for the various kinds of numbers " --------------------------------------------------------- -function! s:increment_1(value) +function! s:increment_1(value) abort return eval(a:value) + 1 endfunction -function! s:increment_A(value) +function! s:increment_A(value) abort let list_of_chars = split(a:value, '.\zs') let done = 0 for idx in reverse(range(len(list_of_chars))) @@ -39,7 +39,7 @@ function! s:increment_A(value) endfunction -function! s:increment_a(value) +function! s:increment_a(value) abort let list_of_chars = split(a:value, '.\zs') let done = 0 for idx in reverse(range(len(list_of_chars))) @@ -59,7 +59,7 @@ function! s:increment_a(value) endfunction -function! s:increment_I(value) +function! s:increment_I(value) abort let subst_list = [ ['XLVIII$', 'IL'], ['VIII$', 'IX'], ['III$', 'IV'], \ ['DCCCXCIX$', 'CM'], ['CCCXCIX$', 'CD'], ['LXXXIX$', 'XC'], \ ['XXXIX$', 'XL'], ['\(I\{1,2\}\)$', '\1I'], ['CDXCIX$', 'D'], @@ -74,7 +74,7 @@ function! s:increment_I(value) endfunction -function! s:increment_i(value) +function! s:increment_i(value) abort let subst_list = [ ['xlviii$', 'il'], ['viii$', 'ix'], ['iii$', 'iv'], \ ['dcccxcix$', 'cm'], ['cccxcix$', 'cd'], ['lxxxix$', 'xc'], \ ['xxxix$', 'xl'], ['\(i\{1,2\}\)$', '\1i'], ['cdxcix$', 'd'], @@ -93,41 +93,41 @@ endfunction " utility functions " --------------------------------------------------------- -function! s:substitute_rx_in_line(lnum, pattern, new_string) +function! s:substitute_rx_in_line(lnum, pattern, new_string) abort call setline(a:lnum, substitute(getline(a:lnum), a:pattern, a:new_string, '')) endfunction -function! s:substitute_string_in_line(lnum, old_string, new_string) +function! s:substitute_string_in_line(lnum, old_string, new_string) abort call s:substitute_rx_in_line(a:lnum, vimwiki#u#escape(a:old_string), a:new_string) endfunction -function! s:first_char(string) +function! s:first_char(string) abort return matchstr(a:string, '^.') endfunction -if exists("*strdisplaywidth") - function! s:string_length(str) +if exists('*strdisplaywidth') + function! s:string_length(str) abort return strdisplaywidth(a:str) endfunction else - function! s:string_length(str) + function! s:string_length(str) abort return strlen(substitute(a:str, '.', 'x', 'g')) endfunction endif -function! vimwiki#lst#default_symbol() +function! vimwiki#lst#default_symbol() abort return vimwiki#vars#get_syntaxlocal('list_markers')[0] endfunction -function! vimwiki#lst#get_list_margin() +function! vimwiki#lst#get_list_margin() abort let list_margin = vimwiki#vars#get_wikilocal('list_margin') if list_margin < 0 - return &sw + return &shiftwidth else return list_margin endif @@ -136,7 +136,7 @@ endfunction "Returns: the column where the text of a line starts (possible list item "markers and checkboxes are skipped) -function! s:text_begin(lnum) +function! s:text_begin(lnum) abort return s:string_length(matchstr(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem'))) endfunction @@ -144,7 +144,7 @@ endfunction "Returns: 2 if there is a marker and text " 1 for a marker and no text " 0 for no marker at all (empty line or only text) -function! s:line_has_marker(lnum) +function! s:line_has_marker(lnum) abort if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*$' return 1 elseif getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxListItem').'\s*\S' @@ -165,7 +165,7 @@ endfunction "type - 1 for bulleted item, 2 for numbered item, 0 for a regular line "mrkr - the concrete marker, e.g. '**' or 'b)' "cb - the char in the checkbox or '' if there is no checkbox -function! s:get_item(lnum) +function! s:get_item(lnum) abort let item = {'lnum': a:lnum} if a:lnum == 0 || a:lnum > line('$') let item.type = 0 @@ -174,15 +174,15 @@ function! s:get_item(lnum) let matches = matchlist(getline(a:lnum), vimwiki#vars#get_syntaxlocal('rxListItem')) if matches == [] || - \ (matches[1] == '' && matches[2] == '') || - \ (matches[1] != '' && matches[2] != '') + \ (matches[1] ==? '' && matches[2] ==? '') || + \ (matches[1] !=? '' && matches[2] !=? '') let item.type = 0 return item endif let item.cb = matches[3] - if matches[1] != '' + if matches[1] !=? '' let item.type = 1 let item.mrkr = matches[1] else @@ -194,14 +194,14 @@ function! s:get_item(lnum) endfunction -function! s:empty_item() +function! s:empty_item() abort return {'type': 0} endfunction "Returns: level of the line "0 is the 'highest' level -function! s:get_level(lnum) +function! s:get_level(lnum) abort if getline(a:lnum) =~# '^\s*$' return 0 endif @@ -209,7 +209,7 @@ function! s:get_level(lnum) let level = indent(a:lnum) else let level = s:string_length(matchstr(getline(a:lnum), - \ vimwiki#vars#get_syntaxlocal(rx_bullet_chars)))-1 + \ vimwiki#vars#get_syntaxlocal('rx_bullet_chars')))-1 if level < 0 let level = (indent(a:lnum) == 0) ? 0 : 9999 endif @@ -221,7 +221,7 @@ endfunction "Returns: 1, a, i, A, I or '' "If in doubt if alphanumeric character or romanian "numeral, peek in the previous line -function! s:guess_kind_of_numbered_item(item) +function! s:guess_kind_of_numbered_item(item) abort if a:item.type != 2 | return '' | endif let number_chars = a:item.mrkr[:-2] let divisor = a:item.mrkr[-1:] @@ -282,14 +282,14 @@ function! s:guess_kind_of_numbered_item(item) endfunction -function! s:regexp_of_marker(item) +function! s:regexp_of_marker(item) abort if a:item.type == 1 return vimwiki#u#escape(a:item.mrkr) elseif a:item.type == 2 let number_divisors = vimwiki#vars#get_syntaxlocal('number_divisors') for ki in ['d', 'u', 'l'] let match = matchstr(a:item.mrkr, '\'.ki.'\+['.number_divisors.']') - if match != '' + if match !=? '' return '\'.ki.'\+'.vimwiki#u#escape(match[-1:]) endif endfor @@ -300,7 +300,7 @@ endfunction " Returns: Whether or not the checkbox of a list item is [X] or [-] -function! s:is_closed(item) +function! s:is_closed(item) abort let state = a:item.cb return state ==# vimwiki#vars#get_syntaxlocal('listsyms_list')[-1] \ || state ==# vimwiki#vars#get_global('listsym_rejected') @@ -312,7 +312,7 @@ endfunction "Returns: the list item after a:item or an empty item "If a:ignore_kind is 1, the markers can differ -function! s:get_next_list_item(item, ignore_kind) +function! s:get_next_list_item(item, ignore_kind) abort let org_lvl = s:get_level(a:item.lnum) if !a:ignore_kind let org_regex = s:regexp_of_marker(a:item) @@ -336,7 +336,7 @@ endfunction "Returns: the list item before a:item or an empty item "If a:ignore_kind is 1, the markers can differ -function! s:get_prev_list_item(item, ignore_kind) +function! s:get_prev_list_item(item, ignore_kind) abort let org_lvl = s:get_level(a:item.lnum) if !a:ignore_kind let org_regex = s:regexp_of_marker(a:item) @@ -358,7 +358,7 @@ function! s:get_prev_list_item(item, ignore_kind) endfunction -function! s:get_item_of_level(cur_ln, cur_lvl, org_lvl, org_regex) +function! s:get_item_of_level(cur_ln, cur_lvl, org_lvl, org_regex) abort let cur_linecontent = getline(a:cur_ln) if a:cur_lvl == a:org_lvl if cur_linecontent =~# '^\s*'.a:org_regex.'\s' @@ -372,7 +372,7 @@ function! s:get_item_of_level(cur_ln, cur_lvl, org_lvl, org_regex) endfunction -function! s:get_any_item_of_level(cur_ln, cur_lvl, org_lvl) +function! s:get_any_item_of_level(cur_ln, cur_lvl, org_lvl) abort if a:cur_lvl == a:org_lvl return s:get_item(a:cur_ln) elseif a:cur_lvl < a:org_lvl @@ -381,7 +381,7 @@ function! s:get_any_item_of_level(cur_ln, cur_lvl, org_lvl) endfunction -function! s:get_first_item_in_list(item, ignore_kind) +function! s:get_first_item_in_list(item, ignore_kind) abort let cur_item = a:item while 1 let prev_item = s:get_prev_list_item(cur_item, a:ignore_kind) @@ -395,7 +395,7 @@ function! s:get_first_item_in_list(item, ignore_kind) endfunction -function! s:get_last_item_in_list(item, ignore_kind) +function! s:get_last_item_in_list(item, ignore_kind) abort let cur_item = a:item while 1 let next_item = s:get_next_list_item(cur_item, a:ignore_kind) @@ -413,7 +413,7 @@ endfunction "0 in case of nonvalid line. "If there is no second argument, 0 is returned at a header, otherwise the "header is skipped -function! s:get_next_line(lnum, ...) +function! s:get_next_line(lnum, ...) abort if getline(a:lnum) =~# vimwiki#vars#get_syntaxlocal('rxPreStart') let cur_ln = a:lnum + 1 while cur_ln <= line('$') && getline(cur_ln) !~# vimwiki#vars#get_syntaxlocal('rxPreEnd') @@ -441,7 +441,7 @@ endfunction "Returns: lnum-1 in most cases, but skips blank lines and preformatted text "0 in case of nonvalid line and a header, because a header ends every list -function! s:get_prev_line(lnum) +function! s:get_prev_line(lnum) abort let cur_ln = a:lnum - 1 if getline(cur_ln) =~# vimwiki#vars#get_syntaxlocal('rxPreEnd') @@ -464,7 +464,7 @@ function! s:get_prev_line(lnum) endfunction -function! s:get_first_child(item) +function! s:get_first_child(item) abort if a:item.lnum >= line('$') return s:empty_item() endif @@ -485,7 +485,7 @@ endfunction "Returns: the next sibling of a:child, given the parent item "Used for iterating over children "Note: child items do not necessarily have the same indent, i.e. level -function! s:get_next_child_item(parent, child) +function! s:get_next_child_item(parent, child) abort if a:parent.type == 0 | return s:empty_item() | endif let parent_lvl = s:get_level(a:parent.lnum) let cur_ln = s:get_last_line_of_item_incl_children(a:child) @@ -504,7 +504,7 @@ function! s:get_next_child_item(parent, child) endfunction -function! s:get_parent(item) +function! s:get_parent(item) abort let parent_line = 0 let cur_ln = prevnonblank(a:item.lnum) @@ -532,7 +532,7 @@ endfunction "Returns: the item above or the item below or an empty item -function! s:get_a_neighbor_item(item) +function! s:get_a_neighbor_item(item) abort let prev_item = s:get_prev_list_item(a:item, 1) if prev_item.type != 0 return prev_item @@ -546,7 +546,7 @@ function! s:get_a_neighbor_item(item) endfunction -function! s:get_a_neighbor_item_in_column(lnum, column) +function! s:get_a_neighbor_item_in_column(lnum, column) abort let cur_ln = s:get_prev_line(a:lnum) while cur_ln >= 1 if s:get_level(cur_ln) <= a:column @@ -560,7 +560,7 @@ endfunction "Returns: the item if there is one in a:lnum "else the multiline item a:lnum belongs to -function! s:get_corresponding_item(lnum) +function! s:get_corresponding_item(lnum) abort let item = s:get_item(a:lnum) if item.type != 0 return item @@ -583,7 +583,7 @@ endfunction "Returns: the last line of a (possibly multiline) item, including all children -function! s:get_last_line_of_item_incl_children(item) +function! s:get_last_line_of_item_incl_children(item) abort let cur_ln = a:item.lnum let org_lvl = s:get_level(a:item.lnum) while 1 @@ -598,7 +598,7 @@ endfunction "Returns: the last line of a (possibly multiline) item "Note: there can be other list items between the first and last line -function! s:get_last_line_of_item(item) +function! s:get_last_line_of_item(item) abort if a:item.type == 0 | return 0 | endif let org_lvl = s:get_level(a:item.lnum) let last_corresponding_line = a:item.lnum @@ -627,7 +627,7 @@ endfunction "Renumbers the current list from a:item on downwards "Returns: the last item that was adjusted -function! s:adjust_numbered_list_below(item, recursive) +function! s:adjust_numbered_list_below(item, recursive) abort if !(a:item.type == 2 || (a:item.type == 1 && a:recursive)) return a:item endif @@ -657,7 +657,7 @@ function! s:adjust_numbered_list_below(item, recursive) endfunction -function! s:adjust_items_recursively(parent) +function! s:adjust_items_recursively(parent) abort if a:parent.type == 0 return s:empty_item() end @@ -681,7 +681,7 @@ endfunction "If a:ignore_kind == 0, only the items which have the same kind of marker as "a:item are considered, otherwise all items. "Returns: the last item that was adjusted -function! s:adjust_numbered_list(item, ignore_kind, recursive) +function! s:adjust_numbered_list(item, ignore_kind, recursive) abort if !(a:item.type == 2 || (a:item.type == 1 && (a:ignore_kind || a:recursive))) return s:empty_item() end @@ -708,7 +708,7 @@ endfunction "Renumbers the list the cursor is in "also update its parents checkbox state -function! vimwiki#lst#adjust_numbered_list() +function! vimwiki#lst#adjust_numbered_list() abort let cur_item = s:get_corresponding_item(line('.')) if cur_item.type == 0 | return | endif call s:adjust_numbered_list(cur_item, 1, 0) @@ -718,7 +718,7 @@ endfunction "Renumbers all lists of the buffer "of course, this might take some seconds -function! vimwiki#lst#adjust_whole_buffer() +function! vimwiki#lst#adjust_whole_buffer() abort let cur_ln = 1 while 1 let cur_item = s:get_item(cur_ln) @@ -738,8 +738,8 @@ endfunction " --------------------------------------------------------- "Returns: the rate of checkboxed list item in percent -function! s:get_rate(item) - if a:item.type == 0 || a:item.cb == '' +function! s:get_rate(item) abort + if a:item.type == 0 || a:item.cb ==? '' return -1 endif let state = a:item.cb @@ -753,7 +753,7 @@ endfunction "Set state of the list item to [ ] or [o] or whatever "Returns: 1 if the state changed, 0 otherwise -function! s:set_state(item, new_rate) +function! s:set_state(item, new_rate) abort let new_state = s:rate_to_state(a:new_rate) let old_state = s:rate_to_state(s:get_rate(a:item)) if new_state !=# old_state @@ -768,7 +768,7 @@ endfunction " Sets the state of the list item to [ ] or [o] or whatever. Updates the states of its child items. " If the new state should be [X] or [-], the state of the current list item is changed to this " state, but if a child item already has [X] or [-] it is left alone. -function! s:set_state_plus_children(item, new_rate, ...) +function! s:set_state_plus_children(item, new_rate, ...) abort let retain_state_if_closed = a:0 > 0 && a:1 > 0 if !(retain_state_if_closed && (a:new_rate == 100 || a:new_rate == -1) && s:is_closed(a:item)) @@ -812,7 +812,7 @@ function! s:set_state_plus_children(item, new_rate, ...) if child_item.type == 0 break endif - if child_item.cb != '' + if child_item.cb !=? '' call s:set_state_plus_children(child_item, a:new_rate, retain_closed_children) endif let child_item = s:get_next_child_item(a:item, child_item) @@ -821,7 +821,7 @@ endfunction "Returns: the appropriate symbol for a given percent rate -function! s:rate_to_state(rate) +function! s:rate_to_state(rate) abort let listsyms_list = vimwiki#vars#get_syntaxlocal('listsyms_list') let state = '' let n = len(listsyms_list) @@ -841,8 +841,8 @@ endfunction "updates the symbol of a checkboxed item according to the symbols of its "children -function! s:update_state(item) - if a:item.type == 0 || a:item.cb == '' +function! s:update_state(item) abort + if a:item.type == 0 || a:item.cb ==? '' return endif @@ -856,7 +856,7 @@ function! s:update_state(item) if child_item.type == 0 break endif - if child_item.cb != '' + if child_item.cb !=? '' let rate = s:get_rate(child_item) if rate == -1 " for calculating the parent rate, a [-] item counts as much as a [X] item ... @@ -886,7 +886,7 @@ function! s:update_state(item) endfunction -function! s:set_state_recursively(item, new_rate) +function! s:set_state_recursively(item, new_rate) abort let state_changed = s:set_state(a:item, a:new_rate) if state_changed call s:update_state(s:get_parent(a:item)) @@ -896,8 +896,8 @@ endfunction "Creates checkbox in a list item. "Returns: 1 if successful -function! s:create_cb(item, start_rate) - if a:item.type == 0 || a:item.cb != '' +function! s:create_cb(item, start_rate) abort + if a:item.type == 0 || a:item.cb !=? '' return 0 endif @@ -911,9 +911,9 @@ function! s:create_cb(item, start_rate) endfunction -function! s:remove_cb(item) +function! s:remove_cb(item) abort let item = a:item - if item.type != 0 && item.cb != '' + if item.type != 0 && item.cb !=? '' let item.cb = '' call s:substitute_rx_in_line(item.lnum, '\s\+\[.\]', '') endif @@ -922,7 +922,7 @@ endfunction " Change state of the checkboxes in the lines of the given range -function! s:change_cb(from_line, to_line, new_rate) +function! s:change_cb(from_line, to_line, new_rate) abort let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return @@ -932,7 +932,7 @@ function! s:change_cb(from_line, to_line, new_rate) for cur_ln in range(from_item.lnum, a:to_line) let cur_item = s:get_item(cur_ln) - if cur_item.type != 0 && cur_item.cb != '' + if cur_item.type != 0 && cur_item.cb !=? '' call s:set_state_plus_children(cur_item, a:new_rate) let cur_parent_item = s:get_parent(cur_item) if index(parent_items_of_lines, cur_parent_item) == -1 @@ -950,13 +950,13 @@ endfunction " Toggles checkbox between two states in the lines of the given range, creates checkboxes (with " a:start_rate as state) if there aren't any. -function! s:toggle_create_cb(from_line, to_line, state1, state2, start_rate) +function! s:toggle_create_cb(from_line, to_line, state1, state2, start_rate) abort let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return endif - if from_item.cb == '' + if from_item.cb ==? '' "if from_line has no CB, make a CB in every selected line let parent_items_of_lines = [] @@ -991,7 +991,7 @@ endfunction "Decrement checkbox between [ ] and [X] "in the lines of the given range -function! vimwiki#lst#decrement_cb(from_line, to_line) +function! vimwiki#lst#decrement_cb(from_line, to_line) abort let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return @@ -1009,7 +1009,7 @@ endfunction "Increment checkbox between [ ] and [X] "in the lines of the given range -function! vimwiki#lst#increment_cb(from_line, to_line) +function! vimwiki#lst#increment_cb(from_line, to_line) abort let from_item = s:get_corresponding_item(a:from_line) if from_item.type == 0 return @@ -1027,19 +1027,19 @@ endfunction "Toggles checkbox between [ ] and [X] or creates one "in the lines of the given range -function! vimwiki#lst#toggle_cb(from_line, to_line) +function! vimwiki#lst#toggle_cb(from_line, to_line) abort return s:toggle_create_cb(a:from_line, a:to_line, 100, 0, 0) endfunction "Toggles checkbox between [ ] and [-] or creates one "in the lines of the given range -function! vimwiki#lst#toggle_rejected_cb(from_line, to_line) +function! vimwiki#lst#toggle_rejected_cb(from_line, to_line) abort return s:toggle_create_cb(a:from_line, a:to_line, -1, 0, -1) endfunction -function! vimwiki#lst#remove_cb(first_line, last_line) +function! vimwiki#lst#remove_cb(first_line, last_line) abort let first_item = s:get_corresponding_item(a:first_line) let last_item = s:get_corresponding_item(a:last_line) @@ -1067,7 +1067,7 @@ function! vimwiki#lst#remove_cb(first_line, last_line) endfunction -function! vimwiki#lst#remove_cb_in_list() +function! vimwiki#lst#remove_cb_in_list() abort let first_item = s:get_first_item_in_list(s:get_corresponding_item(line('.')), 0) let cur_item = first_item @@ -1090,7 +1090,7 @@ endfunction " change the level of list items " --------------------------------------------------------- -function! s:set_indent(lnum, new_indent) +function! s:set_indent(lnum, new_indent) abort if &expandtab let indentstring = repeat(' ', a:new_indent) else @@ -1100,7 +1100,7 @@ function! s:set_indent(lnum, new_indent) endfunction -function! s:decrease_level(item) +function! s:decrease_level(item) abort let removed_indent = 0 if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 && \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), @@ -1123,7 +1123,7 @@ function! s:decrease_level(item) endfunction -function! s:increase_level(item) +function! s:increase_level(item) abort let additional_indent = 0 if vimwiki#vars#get_syntaxlocal('recurring_bullets') && a:item.type == 1 && \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), @@ -1147,7 +1147,7 @@ endfunction "adds a:indent_by to the current indent "a:indent_by can be negative -function! s:indent_line_by(lnum, indent_by) +function! s:indent_line_by(lnum, indent_by) abort let item = s:get_item(a:lnum) if vimwiki#vars#get_syntaxlocal('recurring_bullets') && item.type == 1 && \ index(vimwiki#vars#get_syntaxlocal('multiple_bullet_chars'), @@ -1164,7 +1164,7 @@ endfunction "changes lvl of lines in selection -function! s:change_level(from_line, to_line, direction, plus_children) +function! s:change_level(from_line, to_line, direction, plus_children) abort 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 && empty(getline(a:from_line)) @@ -1227,7 +1227,7 @@ function! s:change_level(from_line, to_line, direction, plus_children) endif call s:update_state(old_parent) let from_item = s:get_item(from_item.lnum) - if from_item.cb != '' + if from_item.cb !=? '' call s:update_state(from_item) call s:update_state(s:get_parent(from_item)) endif @@ -1241,7 +1241,7 @@ function! s:change_level(from_line, to_line, direction, plus_children) endfunction -function! vimwiki#lst#change_level(from_line, to_line, direction, plus_children) +function! vimwiki#lst#change_level(from_line, to_line, direction, plus_children) abort let cur_col = col('$') - col('.') call s:change_level(a:from_line, a:to_line, a:direction, a:plus_children) call cursor('.', col('$') - cur_col) @@ -1249,7 +1249,7 @@ endfunction "indent line a:lnum to be the continuation of a:prev_item -function! s:indent_multiline(prev_item, lnum) +function! s:indent_multiline(prev_item, lnum) abort if a:prev_item.type != 0 call s:set_indent(a:lnum, s:text_begin(a:prev_item.lnum)) endif @@ -1261,7 +1261,7 @@ endfunction " --------------------------------------------------------- "Returns: the position of a marker in g:vimwiki_list_markers -function! s:get_idx_list_markers(item) +function! s:get_idx_list_markers(item) abort if a:item.type == 1 let m = s:first_char(a:item.mrkr) else @@ -1272,7 +1272,7 @@ endfunction "changes the marker of the given item to the next in g:vimwiki_list_markers -function! s:get_next_mrkr(item) +function! s:get_next_mrkr(item) abort let markers = vimwiki#vars#get_syntaxlocal('list_markers') if a:item.type == 0 let new_mrkr = markers[0] @@ -1285,7 +1285,7 @@ endfunction "changes the marker of the given item to the previous in g:vimwiki_list_markers -function! s:get_prev_mrkr(item) +function! s:get_prev_mrkr(item) abort let markers = vimwiki#vars#get_syntaxlocal('list_markers') if a:item.type == 0 return markers[-1] @@ -1299,7 +1299,7 @@ function! s:get_prev_mrkr(item) endfunction -function! s:set_new_mrkr(item, new_mrkr) +function! s:set_new_mrkr(item, new_mrkr) abort 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 && !vimwiki#vars#get_syntaxlocal('recurring_bullets') @@ -1311,16 +1311,16 @@ 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('.')) +function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) abort + 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 let cur_item = s:get_item(cur_ln) - if new_mrkr ==# "next" + if new_mrkr ==# 'next' let new_mrkr = s:get_next_mrkr(cur_item) - elseif new_mrkr ==# "prev" + elseif new_mrkr ==# 'prev' let new_mrkr = s:get_prev_mrkr(cur_item) endif @@ -1365,7 +1365,7 @@ function! vimwiki#lst#change_marker(from_line, to_line, new_mrkr, mode) endfunction -function! vimwiki#lst#change_marker_in_list(new_mrkr) +function! vimwiki#lst#change_marker_in_list(new_mrkr) abort let cur_item = s:get_corresponding_item(line('.')) let first_item = s:get_first_item_in_list(cur_item, 0) let last_item = s:get_last_item_in_list(cur_item, 0) @@ -1383,7 +1383,7 @@ endfunction "sets kind of the item depending on neighbor items and the parent item -function! s:adjust_mrkr(item) +function! s:adjust_mrkr(item) abort if a:item.type == 0 || vimwiki#vars#get_syntaxlocal('recurring_bullets') return endif @@ -1409,14 +1409,14 @@ function! s:adjust_mrkr(item) endfunction -function! s:clone_marker_from_to(from, to) +function! s:clone_marker_from_to(from, to) abort let item_from = s:get_item(a:from) 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 = ( vimwiki#vars#get_syntaxlocal('recurring_bullets') ? 0 : indent(a:from) ) call s:set_indent(a:to, new_indent) - if item_from.cb != '' + if item_from.cb !=? '' call s:create_cb(s:get_item(a:to), 0) call s:update_state(s:get_parent(s:get_item(a:to))) endif @@ -1427,9 +1427,9 @@ function! s:clone_marker_from_to(from, to) endfunction -function! s:remove_mrkr(item) +function! s:remove_mrkr(item) abort let item = a:item - if item.cb != '' + if item.cb !=? '' let item = s:remove_cb(item) let parent_item = s:get_parent(item) else @@ -1444,7 +1444,7 @@ function! s:remove_mrkr(item) endfunction -function! s:create_marker(lnum) +function! s:create_marker(lnum) abort let new_sibling = s:get_corresponding_item(a:lnum) if new_sibling.type == 0 let new_sibling = s:get_a_neighbor_item_in_column(a:lnum, virtcol('.')) @@ -1463,7 +1463,7 @@ endfunction " handle keys " --------------------------------------------------------- -function! vimwiki#lst#kbd_o() +function! vimwiki#lst#kbd_o() abort let fold_end = foldclosedend('.') let lnum = (fold_end == -1) ? line('.') : fold_end let cur_item = s:get_item(lnum) @@ -1482,7 +1482,7 @@ function! vimwiki#lst#kbd_o() endfunction -function! vimwiki#lst#kbd_O() +function! vimwiki#lst#kbd_O() abort exe 'normal!' "Ox\" let cur_ln = line('.') if !vimwiki#u#is_codeblock(cur_ln) @@ -1496,7 +1496,7 @@ function! vimwiki#lst#kbd_O() endfunction -function! s:cr_on_empty_list_item(lnum, behavior) +function! s:cr_on_empty_list_item(lnum, behavior) abort if a:behavior == 1 "just make a new list item exe 'normal!' "gi\\" @@ -1513,7 +1513,7 @@ function! s:cr_on_empty_list_item(lnum, behavior) let item = s:get_item(a:lnum) let neighbor_item = s:get_a_neighbor_item(item) let child_item = s:get_first_child(item) - let parent_item = (item.cb != '') ? s:get_parent(item) : s:empty_item() + let parent_item = (item.cb !=? '') ? s:get_parent(item) : s:empty_item() normal! "_cc call s:adjust_numbered_list(neighbor_item, 0, 0) call s:adjust_numbered_list(child_item, 0, 0) @@ -1525,7 +1525,7 @@ function! s:cr_on_empty_list_item(lnum, behavior) let item = s:get_item(a:lnum) let neighbor_item = s:get_a_neighbor_item(item) let child_item = s:get_first_child(item) - let parent_item = (item.cb != '') ? s:get_parent(item) : s:empty_item() + let parent_item = (item.cb !=? '') ? s:get_parent(item) : s:empty_item() exe 'normal!' "_cc\" call s:adjust_numbered_list(neighbor_item, 0, 0) call s:adjust_numbered_list(child_item, 0, 0) @@ -1541,7 +1541,7 @@ function! s:cr_on_empty_list_item(lnum, behavior) let item = s:get_item(a:lnum) let neighbor_item = s:get_a_neighbor_item(item) let child_item = s:get_first_child(item) - let parent_item = (item.cb != '') ? s:get_parent(item) : s:empty_item() + let parent_item = (item.cb !=? '') ? s:get_parent(item) : s:empty_item() normal! "_cc call s:adjust_numbered_list(neighbor_item, 0, 0) call s:adjust_numbered_list(child_item, 0, 0) @@ -1552,7 +1552,7 @@ function! s:cr_on_empty_list_item(lnum, behavior) endif endfunction -function! s:cr_on_empty_line(lnum, behavior) +function! s:cr_on_empty_line(lnum, behavior) abort let lst = s:get_corresponding_item(a:lnum) "inserting and deleting the x is necessary @@ -1570,7 +1570,7 @@ function! s:cr_on_empty_line(lnum, behavior) endfunction -function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol) +function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol) abort if a:insert_new_marker "the ultimate feature of this script: make new marker on exe 'normal!' "gi\\" @@ -1589,7 +1589,7 @@ function! s:cr_on_list_item(lnum, insert_new_marker, not_at_eol) endfunction -function! vimwiki#lst#kbd_cr(normal, just_mrkr) +function! vimwiki#lst#kbd_cr(normal, just_mrkr) abort let lnum = line('.') let has_bp = s:line_has_marker(lnum) @@ -1608,8 +1608,8 @@ function! vimwiki#lst#kbd_cr(normal, just_mrkr) if getline('.')[col("'^")-1:] =~# '^\s\+$' let cur_col = 0 else - let cur_col = col("$") - col("'^") - if getline('.')[col("'^")-1] =~# '\s' && exists("*strdisplaywidth") + let cur_col = col('$') - col("'^") + if getline('.')[col("'^")-1] =~# '\s' && exists('*strdisplaywidth') let ws_behind_cursor = \ strdisplaywidth(matchstr(getline('.')[col("'^")-1:], '\s\+'), \ virtcol("'^")-1) @@ -1628,7 +1628,7 @@ function! vimwiki#lst#kbd_cr(normal, just_mrkr) call s:cr_on_list_item(lnum, insert_new_marker, cur_col) endif - call cursor(lnum+1, col("$") - cur_col) + call cursor(lnum+1, col('$') - cur_col) if cur_col == 0 startinsert! else @@ -1639,8 +1639,8 @@ endfunction "creates a list item in the current line or removes it -function! vimwiki#lst#toggle_list_item() - let cur_col_from_eol = col("$") - col("'^") +function! vimwiki#lst#toggle_list_item() abort + let cur_col_from_eol = col('$') - col("'^") let cur_item = s:get_item(line('.')) if cur_item.type == 0 @@ -1660,7 +1660,7 @@ function! vimwiki#lst#toggle_list_item() endif "set cursor position s.t. it's on the same char as before - let new_cur_col = col("$") - cur_col_from_eol + 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*$' @@ -1675,7 +1675,7 @@ endfunction " misc stuff " --------------------------------------------------------- -function! vimwiki#lst#TO_list_item(inner, visual) +function! vimwiki#lst#TO_list_item(inner, visual) abort let lnum = prevnonblank('.') let item = s:get_corresponding_item(lnum) if item.type == 0 @@ -1694,7 +1694,7 @@ function! vimwiki#lst#TO_list_item(inner, visual) endfunction -function! vimwiki#lst#fold_level(lnum) +function! vimwiki#lst#fold_level(lnum) abort let cur_item = s:get_item(a:lnum) if cur_item.type != 0 let parent_item = s:get_parent(cur_item) diff --git a/autoload/vimwiki/markdown_base.vim b/autoload/vimwiki/markdown_base.vim index e1bcc10..bfbd140 100644 --- a/autoload/vimwiki/markdown_base.vim +++ b/autoload/vimwiki/markdown_base.vim @@ -4,14 +4,14 @@ " Home: https://github.com/vimwiki/vimwiki/ -function! s:safesubstitute(text, search, replace, mode) +function! s:safesubstitute(text, search, replace, mode) abort " Substitute regexp but do not interpret replace let escaped = escape(a:replace, '\&') return substitute(a:text, a:search, escaped, a:mode) endfunction -function! vimwiki#markdown_base#scan_reflinks() +function! vimwiki#markdown_base#scan_reflinks() abort let mkd_refs = {} " construct list of references using vimgrep try @@ -25,7 +25,7 @@ function! vimwiki#markdown_base#scan_reflinks() let matchline = join(getline(d.lnum, min([d.lnum+1, line('$')])), ' ') let descr = matchstr(matchline, vimwiki#vars#get_syntaxlocal('rxMkdRefMatchDescr')) let url = matchstr(matchline, vimwiki#vars#get_syntaxlocal('rxMkdRefMatchUrl')) - if descr != '' && url != '' + if descr !=? '' && url !=? '' let mkd_refs[descr] = url endif endfor @@ -35,7 +35,7 @@ endfunction " try markdown reference links -function! vimwiki#markdown_base#open_reflink(link) +function! vimwiki#markdown_base#open_reflink(link) abort " echom "vimwiki#markdown_base#open_reflink" let link = a:link let mkd_refs = vimwiki#vars#get_bufferlocal('markdown_refs') @@ -49,7 +49,7 @@ function! vimwiki#markdown_base#open_reflink(link) endfunction -function! s:normalize_link_syntax_n() +function! s:normalize_link_syntax_n() abort let lnum = line('.') " try WikiIncl @@ -97,7 +97,7 @@ function! s:normalize_link_syntax_n() " normalize_link_syntax_v let lnk = vimwiki#base#matchstr_at_cursor(vimwiki#vars#get_global('rxWord')) if !empty(lnk) - if vimwiki#base#is_diary_file(expand("%:p")) + if vimwiki#base#is_diary_file(expand('%:p')) let sub = vimwiki#base#normalize_link_in_diary(lnk) else let sub = vimwiki#base#normalize_link_helper(lnk, @@ -111,7 +111,7 @@ function! s:normalize_link_syntax_n() endfunction -function! s:normalize_link_syntax_v() +function! s:normalize_link_syntax_v() abort let lnum = line('.') let sel_save = &selection let &selection = 'old' @@ -147,7 +147,7 @@ function! s:normalize_link_syntax_v() endfunction -function! vimwiki#markdown_base#normalize_link(is_visual_mode) +function! vimwiki#markdown_base#normalize_link(is_visual_mode) abort if 0 " Syntax-specific links else diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim index 08a52c7..08ba503 100644 --- a/autoload/vimwiki/path.vim +++ b/autoload/vimwiki/path.vim @@ -4,25 +4,25 @@ " Home: https://github.com/vimwiki/vimwiki/ -function! vimwiki#path#chomp_slash(str) +function! vimwiki#path#chomp_slash(str) abort return substitute(a:str, '[/\\]\+$', '', '') endfunction " Define path-compare function, either case-sensitive or not, depending on OS. if vimwiki#u#is_windows() - function! vimwiki#path#is_equal(p1, p2) + function! vimwiki#path#is_equal(p1, p2) abort return a:p1 ==? a:p2 endfunction else - function! vimwiki#path#is_equal(p1, p2) + function! vimwiki#path#is_equal(p1, p2) abort return a:p1 ==# a:p2 endfunction endif " collapse sections like /a/b/../c to /a/c -function! vimwiki#path#normalize(path) +function! vimwiki#path#normalize(path) abort let path = a:path while 1 let result = substitute(path, '/[^/]\+/\.\.', '', '') @@ -35,7 +35,7 @@ function! vimwiki#path#normalize(path) endfunction -function! vimwiki#path#path_norm(path) +function! vimwiki#path#path_norm(path) abort " /-slashes if a:path !~# '^scp:' let path = substitute(a:path, '\', '/', 'g') @@ -49,21 +49,21 @@ function! vimwiki#path#path_norm(path) endfunction -function! vimwiki#path#is_link_to_dir(link) +function! vimwiki#path#is_link_to_dir(link) abort " Check if link is to a directory. " It should be ended with \ or /. return a:link =~# '\m[/\\]$' endfunction -function! vimwiki#path#abs_path_of_link(link) - return vimwiki#path#normalize(expand("%:p:h").'/'.a:link) +function! vimwiki#path#abs_path_of_link(link) abort + return vimwiki#path#normalize(expand('%:p:h').'/'.a:link) endfunction " return longest common path prefix of 2 given paths. " '~/home/usrname/wiki', '~/home/usrname/wiki/shmiki' => '~/home/usrname/wiki' -function! vimwiki#path#path_common_pfx(path1, path2) +function! vimwiki#path#path_common_pfx(path1, path2) abort let p1 = split(a:path1, '[/\\]', 1) let p2 = split(a:path2, '[/\\]', 1) @@ -80,7 +80,7 @@ function! vimwiki#path#path_common_pfx(path1, path2) endfunction -function! vimwiki#path#wikify_path(path) +function! vimwiki#path#wikify_path(path) abort let result = resolve(fnamemodify(a:path, ':p')) if vimwiki#u#is_windows() let result = substitute(result, '\\', '/', 'g') @@ -90,13 +90,13 @@ function! vimwiki#path#wikify_path(path) endfunction -function! vimwiki#path#current_wiki_file() +function! vimwiki#path#current_wiki_file() abort return vimwiki#path#wikify_path(expand('%:p')) endfunction " Returns: the relative path from a:dir to a:file -function! vimwiki#path#relpath(dir, file) +function! vimwiki#path#relpath(dir, file) abort let result = [] if vimwiki#u#is_windows() " TODO temporary fix see #478 @@ -131,12 +131,12 @@ function! vimwiki#path#relpath(dir, file) if vimwiki#u#is_windows() " TODO temporary fix see #478 let result_path = join(result, '\') - if a:file =~ '\m\\$' + if a:file =~? '\m\\$' let result_path .= '\' endif else let result_path = join(result, '/') - if a:file =~ '\m/$' + if a:file =~? '\m/$' let result_path .= '/' endif endif @@ -147,7 +147,7 @@ endfunction " If the optional argument provided and nonzero, " it will ask before creating a directory " Returns: 1 iff directory exists or successfully created -function! vimwiki#path#mkdir(path, ...) +function! vimwiki#path#mkdir(path, ...) abort let path = expand(a:path) if path =~# '^scp:' @@ -158,26 +158,26 @@ function! vimwiki#path#mkdir(path, ...) if isdirectory(path) return 1 else - if !exists("*mkdir") + if !exists('*mkdir') return 0 endif let path = vimwiki#path#chomp_slash(path) if vimwiki#u#is_windows() && !empty(vimwiki#vars#get_global('w32_dir_enc')) - let path = iconv(path, &enc, vimwiki#vars#get_global('w32_dir_enc')) + let path = iconv(path, &encoding, vimwiki#vars#get_global('w32_dir_enc')) endif - if a:0 && a:1 && 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 - call mkdir(path, "p") + call mkdir(path, 'p') return 1 endif endfunction -function! vimwiki#path#is_absolute(path) +function! vimwiki#path#is_absolute(path) abort if vimwiki#u#is_windows() return a:path =~? '\m^\a:' else @@ -191,13 +191,13 @@ endfunction " is because on windows ~\vimwiki//.tags is invalid but ~\vimwiki/.tags is a " valid path. if vimwiki#u#is_windows() - function! vimwiki#path#join_path(directory, file) + function! vimwiki#path#join_path(directory, file) abort let directory = vimwiki#path#chomp_slash(a:directory) let file = substitute(a:file, '\m^[\\/]\+', '', '') return directory . '/' . file endfunction else - function! vimwiki#path#join_path(directory, file) + function! vimwiki#path#join_path(directory, file) abort let directory = substitute(a:directory, '\m/\+$', '', '') let file = substitute(a:file, '\m^/\+', '', '') return directory . '/' . file diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index 3a63317..debfff6 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -27,8 +27,8 @@ let s:TAGS_METADATA_FILE_NAME = '.vimwiki_tags' " a:full_rebuild == 1: re-scan entire wiki " a:full_rebuild == 0: only re-scan current page " a:all_files == '': only if the file is newer than .tags -function! vimwiki#tags#update_tags(full_rebuild, all_files) - let all_files = a:all_files != '' +function! vimwiki#tags#update_tags(full_rebuild, all_files) abort + let all_files = a:all_files !=? '' if !a:full_rebuild " Updating for one page (current) let page_name = vimwiki#vars#get_bufferlocal('subdir') . expand('%:t:r') @@ -61,7 +61,7 @@ function! vimwiki#tags#update_tags(full_rebuild, all_files) endfunction -function! s:safesubstitute(text, search, replace, mode) +function! s:safesubstitute(text, search, replace, mode) abort " Substitute regexp but do not interpret replace let escaped = escape(a:replace, '\&') return substitute(a:text, a:search, escaped, a:mode) @@ -69,7 +69,7 @@ endfunction " Scans the list of text lines (argument) and produces tags metadata as a list of tag entries. -function! s:scan_tags(lines, page_name) +function! s:scan_tags(lines, page_name) abort let entries = [] @@ -103,7 +103,7 @@ function! s:scan_tags(lines, page_name) else let current_complete_anchor = '' for l in range(level-1) - if anchor_level[l] != '' + if anchor_level[l] !=? '' let current_complete_anchor .= anchor_level[l].'#' endif endfor @@ -118,7 +118,7 @@ function! s:scan_tags(lines, page_name) let str = line while 1 let tag_group = matchstr(str, rxtag) - if tag_group == '' + if tag_group ==? '' break endif let tagend = matchend(str, rxtag) @@ -162,11 +162,11 @@ function! s:load_tags_metadata() abort endif let metadata = {} for line in readfile(metadata_path) - if line =~ '^!_TAG_FILE_' + if line =~# '^!_TAG_FILE_' continue endif let parts = matchlist(line, '^\(.\{-}\);"\(.*\)$') - if parts[0] == '' || parts[1] == '' || parts[2] == '' + if parts[0] ==? '' || parts[1] ==? '' || parts[2] ==? '' throw 'VimwikiTags1: Metadata file corrupted' endif let std_fields = split(parts[1], '\t') @@ -174,11 +174,11 @@ function! s:load_tags_metadata() abort throw 'VimwikiTags2: Metadata file corrupted' endif let vw_part = parts[2] - if vw_part[0] != "\t" + if vw_part[0] !=? "\t" throw 'VimwikiTags3: Metadata file corrupted' endif let vw_fields = split(vw_part[1:], "\t") - if len(vw_fields) != 1 || vw_fields[0] !~ '^vimwiki:' + if len(vw_fields) != 1 || vw_fields[0] !~# '^vimwiki:' throw 'VimwikiTags4: Metadata file corrupted' endif let vw_data = substitute(vw_fields[0], '^vimwiki:', '', '') @@ -207,7 +207,7 @@ endfunction " Removes all entries for given page from metadata in-place. Returns updated " metadata (just in case). -function! s:remove_page_from_tags(metadata, page_name) +function! s:remove_page_from_tags(metadata, page_name) abort if has_key(a:metadata, a:page_name) call remove(a:metadata, a:page_name) return a:metadata @@ -218,7 +218,7 @@ endfunction " Merges metadata of one file into a:metadata -function! s:merge_tags(metadata, pagename, file_metadata) +function! s:merge_tags(metadata, pagename, file_metadata) abort let metadata = a:metadata let metadata[a:pagename] = a:file_metadata return metadata @@ -234,7 +234,7 @@ endfunction " numbers as strings, not integers, and so, for example, tag at line 14 " preceeds the same tag on the same page at line 9. (Because string "14" is " alphabetically 'less than' string "9".) -function! s:tags_entry_cmp(i1, i2) +function! s:tags_entry_cmp(i1, i2) abort let items = [] for orig_item in [a:i1, a:i2] let fields = split(orig_item, "\t") @@ -258,7 +258,7 @@ endfunction " Saves metadata object into a file. Throws exceptions in case of problems. -function! s:write_tags_metadata(metadata) +function! s:write_tags_metadata(metadata) abort let metadata_path = vimwiki#tags#metadata_file_path() let tags = [] for pagename in keys(a:metadata) @@ -273,18 +273,18 @@ function! s:write_tags_metadata(metadata) \ . pagename . vimwiki#vars#get_wikilocal('ext') . "\t" \ . entry.lineno \ . ';"' - \ . "\t" . "vimwiki:" . entry_data + \ . "\t" . 'vimwiki:' . entry_data \) endfor endfor - call sort(tags, "s:tags_entry_cmp") + call sort(tags, 's:tags_entry_cmp') call insert(tags, "!_TAG_FILE_SORTED\t1\t") call writefile(tags, metadata_path) endfunction " Returns list of unique tags found in the .tags file -function! vimwiki#tags#get_tags() +function! vimwiki#tags#get_tags() abort let metadata = s:load_tags_metadata() let tags = {} for entries in values(metadata) @@ -306,7 +306,7 @@ function! vimwiki#tags#generate_tags(create, ...) abort " use a dictionary function for closure like capability " copy all local variables into dict (add a: if arguments are needed) let GeneratorTags = copy(l:) - function! GeneratorTags.f() + function! GeneratorTags.f() abort let need_all_tags = empty(self.specific_tags) let metadata = s:load_tags_metadata() @@ -334,14 +334,14 @@ function! vimwiki#tags#generate_tags(create, ...) abort let tag_tpl = printf('rxH%d_Template', self.header_level + 1) call add(lines, s:safesubstitute(vimwiki#vars#get_syntaxlocal(tag_tpl), '__Header__', tagname, '')) - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' for _ in range(vimwiki#vars#get_global('markdown_header_style')) call add(lines, '') endfor endif for taglink in sort(tags_entries[tagname]) - if vimwiki#vars#get_wikilocal('syntax') == 'markdown' + if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink3Template') let link_infos = vimwiki#base#resolve_link(taglink) if empty(link_infos.anchor) diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim index 8438ed5..2863621 100644 --- a/autoload/vimwiki/tbl.vim +++ b/autoload/vimwiki/tbl.vim @@ -9,23 +9,23 @@ -if exists("g:loaded_vimwiki_tbl_auto") || &cp +if exists('g:loaded_vimwiki_tbl_auto') || &compatible finish endif let g:loaded_vimwiki_tbl_auto = 1 -let s:textwidth = &tw +let s:textwidth = &textwidth -function! s:rxSep() +function! s:rxSep() abort return vimwiki#vars#get_syntaxlocal('rxTableSep') endfunction -function! s:wide_len(str) +function! s:wide_len(str) abort " vim73 has new function that gives correct string width. - if exists("*strdisplaywidth") + if exists('*strdisplaywidth') return strdisplaywidth(a:str) endif @@ -36,8 +36,8 @@ function! s:wide_len(str) let savemodified = &modified let save_cursor = getpos('.') exe "norm! o\" - call setline(line("."), a:str) - let ret = virtcol("$") - 1 + call setline(line('.'), a:str) + let ret = virtcol('$') - 1 d call setpos('.', save_cursor) let &modified = savemodified @@ -46,51 +46,46 @@ function! s:wide_len(str) endfunction -function! s:cell_splitter() +function! s:cell_splitter() abort return '\s*'.s:rxSep().'\s*' endfunction -function! s:sep_splitter() +function! s:sep_splitter() abort return '-'.s:rxSep().'-' endfunction -function! s:is_table(line) +function! s:is_table(line) abort 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) +function! s:is_separator(line) abort return a:line =~# '^\s*'.s:rxSep().'\(:\=--\+:\='.s:rxSep().'\)\+\s*$' endfunction -function! s:is_separator_tail(line) +function! s:is_separator_tail(line) abort return a:line =~# '^\{-1}\%(\s*\|-*\)\%('.s:rxSep().'-\+\)\+'.s:rxSep().'\s*$' endfunction -function! s:is_last_column(lnum, cnum) - return a:line =~# '^\{-1}\%(\s*\|-*\)\%('.s:rxSep().'-\+\)\+'.s:rxSep().'\s*$' -endfunction - - -function! s:is_last_column(lnum, cnum) +function! s:is_last_column(lnum, cnum) abort let line = strpart(getline(a:lnum), a:cnum - 1) return line =~# s:rxSep().'\s*$' && line !~# s:rxSep().'.*'.s:rxSep().'\s*$' endfunction -function! s:is_first_column(lnum, cnum) +function! s:is_first_column(lnum, cnum) abort let line = strpart(getline(a:lnum), 0, a:cnum - 1) return line =~# '^\s*$' || \ (line =~# '^\s*'.s:rxSep() && line !~# '^\s*'.s:rxSep().'.*'.s:rxSep()) endfunction -function! s:count_separators_up(lnum) +function! s:count_separators_up(lnum) abort let lnum = a:lnum - 1 while lnum > 1 if !s:is_separator(getline(lnum)) @@ -103,7 +98,7 @@ function! s:count_separators_up(lnum) endfunction -function! s:count_separators_down(lnum) +function! s:count_separators_down(lnum) abort let lnum = a:lnum + 1 while lnum < line('$') if !s:is_separator(getline(lnum)) @@ -116,9 +111,9 @@ function! s:count_separators_down(lnum) endfunction -function! s:create_empty_row(cols) +function! s:create_empty_row(cols) abort let row = s:rxSep() - let cell = " ".s:rxSep() + let cell = ' '.s:rxSep() for c in range(a:cols) let row .= cell @@ -128,9 +123,9 @@ function! s:create_empty_row(cols) endfunction -function! s:create_row_sep(cols) +function! s:create_row_sep(cols) abort let row = s:rxSep() - let cell = "---".s:rxSep() + let cell = '---'.s:rxSep() for c in range(a:cols) let row .= cell @@ -140,7 +135,7 @@ function! s:create_row_sep(cols) endfunction -function! vimwiki#tbl#get_cells(line, ...) +function! vimwiki#tbl#get_cells(line, ...) abort let result = [] let state = 'NONE' let cell_start = 0 @@ -148,23 +143,23 @@ function! vimwiki#tbl#get_cells(line, ...) let len = strlen(a:line) - 1 " 'Simple' FSM - while state != 'CELL' - if quote_start != 0 && state != 'CELL' + while state !=# 'CELL' + if quote_start != 0 && state !=# 'CELL' let state = 'CELL' endif for idx in range(quote_start, len) " The only way I know Vim can do Unicode... let ch = a:line[idx] if state ==# 'NONE' - if ch == '|' + if ch ==# '|' let cell_start = idx + 1 let state = 'CELL' endif elseif state ==# 'CELL' - if ch == '[' || ch == '{' + if ch ==# '[' || ch ==# '{' let state = 'BEFORE_QUOTE_START' let quote_start = idx - elseif ch == '|' + elseif ch ==# '|' let cell = strpart(a:line, cell_start, idx - cell_start) if a:0 && a:1 let cell = substitute(cell, '^ \(.*\) $', '\1', '') @@ -175,23 +170,23 @@ function! vimwiki#tbl#get_cells(line, ...) let cell_start = idx + 1 endif elseif state ==# 'BEFORE_QUOTE_START' - if ch == '[' || ch == '{' + if ch ==# '[' || ch ==# '{' let state = 'QUOTE' let quote_start = idx else let state = 'CELL' endif elseif state ==# 'QUOTE' - if ch == ']' || ch == '}' + if ch ==# ']' || ch ==# '}' let state = 'BEFORE_QUOTE_END' endif elseif state ==# 'BEFORE_QUOTE_END' - if ch == ']' || ch == '}' + if ch ==# ']' || ch ==# '}' let state = 'CELL' endif endif endfor - if state == 'NONE' + if state ==# 'NONE' break endif endwhile @@ -200,12 +195,12 @@ function! vimwiki#tbl#get_cells(line, ...) endfunction -function! s:col_count(lnum) +function! s:col_count(lnum) abort return len(vimwiki#tbl#get_cells(getline(a:lnum))) endfunction -function! s:get_indent(lnum, depth) +function! s:get_indent(lnum, depth) abort if !s:is_table(getline(a:lnum)) return endif @@ -229,7 +224,7 @@ function! s:get_indent(lnum, depth) endfunction -function! s:get_rows(lnum, ...) +function! s:get_rows(lnum, ...) abort if !s:is_table(getline(a:lnum)) return endif @@ -268,7 +263,7 @@ function! s:get_rows(lnum, ...) endfunction -function! s:get_cell_aligns(lnum, ...) +function! s:get_cell_aligns(lnum, ...) abort let aligns = {} let depth = a:0 > 0 ? a:1 : 0 for [lnum, row] in s:get_rows(a:lnum, depth) @@ -297,7 +292,7 @@ function! s:get_cell_aligns(lnum, ...) endfunction -function! s:get_cell_aligns_fast(rows) +function! s:get_cell_aligns_fast(rows) abort let aligns = {} let clen = 0 for [lnum, row] in a:rows @@ -333,7 +328,7 @@ function! s:get_cell_aligns_fast(rows) endfunction -function! s:get_cell_max_lens(lnum, ...) +function! s:get_cell_max_lens(lnum, ...) abort let max_lens = {} let rows = a:0 > 2 ? a:3 : s:get_rows(a:lnum) for [lnum, row] in rows @@ -354,7 +349,7 @@ function! s:get_cell_max_lens(lnum, ...) endfunction -function! s:get_aligned_rows(lnum, col1, col2, depth) +function! s:get_aligned_rows(lnum, col1, col2, depth) abort let rows = [] let aligns = {} let startlnum = 0 @@ -423,7 +418,7 @@ endfunction " Number of the current column. Starts from 0. -function! s:cur_column() +function! s:cur_column() abort let line = getline('.') if !s:is_table(line) return -1 @@ -443,16 +438,16 @@ function! s:cur_column() endfunction -function! s:fmt_cell(cell, max_len, align) +function! s:fmt_cell(cell, max_len, align) abort let cell = ' '.a:cell.' ' let diff = a:max_len - s:wide_len(a:cell) if diff == 0 && empty(a:cell) let diff = 1 endif - if a:align == 'left' + if a:align ==# 'left' let cell .= repeat(' ', diff) - elseif a:align == 'right' + elseif a:align ==# 'right' let cell = repeat(' ',diff).cell else let cell = repeat(' ',diff/2).cell.repeat(' ',diff-diff/2) @@ -461,7 +456,7 @@ function! s:fmt_cell(cell, max_len, align) endfunction -function! s:fmt_row(cells, max_lens, aligns, col1, col2) +function! s:fmt_row(cells, max_lens, aligns, col1, col2) abort let new_line = s:rxSep() for idx in range(len(a:cells)) if idx == a:col1 @@ -482,16 +477,16 @@ function! s:fmt_row(cells, max_lens, aligns, col1, col2) endfunction -function! s:fmt_cell_sep(max_len, align) +function! s:fmt_cell_sep(max_len, align) abort let cell = '' if a:max_len == 0 let cell .= '-' else let cell .= repeat('-', a:max_len) endif - if a:align == 'right' + if a:align ==# 'right' return cell.'-:' - elseif a:align == 'left' + elseif a:align ==# 'left' return cell.'--' else return ':'.cell.':' @@ -499,7 +494,7 @@ function! s:fmt_cell_sep(max_len, align) endfunction -function! s:fmt_sep(max_lens, aligns, col1, col2) +function! s:fmt_sep(max_lens, aligns, col1, col2) abort let new_line = s:rxSep() for idx in range(len(a:max_lens)) if idx == a:col1 @@ -513,42 +508,42 @@ function! s:fmt_sep(max_lens, aligns, col1, col2) endfunction -function! s:kbd_create_new_row(cols, goto_first) +function! s:kbd_create_new_row(cols, goto_first) abort let cmd = "\o".s:create_empty_row(a:cols) let cmd .= "\:call vimwiki#tbl#format(line('.'), 2)\" let cmd .= "\0" if a:goto_first let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'c', line('.'))\" else - let cmd .= (col('.')-1)."l" + let cmd .= (col('.')-1).'l' let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\" endif - let cmd .= "a" + let cmd .= 'a' return cmd endfunction -function! s:kbd_goto_next_row() +function! s:kbd_goto_next_row() abort let cmd = "\j" let cmd .= ":call search('.\\(".s:rxSep()."\\)', 'c', line('.'))\" let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\" - let cmd .= "a" + let cmd .= 'a' return cmd endfunction -function! s:kbd_goto_prev_row() +function! s:kbd_goto_prev_row() abort let cmd = "\k" let cmd .= ":call search('.\\(".s:rxSep()."\\)', 'c', line('.'))\" let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'bc', line('.'))\" - let cmd .= "a" + let cmd .= 'a' return cmd endfunction " Used in s:kbd_goto_next_col -function! vimwiki#tbl#goto_next_col() +function! vimwiki#tbl#goto_next_col() abort let curcol = virtcol('.') let lnum = line('.') let depth = 2 @@ -571,11 +566,11 @@ function! vimwiki#tbl#goto_next_col() endfunction -function! s:kbd_goto_next_col(jumpdown) +function! s:kbd_goto_next_col(jumpdown) abort let cmd = "\" if a:jumpdown let seps = s:count_separators_down(line('.')) - let cmd .= seps."j0" + let cmd .= seps.'j0' endif let cmd .= ":call vimwiki#tbl#goto_next_col()\a" return cmd @@ -583,7 +578,7 @@ endfunction " Used in s:kbd_goto_prev_col -function! vimwiki#tbl#goto_prev_col() +function! vimwiki#tbl#goto_prev_col() abort let curcol = virtcol('.') let lnum = line('.') let depth = 2 @@ -612,12 +607,12 @@ function! vimwiki#tbl#goto_prev_col() endfunction -function! s:kbd_goto_prev_col(jumpup) +function! s:kbd_goto_prev_col(jumpup) abort let cmd = "\" if a:jumpup let seps = s:count_separators_up(line('.')) - let cmd .= seps."k" - let cmd .= "$" + let cmd .= seps.'k' + let cmd .= '$' endif let cmd .= ":call vimwiki#tbl#goto_prev_col()\a" " let cmd .= ":call search('\\(".s:rxSep()."\\)\\zs', 'b', line('.'))\" @@ -627,10 +622,10 @@ function! s:kbd_goto_prev_col(jumpup) endfunction -function! vimwiki#tbl#kbd_cr() +function! vimwiki#tbl#kbd_cr() abort let lnum = line('.') if !s:is_table(getline(lnum)) - return "" + return '' endif if s:is_separator(getline(lnum+1)) || !s:is_table(getline(lnum+1)) @@ -642,7 +637,7 @@ function! vimwiki#tbl#kbd_cr() endfunction -function! vimwiki#tbl#kbd_tab() +function! vimwiki#tbl#kbd_tab() abort let lnum = line('.') if !s:is_table(getline(lnum)) return "\" @@ -659,7 +654,7 @@ function! vimwiki#tbl#kbd_tab() endfunction -function! vimwiki#tbl#kbd_shift_tab() +function! vimwiki#tbl#kbd_shift_tab() abort let lnum = line('.') if !s:is_table(getline(lnum)) return "\" @@ -669,13 +664,13 @@ function! vimwiki#tbl#kbd_shift_tab() let is_sep = s:is_separator_tail(getline(lnum)) "echomsg "DEBUG kbd_tab> ".first if (is_sep || first) && !s:is_table(getline(lnum-1)) - return "" + return '' endif return s:kbd_goto_prev_col(is_sep || first) endfunction -function! vimwiki#tbl#format(lnum, ...) +function! vimwiki#tbl#format(lnum, ...) abort if !(&filetype ==? 'vimwiki') return endif @@ -709,11 +704,11 @@ function! vimwiki#tbl#format(lnum, ...) endif endfor - let &tw = s:textwidth + let &textwidth = s:textwidth endfunction -function! vimwiki#tbl#create(...) +function! vimwiki#tbl#create(...) abort if a:0 > 1 let cols = a:1 let rows = a:2 @@ -749,7 +744,7 @@ function! vimwiki#tbl#create(...) endfunction -function! vimwiki#tbl#align_or_cmd(cmd, ...) +function! vimwiki#tbl#align_or_cmd(cmd, ...) abort if s:is_table(getline('.')) call call('vimwiki#tbl#format', [line('.')] + a:000) else @@ -758,7 +753,7 @@ function! vimwiki#tbl#align_or_cmd(cmd, ...) endfunction -function! vimwiki#tbl#reset_tw(lnum) +function! vimwiki#tbl#reset_tw(lnum) abort if !(&filetype ==? 'vimwiki') return endif @@ -767,13 +762,13 @@ function! vimwiki#tbl#reset_tw(lnum) return endif - let s:textwidth = &tw - let &tw = 0 + let s:textwidth = &textwidth + let &textwidth = 0 endfunction " TODO: move_column_left and move_column_right are good candidates to be refactored. -function! vimwiki#tbl#move_column_left() +function! vimwiki#tbl#move_column_left() abort "echomsg "DEBUG move_column_left: " @@ -808,7 +803,7 @@ function! vimwiki#tbl#move_column_left() endfunction -function! vimwiki#tbl#move_column_right() +function! vimwiki#tbl#move_column_right() abort let line = getline('.') @@ -840,27 +835,27 @@ function! vimwiki#tbl#move_column_right() endfunction -function! vimwiki#tbl#get_rows(lnum) +function! vimwiki#tbl#get_rows(lnum) abort return s:get_rows(a:lnum) endfunction -function! vimwiki#tbl#is_table(line) +function! vimwiki#tbl#is_table(line) abort return s:is_table(a:line) endfunction -function! vimwiki#tbl#is_separator(line) +function! vimwiki#tbl#is_separator(line) abort return s:is_separator(a:line) endfunction -function! vimwiki#tbl#cell_splitter() +function! vimwiki#tbl#cell_splitter() abort return s:cell_splitter() endfunction -function! vimwiki#tbl#sep_splitter() +function! vimwiki#tbl#sep_splitter() abort return s:sep_splitter() endfunction diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim index 2a9fe78..3db3e60 100644 --- a/autoload/vimwiki/u.vim +++ b/autoload/vimwiki/u.vim @@ -3,7 +3,7 @@ " Description: Utility functions " Home: https://github.com/vimwiki/vimwiki/ -function! vimwiki#u#trim(string, ...) +function! vimwiki#u#trim(string, ...) abort let chars = '' if a:0 > 0 let chars = a:1 @@ -15,58 +15,58 @@ endfunction " Builtin cursor doesn't work right with unicode characters. -function! vimwiki#u#cursor(lnum, cnum) +function! vimwiki#u#cursor(lnum, cnum) abort exe a:lnum exe 'normal! 0'.a:cnum.'|' endfunction -function! vimwiki#u#is_windows() - return has("win32") || has("win64") || has("win95") || has("win16") +function! vimwiki#u#is_windows() abort + return has('win32') || has('win64') || has('win95') || has('win16') endfunction -function! vimwiki#u#is_macos() - if has("mac") || has("macunix") || has("gui_mac") +function! vimwiki#u#is_macos() abort + if has('mac') || has('macunix') || has('gui_mac') return 1 endif " that still doesn't mean we are not on Mac OS let os = substitute(system('uname'), '\n', '', '') - return os == 'Darwin' || os == 'Mac' + return os ==? 'Darwin' || os ==? 'Mac' endfunction -function! vimwiki#u#count_first_sym(line) +function! vimwiki#u#count_first_sym(line) abort let first_sym = matchstr(a:line, '\S') return len(matchstr(a:line, first_sym.'\+')) endfunction -function! vimwiki#u#escape(string) +function! vimwiki#u#escape(string) abort return escape(a:string, '~.*[]\^$') endfunction " Load concrete Wiki syntax: sets regexes and templates for headers and links -function vimwiki#u#reload_regexes() +function! vimwiki#u#reload_regexes() abort execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'.vim' endfunction " Load syntax-specific functionality -function vimwiki#u#reload_regexes_custom() +function! vimwiki#u#reload_regexes_custom() abort execute 'runtime! syntax/vimwiki_'.vimwiki#vars#get_wikilocal('syntax').'_custom.vim' endfunction " Backward compatible version of the built-in function shiftwidth() if exists('*shiftwidth') - func vimwiki#u#sw() + function! vimwiki#u#sw() abort return shiftwidth() endfunc else - func vimwiki#u#sw() - return &sw + function! vimwiki#u#sw() abort + return &shiftwidth endfunc endif @@ -77,7 +77,7 @@ endif " if a:1==1 then the hasmapto() check is skipped. " this can be used to map different keys to the same definition " if a:1==2 then the mapping is not specific i.e. it is global -function vimwiki#u#map_key(mode, key, plug, ...) +function! vimwiki#u#map_key(mode, key, plug, ...) abort if a:0 && a:1 == 2 " global mappings if !hasmapto(a:plug) && maparg(a:key, a:mode) ==# '' @@ -95,7 +95,7 @@ function vimwiki#u#map_key(mode, key, plug, ...) endfunction -function! vimwiki#u#is_codeblock(lnum) +function! vimwiki#u#is_codeblock(lnum) abort let syn_g = synIDattr(synID(a:lnum,1,1),'name') if syn_g =~# 'textSnip.*' \ || syn_g =~# 'VimwikiPre.*' diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index b428e38..334dde9 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -26,7 +26,7 @@ " ------------------------------------------------------------------------------------------------ -function! s:populate_global_variables() +function! s:populate_global_variables() abort let g:vimwiki_global_vars = {} @@ -139,7 +139,7 @@ function! s:populate_global_variables() endfunction -function! s:read_global_settings_from_user() +function! s:read_global_settings_from_user() abort let global_settings = { \ 'CJK_length': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, \ 'auto_chdir': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, @@ -243,7 +243,7 @@ function! s:read_global_settings_from_user() endfunction -function! s:normalize_global_settings() +function! s:normalize_global_settings() abort let keys = keys(g:vimwiki_global_vars.ext2syntax) for ext in keys " for convenience, we also allow the term 'mediawiki' @@ -254,7 +254,7 @@ function! s:normalize_global_settings() " ensure the file extensions in ext2syntax start with a dot " make sure this occurs after anything else that tries to access " the entry using the index 'ext' since this removes that index - if ext[0] != '.' + if ext[0] !=# '.' let new_ext = '.' . ext let g:vimwiki_global_vars.ext2syntax[new_ext] = g:vimwiki_global_vars.ext2syntax[ext] call remove(g:vimwiki_global_vars.ext2syntax, ext) @@ -321,7 +321,7 @@ function! s:normalize_global_settings() endfunction -function! s:populate_wikilocal_options() +function! s:populate_wikilocal_options() abort let default_values = { \ 'auto_diary_index': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, \ 'auto_export': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, @@ -415,7 +415,7 @@ function! s:populate_wikilocal_options() endfunction -function! s:check_users_value(key, users_value, value_infos, comes_from_global_variable) +function! s:check_users_value(key, users_value, value_infos, comes_from_global_variable) abort let type_code_to_name = { \ type(0): 'number', \ type(''): 'string', @@ -473,7 +473,7 @@ function! s:check_users_value(key, users_value, value_infos, comes_from_global_v endfunction -function! s:normalize_wikilocal_settings() +function! s:normalize_wikilocal_settings() abort for wiki_settings in g:vimwiki_wikilocal_vars let wiki_settings['path'] = s:normalize_path(wiki_settings['path']) @@ -489,7 +489,7 @@ function! s:normalize_wikilocal_settings() let wiki_settings['diary_rel_path'] = s:normalize_path(wiki_settings['diary_rel_path']) let ext = wiki_settings['ext'] - if !empty(ext) && ext[0] != '.' + if !empty(ext) && ext[0] !=# '.' let wiki_settings['ext'] = '.' . ext endif @@ -501,7 +501,7 @@ function! s:normalize_wikilocal_settings() endfunction -function! s:normalize_path(path) +function! s:normalize_path(path) abort " trim trailing / and \ because otherwise resolve() doesn't work quite right let path = substitute(a:path, '[/\\]\+$', '', '') if path !~# '^scp:' @@ -512,7 +512,7 @@ function! s:normalize_path(path) endfunction -function! vimwiki#vars#populate_syntax_vars(syntax) +function! vimwiki#vars#populate_syntax_vars(syntax) abort if !exists('g:vimwiki_syntax_variables') let g:vimwiki_syntax_variables = {} endif @@ -626,7 +626,7 @@ function! vimwiki#vars#populate_syntax_vars(syntax) if match(vimwiki#vars#get_global('listsyms'), vimwiki#vars#get_global('listsym_rejected')) != -1 echomsg 'Vimwiki Warning: the value of g:vimwiki_listsym_rejected (''' \ . vimwiki#vars#get_global('listsym_rejected') - \ . ''') must not be a part of g:vimwiki_listsyms (''' . + \ . ''') must not be a part of g:vimwiki_listsyms (''' \ . vimwiki#vars#get_global('listsyms') . ''')' endif let g:vimwiki_syntax_variables[a:syntax].rxListItemWithoutCB = @@ -698,7 +698,7 @@ function! vimwiki#vars#populate_syntax_vars(syntax) endfunction -function! s:populate_extra_markdown_vars() +function! s:populate_extra_markdown_vars() abort let mkd_syntax = g:vimwiki_syntax_variables['markdown'] " 0a) match [[URL|DESCRIPTION]] @@ -867,13 +867,13 @@ function! s:populate_extra_markdown_vars() endfunction -function! vimwiki#vars#init() +function! vimwiki#vars#init() abort call s:populate_global_variables() call s:populate_wikilocal_options() endfunction -function! vimwiki#vars#get_syntaxlocal(key, ...) +function! vimwiki#vars#get_syntaxlocal(key, ...) abort if a:0 let syntax = a:1 else @@ -889,7 +889,7 @@ endfunction " Get a variable for the buffer we are currently in or for the given buffer (number or name). " Populate the variable, if it doesn't exist. -function! vimwiki#vars#get_bufferlocal(key, ...) +function! vimwiki#vars#get_bufferlocal(key, ...) abort let buffer = a:0 ? a:1 : '%' " 'get(getbufvar(...' handles vim < v7.3.831 that didn't allow a default value for getbufvar @@ -921,20 +921,20 @@ function! vimwiki#vars#get_bufferlocal(key, ...) endfunction -function! vimwiki#vars#set_bufferlocal(key, value, ...) +function! vimwiki#vars#set_bufferlocal(key, value, ...) abort let buffer = a:0 ? a:1 : '%' call setbufvar(buffer, 'vimwiki_' . a:key, a:value) endfunction -function! vimwiki#vars#get_global(key) +function! vimwiki#vars#get_global(key) abort return g:vimwiki_global_vars[a:key] endfunction " the second argument can be a wiki number. When absent, the wiki of the currently active buffer is " used -function! vimwiki#vars#get_wikilocal(key, ...) +function! vimwiki#vars#get_wikilocal(key, ...) abort if a:0 return g:vimwiki_wikilocal_vars[a:1][a:key] else @@ -943,12 +943,12 @@ function! vimwiki#vars#get_wikilocal(key, ...) endfunction -function! vimwiki#vars#get_wikilocal_default(key) +function! vimwiki#vars#get_wikilocal_default(key) abort return g:vimwiki_wikilocal_vars[-1][a:key] endfunction -function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) +function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) abort if a:wiki_nr == len(g:vimwiki_wikilocal_vars) - 1 call insert(g:vimwiki_wikilocal_vars, {}, -1) endif @@ -956,7 +956,7 @@ function! vimwiki#vars#set_wikilocal(key, value, wiki_nr) endfunction -function! vimwiki#vars#add_temporary_wiki(settings) +function! vimwiki#vars#add_temporary_wiki(settings) abort let new_temp_wiki_settings = copy(g:vimwiki_wikilocal_vars[-1]) for [key, value] in items(a:settings) let new_temp_wiki_settings[key] = value @@ -967,6 +967,6 @@ endfunction " number of registered wikis + temporary -function! vimwiki#vars#number_of_wikis() +function! vimwiki#vars#number_of_wikis() abort return len(g:vimwiki_wikilocal_vars) - 1 endfunction diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index eeac6de..d873eee 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -2,7 +2,7 @@ " Vimwiki filetype plugin file " Home: https://github.com/vimwiki/vimwiki/ -if exists("b:did_ftplugin") +if exists('b:did_ftplugin') finish endif let b:did_ftplugin = 1 " Don't load another plugin for this buffer @@ -11,7 +11,7 @@ let b:did_ftplugin = 1 " Don't load another plugin for this buffer setlocal commentstring=%%%s -if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel") +if vimwiki#vars#get_global('conceallevel') && exists('+conceallevel') let &l:conceallevel = vimwiki#vars#get_global('conceallevel') endif @@ -19,11 +19,11 @@ endif execute 'setlocal suffixesadd='.vimwiki#vars#get_wikilocal('ext') setlocal isfname-=[,] -exe "setlocal tags+=" . escape(vimwiki#tags#metadata_file_path(), ' \|"') +exe 'setlocal tags+=' . escape(vimwiki#tags#metadata_file_path(), ' \|"') -function! Complete_wikifiles(findstart, base) +function! Complete_wikifiles(findstart, base) abort if a:findstart == 1 let column = col('.')-2 let line = getline('.')[:column] @@ -50,14 +50,14 @@ function! Complete_wikifiles(findstart, base) " Completion works for wikilinks/anchors, and for tags. s:line_content " tells us which string came before a:base. There seems to be no easier " solution, because calling col('.') here returns garbage. - if s:line_context == '' + if s:line_context ==? '' return [] - elseif s:line_context == ':' + elseif s:line_context ==# ':' " Tags completion let tags = vimwiki#tags#get_tags() - if a:base != '' + if a:base !=? '' call filter(tags, - \ "v:val[:" . (len(a:base)-1) . "] == '" . substitute(a:base, "'", "''", '') . "'" ) + \ 'v:val[:' . (len(a:base)-1) . "] == '" . substitute(a:base, "'", "''", '') . "'" ) endif return tags elseif a:base !~# '#' @@ -93,7 +93,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_link(given_wikifile.'#') let wikifile = link_infos.filename let syntax = vimwiki#vars#get_wikilocal('syntax', link_infos.index) @@ -134,12 +134,12 @@ let &formatlistpat = vimwiki#vars#get_syntaxlocal('rxListItem') " Folding stuff " ------------------------------------------------ -function! VimwikiFoldListLevel(lnum) +function! VimwikiFoldListLevel(lnum) abort return vimwiki#lst#fold_level(a:lnum) endfunction -function! VimwikiFoldLevel(lnum) +function! VimwikiFoldLevel(lnum) abort let line = getline(a:lnum) " Header/section folding... @@ -151,21 +151,21 @@ function! VimwikiFoldLevel(lnum) elseif line =~# vimwiki#vars#get_syntaxlocal('rxPreEnd') return 's1' else - return "=" + return '=' endif endfunction " Constants used by VimwikiFoldText " use \u2026 and \u21b2 (or \u2424) if enc=utf-8 to save screen space -let s:ellipsis = (&enc ==? 'utf-8') ? "\u2026" : "..." +let s:ellipsis = (&encoding ==? 'utf-8') ? "\u2026" : '...' let s:ell_len = strlen(s:ellipsis) -let s:newline = (&enc ==? 'utf-8') ? "\u21b2 " : " " +let s:newline = (&encoding ==? 'utf-8') ? "\u21b2 " : ' ' let s:tolerance = 5 " unused -function! s:shorten_text_simple(text, len) +function! s:shorten_text_simple(text, len) abort let spare_len = a:len - len(a:text) return (spare_len>=0) ? [a:text,spare_len] : [a:text[0:a:len].s:ellipsis, -1] endfunction @@ -174,7 +174,7 @@ endfunction " s:shorten_text(text, len) = [string, spare] with "spare" = len-strlen(string) " for long enough "text", the string's length is within s:tolerance of "len" " (so that -s:tolerance <= spare <= s:tolerance, "string" ends with s:ellipsis) -function! s:shorten_text(text, len) +function! s:shorten_text(text, len) abort " returns [string, spare] " strlen() returns lenght in bytes, not in characters, so we'll have to do a " trick here -- replace all non-spaces with dot, calculate lengths and @@ -192,7 +192,7 @@ function! s:shorten_text(text, len) endfunction -function! VimwikiFoldText() +function! VimwikiFoldText() abort let line = getline(v:foldstart) let main_text = substitute(line, '^\s*', repeat(' ',indent(v:foldstart)), '') let fold_len = v:foldend - v:foldstart + 1 @@ -518,10 +518,10 @@ if str2nr(vimwiki#vars#get_global('key_mappings').lists) endif endif -function! s:CR(normal, just_mrkr) +function! s:CR(normal, just_mrkr) abort let res = vimwiki#tbl#kbd_cr() - if res != "" - exe "normal! " . res . "\" + if res !=? '' + exe 'normal! ' . res . "\" startinsert return endif diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim index 305272d..82190b4 100644 --- a/plugin/vimwiki.vim +++ b/plugin/vimwiki.vim @@ -4,7 +4,7 @@ " GetLatestVimScripts: 2226 1 :AutoInstall: vimwiki -if exists("g:loaded_vimwiki") || &cp +if exists('g:loaded_vimwiki') || &compatible finish endif let g:loaded_vimwiki = 1 @@ -15,8 +15,8 @@ let s:plugin_vers = -1 " Get the directory the script is installed in let s:plugin_dir = expand(':p:h:h') -let s:old_cpo = &cpo -set cpo&vim +let s:old_cpo = &cpoptions +set cpoptions&vim if exists('g:vimwiki_autowriteall') @@ -27,7 +27,7 @@ endif " this is called when the cursor leaves the buffer -function! s:setup_buffer_leave() +function! s:setup_buffer_leave() abort " don't do anything if it's not managed by Vimwiki (that is, when it's not in " a registered wiki and not a temporary wiki) if vimwiki#vars#get_bufferlocal('wiki_nr') == -1 @@ -43,7 +43,7 @@ endfunction " create a new temporary wiki for the current buffer -function! s:create_temporary_wiki() +function! s:create_temporary_wiki() abort let path = expand('%:p:h') let ext = '.'.expand('%:e') @@ -70,7 +70,7 @@ endfunction " This function is called when Vim opens a new buffer with a known wiki " extension. Both when the buffer has never been opened in this session and " when it has. -function! s:setup_new_wiki_buffer() +function! s:setup_new_wiki_buffer() abort let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr') if wiki_nr == -1 " it's not in a known wiki directory if vimwiki#vars#get_global('global_ext') @@ -95,7 +95,7 @@ endfunction " this is called when the cursor enters the buffer -function! s:setup_buffer_enter() +function! s:setup_buffer_enter() abort " don't do anything if it's not managed by Vimwiki (that is, when it's not in " a registered wiki and not a temporary wiki) if vimwiki#vars#get_bufferlocal('wiki_nr') == -1 @@ -107,14 +107,14 @@ endfunction " this is called when the buffer enters a window or when running a diff -function! s:setup_buffer_win_enter() +function! s:setup_buffer_win_enter() abort " don't do anything if it's not managed by Vimwiki (that is, when it's not in " a registered wiki and not a temporary wiki) if vimwiki#vars#get_bufferlocal('wiki_nr') == -1 return endif - if &filetype != 'vimwiki' + if &filetype !=# 'vimwiki' setfiletype vimwiki endif @@ -122,7 +122,7 @@ function! s:setup_buffer_win_enter() endfunction -function! s:setup_cleared_syntax() +function! s:setup_cleared_syntax() abort " highlight groups that get cleared " on colorscheme change because they are not linked to Vim-predefined groups hi def VimwikiBold term=bold cterm=bold gui=bold @@ -132,15 +132,15 @@ function! s:setup_cleared_syntax() if vimwiki#vars#get_global('hl_headers') == 1 for i in range(1,6) execute 'hi def VimwikiHeader'.i.' guibg=bg guifg=' - \ . vimwiki#vars#get_global('hcolor_guifg_'.&bg)[i-1] - \ .' gui=bold ctermfg='.vimwiki#vars#get_global('hcolor_ctermfg_'.&bg)[i-1] + \ . vimwiki#vars#get_global('hcolor_guifg_'.&background)[i-1] + \ .' gui=bold ctermfg='.vimwiki#vars#get_global('hcolor_ctermfg_'.&background)[i-1] \ .' term=bold cterm=bold' endfor endif endfunction -function! s:vimwiki_get_known_extensions() +function! s:vimwiki_get_known_extensions() abort " Getting all extensions that different wikis could have let extensions = {} for idx in range(vimwiki#vars#number_of_wikis()) @@ -158,7 +158,7 @@ endfunction " Set settings which are global for Vim, but should only be executed for " Vimwiki buffers. So they must be set when the cursor enters a Vimwiki buffer " and reset when the cursor leaves the buffer. -function! s:set_global_options() +function! s:set_global_options() abort let s:vimwiki_autowriteall_saved = &autowriteall let &autowriteall = vimwiki#vars#get_global('autowriteall') @@ -171,7 +171,7 @@ endfunction " Set settings which are local to a window. In a new tab they would be reset to " Vim defaults. So we enforce our settings here when the cursor enters a " Vimwiki buffer. -function! s:set_windowlocal_options() +function! s:set_windowlocal_options() abort if !&diff " if Vim is currently in diff mode, don't interfere with its folding let foldmethod = vimwiki#vars#get_global('folding') if foldmethod =~? '^expr.*' @@ -193,7 +193,7 @@ function! s:set_windowlocal_options() endif endif - if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel") + if vimwiki#vars#get_global('conceallevel') && exists('+conceallevel') let &conceallevel = vimwiki#vars#get_global('conceallevel') endif @@ -203,19 +203,19 @@ function! s:set_windowlocal_options() endfunction -function! s:get_version() +function! s:get_version() abort if s:plugin_vers != -1 - echo "Stable version: " . string(s:plugin_vers) + echo 'Stable version: ' . string(s:plugin_vers) else - let l:plugin_rev = system("git --git-dir " . s:plugin_dir . "/.git rev-parse --short HEAD") - let l:plugin_branch = system("git --git-dir " . s:plugin_dir . "/.git rev-parse --abbrev-ref HEAD") - let l:plugin_date = system("git --git-dir " . s:plugin_dir . "/.git show -s --format=%ci") + let l:plugin_rev = system('git --git-dir ' . s:plugin_dir . '/.git rev-parse --short HEAD') + let l:plugin_branch = system('git --git-dir ' . s:plugin_dir . '/.git rev-parse --abbrev-ref HEAD') + let l:plugin_date = system('git --git-dir ' . s:plugin_dir . '/.git show -s --format=%ci') if v:shell_error == 0 - echo "Branch: " . l:plugin_branch - echo "Revision: " . l:plugin_rev - echo "Date: " . l:plugin_date + echo 'Branch: ' . l:plugin_branch + echo 'Revision: ' . l:plugin_rev + echo 'Date: ' . l:plugin_date else - echo "Unknown version" + echo 'Unknown version' endif endif endfunction @@ -229,20 +229,20 @@ call vimwiki#vars#init() " Define callback functions which the user can redefine -if !exists("*VimwikiLinkHandler") +if !exists('*VimwikiLinkHandler') function VimwikiLinkHandler(url) return 0 endfunction endif -if !exists("*VimwikiLinkConverter") +if !exists('*VimwikiLinkConverter') function VimwikiLinkConverter(url, source, target) " Return the empty string when unable to process link return '' endfunction endif -if !exists("*VimwikiWikiIncludeHandler") +if !exists('*VimwikiWikiIncludeHandler') function! VimwikiWikiIncludeHandler(value) return '' endfunction @@ -251,7 +251,7 @@ endif " write a level 1 header to new wiki files " a:fname should be an absolute filepath -function! s:create_h1(fname) +function! s:create_h1(fname) abort if vimwiki#vars#get_global('auto_header') let idx = vimwiki#vars#get_bufferlocal('wiki_nr') @@ -412,7 +412,7 @@ if str2nr(vimwiki#vars#get_global('key_mappings').global) endif -function! s:build_menu(topmenu) +function! s:build_menu(topmenu) abort let wnamelist = [] for idx in range(vimwiki#vars#number_of_wikis()) let wname = vimwiki#vars#get_wikilocal('name', idx) @@ -440,7 +440,7 @@ function! s:build_menu(topmenu) endfor endfunction -function! s:build_table_menu(topmenu) +function! s:build_table_menu(topmenu) abort exe 'menu '.a:topmenu.'.-Sep- :' exe 'menu '.a:topmenu.'.Table.Create\ (enter\ cols\ rows) :VimwikiTable ' exe 'nmenu '.a:topmenu.'.Table.Formatgqq gqq' @@ -464,4 +464,4 @@ if vimwiki#vars#get_global('use_calendar') endif -let &cpo = s:old_cpo +let &cpoptions = s:old_cpo diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim index fe1081f..154e400 100644 --- a/syntax/vimwiki.vim +++ b/syntax/vimwiki.vim @@ -6,7 +6,7 @@ " Quit if syntax file is already loaded if v:version < 600 syntax clear -elseif exists("b:current_syntax") +elseif exists('b:current_syntax') finish endif @@ -18,7 +18,7 @@ call vimwiki#vars#populate_syntax_vars(s:current_syntax) " LINKS: highlighting is complicated due to "nonexistent" links feature -function! s:add_target_syntax_ON(target, type) +function! s:add_target_syntax_ON(target, type) abort let prefix0 = 'syntax match '.a:type.' `' let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char' let prefix1 = 'syntax match '.a:type.'T `' @@ -28,7 +28,7 @@ function! s:add_target_syntax_ON(target, type) endfunction -function! s:add_target_syntax_OFF(target) +function! s:add_target_syntax_OFF(target) abort let prefix0 = 'syntax match VimwikiNoExistsLink `' let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,VimwikiLinkChar' let prefix1 = 'syntax match VimwikiNoExistsLinkT `' @@ -38,7 +38,7 @@ function! s:add_target_syntax_OFF(target) endfunction -function! s:highlight_existing_links() +function! s:highlight_existing_links() abort " Wikilink " Conditional highlighting that depends on the existence of a wiki file or " directory is only available for *schemeless* wiki links @@ -153,7 +153,7 @@ endfor " possibly concealed chars -let s:conceal = exists("+conceallevel") ? ' conceal' : '' +let s:conceal = exists('+conceallevel') ? ' conceal' : '' if vimwiki#vars#get_global('conceal_onechar_markers') execute 'syn match VimwikiEqInChar contained /'. @@ -178,13 +178,13 @@ endif let s:options = ' contained transparent contains=NONE' -if exists("+conceallevel") +if exists('+conceallevel') let s:options .= s:conceal endif " A shortener for long URLs: LinkRest (a middle part of the URL) is concealed " VimwikiLinkRest group is left undefined if link shortening is not desired -if exists("+conceallevel") && vimwiki#vars#get_global('url_maxsave') > 0 +if exists('+conceallevel') && vimwiki#vars#get_global('url_maxsave') > 0 execute 'syn match VimwikiLinkRest `\%(///\=[^/ \t]\+/\)\zs\S\+\ze' \.'\%([/#?]\w\|\S\{'.vimwiki#vars#get_global('url_maxsave').'}\)`'.' cchar=~'.s:options endif @@ -339,7 +339,7 @@ syntax match VimwikiPlaceholderParam /.*/ contained " html tags -if vimwiki#vars#get_global('valid_html_tags') != '' +if vimwiki#vars#get_global('valid_html_tags') !=? '' let s:html_tags = join(split(vimwiki#vars#get_global('valid_html_tags'), '\s*,\s*'), '\|') exe 'syntax match VimwikiHTMLtag #\c#' execute 'syntax match VimwikiBold #\c.\{-}# contains=VimwikiHTMLTag' @@ -358,7 +358,7 @@ execute 'syntax match VimwikiTag /'.vimwiki#vars#get_syntaxlocal('rxTags').'/' " header groups highlighting if vimwiki#vars#get_global('hl_headers') == 0 " Strangely in default colorscheme Title group is not set to bold for cterm... - if !exists("g:colors_name") + if !exists('g:colors_name') hi Title cterm=bold endif for s:i in range(1,6) @@ -367,8 +367,8 @@ if vimwiki#vars#get_global('hl_headers') == 0 else for s:i in range(1,6) execute 'hi def VimwikiHeader'.s:i.' guibg=bg guifg=' - \ .vimwiki#vars#get_global('hcolor_guifg_'.&bg)[s:i-1].' gui=bold ctermfg=' - \ .vimwiki#vars#get_global('hcolor_ctermfg_'.&bg)[s:i-1].' term=bold cterm=bold' + \ .vimwiki#vars#get_global('hcolor_guifg_'.&background)[s:i-1].' gui=bold ctermfg=' + \ .vimwiki#vars#get_global('hcolor_ctermfg_'.&background)[s:i-1].' term=bold cterm=bold' endfor endif @@ -461,13 +461,13 @@ call vimwiki#u#reload_regexes_custom() " FIXME it now does not make sense to pretend there is a single syntax "vimwiki" -let b:current_syntax="vimwiki" +let b:current_syntax='vimwiki' " EMBEDDED syntax setup let s:nested = vimwiki#vars#get_wikilocal('nested_syntaxes') if vimwiki#vars#get_wikilocal('automatic_nested_syntaxes') - let s:nested = extend(s:nested, vimwiki#base#detect_nested_syntax(), "keep") + let s:nested = extend(s:nested, vimwiki#base#detect_nested_syntax(), 'keep') endif if !empty(s:nested) for [s:hl_syntax, s:vim_syntax] in items(s:nested) diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim index 3fa2450..33cf451 100644 --- a/syntax/vimwiki_markdown_custom.vim +++ b/syntax/vimwiki_markdown_custom.vim @@ -1,10 +1,10 @@ +" vim:tabstop=2:shiftwidth=2:expandtab:textwidth=99 +" Vimwiki syntax file +" Description: Defines markdown custom syntax +" Home: https://github.com/vimwiki/vimwiki/ - - - - -function! s:add_target_syntax_ON(target, type) +function! s:add_target_syntax_ON(target, type) abort let prefix0 = 'syntax match '.a:type.' `' let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char' let prefix1 = 'syntax match '.a:type.'T `' @@ -14,7 +14,7 @@ function! s:add_target_syntax_ON(target, type) endfunction -function! s:add_target_syntax_OFF(target, type) +function! s:add_target_syntax_OFF(target, type) abort let prefix0 = 'syntax match VimwikiNoExistsLink `' let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char' let prefix1 = 'syntax match VimwikiNoExistsLinkT `' @@ -24,18 +24,18 @@ function! s:add_target_syntax_OFF(target, type) endfunction -function! s:wrap_wikilink1_rx(target) +function! s:wrap_wikilink1_rx(target) abort return vimwiki#vars#get_syntaxlocal('rxWikiLink1InvalidPrefix') . a:target. \ vimwiki#vars#get_syntaxlocal('rxWikiLink1InvalidSuffix') endfunction -function! s:existing_mkd_refs() +function! s:existing_mkd_refs() abort return keys(vimwiki#markdown_base#scan_reflinks()) endfunction -function! s:highlight_existing_links() +function! s:highlight_existing_links() abort " Wikilink1 " Conditional highlighting that depends on the existence of a wiki file or " directory is only available for *schemeless* wiki links @@ -134,7 +134,7 @@ endfor " concealed chars -if exists("+conceallevel") +if exists('+conceallevel') syntax conceal on endif @@ -165,7 +165,7 @@ execute 'syn match VimwikiImageChar "'. execute 'syn match VimwikiImageChar "'. \ vimwiki#vars#get_syntaxlocal('rxWeblink1Suffix1').'"'.s:options -if exists("+conceallevel") +if exists('+conceallevel') syntax conceal off endif From cd3e3d238b39085f5b8360e4b39cf72c058d78ca Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 20 Dec 2019 20:41:08 -0700 Subject: [PATCH 161/216] Update changelog --- doc/vimwiki.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index e98afe6..683b9b1 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3486,8 +3486,10 @@ https://github.com/vimwiki-backup/vimwiki/issues. 2.5 (in progress)~ New:~ + * PR #785: |:VimwikiGoto| completion works with part of filename and + nested directories * Add test framework (vader, vint, vim-testbed) - * Issue #769. Set default values for |g:vimwiki_ext2syntax|. + * Issue #769: Set default values for |g:vimwiki_ext2syntax|. * PR #735: Make list-toggling work properly even when code blocks are embedded within the list in Markdown mode. * PR #711: Allow forcing VimwikiAll2HTML with ! From 7ad0ad36dcf66284944852a955386fe5117686d4 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Sat, 21 Dec 2019 09:09:16 -0700 Subject: [PATCH 162/216] Set default list_margin=0 for markdown --- autoload/vimwiki/vars.vim | 8 +++ test/command_generate_links.vader | 49 +++++++------- test/command_toc.vader | 55 ++++++++-------- test/list_margin.vader | 105 ++++++++++++++++++++++++++++++ 4 files changed, 163 insertions(+), 54 deletions(-) create mode 100644 test/list_margin.vader diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index 334dde9..1a550e5 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -497,6 +497,14 @@ function! s:normalize_wikilocal_settings() abort if wiki_settings.syntax ==# 'mediawiki' let wiki_settings.syntax = 'media' endif + + if wiki_settings.syntax ==# 'markdown' + " default list margin to 0 + let wiki_settings.list_margin = 0 + else + let wiki_settings.list_margin = -1 + endif + endfor endfunction diff --git a/test/command_generate_links.vader b/test/command_generate_links.vader index c62938e..eedf18e 100644 --- a/test/command_generate_links.vader +++ b/test/command_generate_links.vader @@ -7,12 +7,6 @@ Execute (Copy Wiki's Resources): # 1 VimwikiGenerateLinks ########################## -Execute (New Command): - Log "1. Testing VimwikiGenerateLinks" - set sw=4 - AssertEqual 4, &sw - - Given (Void): Execute (Goto markdown resource wiki): @@ -24,16 +18,16 @@ Execute (Edit Test file / VimwikiGenerateLinks): AssertEqual $HOME . '/testmarkdown/Test.md', expand('%') AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') - + VimwikiGenerateLinks Expect (The links with a header): - - + + # Generated Links - - [Buzz Bozz](buzz_bozz) - - [Test Wiki](index) + - [Buzz Bozz](buzz_bozz) + - [Test Wiki](index) Do (Save Test.md && Re-GenerateLinks): :edit $HOME/testmarkdown/Test.md\ @@ -42,13 +36,13 @@ Do (Save Test.md && Re-GenerateLinks): :VimwikiGenerateLinks\ Expect (The links with a header with file Test): - - + + # Generated Links - - [Generated Links](Test) - - [Buzz Bozz](buzz_bozz) - - [Test Wiki](index) + - [Generated Links](Test) + - [Buzz Bozz](buzz_bozz) + - [Test Wiki](index) # 2 VimwikiDiaryGenerateLinks @@ -80,20 +74,20 @@ Do (Edit diary.md && GenerateDiaryLinks): Expect (diary index generated): # Diary - + ## 2019 - + ### December - - - [2019-12-10](2019-12-10) - + + - [2019-12-10](2019-12-10) + ### July - - - [informative title](2019-07-13) - + + - [informative title](2019-07-13) + ### March - - - [2019-03-01](2019-03-01) + + - [2019-03-01](2019-03-01) Execute (Clean): @@ -105,4 +99,5 @@ Execute (Clean): Include: vader_includes/vader_teardown.vader -# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= + +" vim: sw=2 foldmethod=indent foldlevel=30 foldignore= diff --git a/test/command_toc.vader b/test/command_toc.vader index b9265c9..0c3be5c 100644 --- a/test/command_toc.vader +++ b/test/command_toc.vader @@ -10,7 +10,7 @@ Given vimwiki (Headings): random text ### Header 1.1.1 random text - + # Header 2 ### Header 2.1.1 @@ -24,11 +24,11 @@ Execute (VimwikiTOC): Expect (With a TOC sw=8): # Contents - - [Header 1](#Header 1) - - [Header 1.1](#Header 1#Header 1.1) - - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) - - [Header 2](#Header 2) - - [Header 2.1.1](#Header 2#Header 2.1.1) + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) # Header 1 random text @@ -47,11 +47,11 @@ Execute (Set sw=4 && VimwikiTOC): Expect (With a TOC sw=4): # Contents - - [Header 1](#Header 1) - - [Header 1.1](#Header 1#Header 1.1) - - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) - - [Header 2](#Header 2) - - [Header 2.1.1](#Header 2#Header 2.1.1) + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) # Header 1 random text @@ -75,11 +75,11 @@ Execute (VimwikiTOC): Expect (Brand new TOC): # Contents - - [Header 1](#Header 1) - - [Header 1.1](#Header 1#Header 1.1) - - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) - - [Header 2](#Header 2) - - [Header 2.1.1](#Header 2#Header 2.1.1) + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) # Header 1 random text @@ -99,11 +99,11 @@ Execute (Let toc_header = Sommaire && VimwikiTOC): Expect (Append a Sommaire && Leave Contents alone): # Sommaire - - [Header 1](#Header 1) - - [Header 1.1](#Header 1#Header 1.1) - - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) - - [Header 2](#Header 2) - - [Header 2.1.1](#Header 2#Header 2.1.1) + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) # Header 1 random text @@ -127,11 +127,11 @@ Execute (VimwikiTOC): Expect (Brand new TOC with sommaire): # Sommaire - - [Header 1](#Header 1) - - [Header 1.1](#Header 1#Header 1.1) - - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) - - [Header 2](#Header 2) - - [Header 2.1.1](#Header 2#Header 2.1.1) + - [Header 1](#Header 1) + - [Header 1.1](#Header 1#Header 1.1) + - [Header 1.1.1](#Header 1#Header 1.1#Header 1.1.1) + - [Header 2](#Header 2) + - [Header 2.1.1](#Header 2#Header 2.1.1) # Header 1 random text @@ -145,4 +145,5 @@ Expect (Brand new TOC with sommaire): Include: vader_includes/vader_teardown.vader -# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= + +" vim: sw=2 foldmethod=indent foldlevel=30 foldignore= diff --git a/test/list_margin.vader b/test/list_margin.vader new file mode 100644 index 0000000..309ff9f --- /dev/null +++ b/test/list_margin.vader @@ -0,0 +1,105 @@ +Include: vader_includes/vader_setup.vader + +Execute (Create temp directory): + silent execute '!mkdir -p $HOME/list_margin/' + cd $HOME/list_margin + +Execute (Create wiki files): + write page1.wiki + write page2.wiki + write page3.wiki + write page1.mw + write page2.mw + write page3.mw + write page1.md + write page2.md + write page3.md + +Given vimwiki (Scratch file): + +Execute (Set syntax default): + set shiftwidth=8 + AssertEqual 8, &shiftwidth + call SetSyntax('default') + +Execute (Generate Links): + VimwikiGenerateLinks + +Expect (Links with default margin): + + + = Generated Links = + - [[page1]] + - [[page2]] + - [[page3]] + +Execute (Set list margin == 2): + call vimwiki#vars#set_wikilocal('list_margin', 2, vimwiki#vars#get_bufferlocal('wiki_nr')) + VimwikiGenerateLinks + +Expect (Links with margin == 2): + + + = Generated Links = + - [[page1]] + - [[page2]] + - [[page3]] + +Execute (Set syntax media): + call SetSyntax('media') + +Execute (Generate Links): + VimwikiGenerateLinks + +Expect (Links with default margin): + + + = Generated Links = + * [[page1]] + * [[page2]] + * [[page3]] + +Execute (Set list margin == 1): + call vimwiki#vars#set_wikilocal('list_margin', 1, vimwiki#vars#get_bufferlocal('wiki_nr')) + VimwikiGenerateLinks + +Expect (Links with margin == 1): + + + = Generated Links = + * [[page1]] + * [[page2]] + * [[page3]] + +Execute (Set syntax markdown): + call SetSyntax('markdown') + +Execute (Generate Links): + VimwikiGenerateLinks + +Expect (Links with default margin): + + + # Generated Links + + - [page1](page1) + - [page2](page2) + - [page3](page3) + +Execute (Set list margin == 5): + call vimwiki#vars#set_wikilocal('list_margin', 5, vimwiki#vars#get_bufferlocal('wiki_nr')) + VimwikiGenerateLinks + +Expect (Links with margin == 5): + + + # Generated Links + + - [page1](page1) + - [page2](page2) + - [page3](page3) + +Execute (Return to default location & cleanup): + cd /testplugin + +Include: vader_includes/vader_teardown.vader From f18bb6bc5719159c4a7c31718b60eff68f12797f Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Sat, 21 Dec 2019 09:10:39 -0700 Subject: [PATCH 163/216] Add function to print a command output to the buffer --- test/vader_includes/vader_setup.vader | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/vader_includes/vader_setup.vader b/test/vader_includes/vader_setup.vader index b04518b..6e7d5b3 100644 --- a/test/vader_includes/vader_setup.vader +++ b/test/vader_includes/vader_setup.vader @@ -67,8 +67,20 @@ Before (Define functions): " Write current file: helper to hide `set bt=` function! WriteMe() - set bt= + set buftype= write % endfunction + " print a command output to the buffer + function! PrintCommand(cmd) + redir => message + silent execute a:cmd + redir END + if empty(message) + Log 'no output' + else + silent put=message + endif + endfunction + # vim: ft=vim From e66464cda0c74afd00171ca79a8f0beec7cba387 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Sat, 21 Dec 2019 09:11:17 -0700 Subject: [PATCH 164/216] Remove ft=conf -> Vader is a ft --- test/command_generate_tags.vader | 2 +- test/command_goto.vader | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/command_generate_tags.vader b/test/command_generate_tags.vader index ab0a7c4..5d7459a 100644 --- a/test/command_generate_tags.vader +++ b/test/command_generate_tags.vader @@ -72,4 +72,4 @@ Execute (Clean Test-Tag and .vimwiki_tags): Include: vader_includes/vader_teardown.vader -# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= +# vim: sw=2 foldmethod=indent foldlevel=30 foldignore= diff --git a/test/command_goto.vader b/test/command_goto.vader index 7c3ee94..73ee114 100644 --- a/test/command_goto.vader +++ b/test/command_goto.vader @@ -61,4 +61,4 @@ Execute (Clean): call system("rm $HOME/testmarkdown/dir1") Include: vader_includes/vader_teardown.vader -# vim: sw=2 ft=conf foldmethod=indent foldlevel=30 foldignore= +# vim: sw=2 foldmethod=indent foldlevel=30 foldignore= From 3cc6fa71f6e6404caaf517c7d2d5ab9fb36cd8b1 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Sat, 21 Dec 2019 09:16:48 -0700 Subject: [PATCH 165/216] Update default list_margin value --- doc/vimwiki.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 683b9b1..482f8dd 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -2493,7 +2493,7 @@ parameters can be passed using this option: > *vimwiki-option-list_margin* ------------------------------------------------------------------------------ Key Default value~ -list_margin -1 +list_margin -1 (0 for markdown) Description~ Width of left-hand margin for lists. When negative, the current 'shiftwidth' @@ -3486,6 +3486,7 @@ https://github.com/vimwiki-backup/vimwiki/issues. 2.5 (in progress)~ New:~ + * Set default |vimwiki-option-list_margin| = 0 for markdown syntax. * PR #785: |:VimwikiGoto| completion works with part of filename and nested directories * Add test framework (vader, vint, vim-testbed) From 19f913429f285099033f7db864d530d1c08db86c Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 23 Dec 2019 13:35:31 -0700 Subject: [PATCH 166/216] Don't overwrite user setting of list_margin. Closes #789 --- autoload/vimwiki/vars.vim | 8 +++++--- test/list_margin.vader | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index 1a550e5..075166b 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -321,6 +321,7 @@ function! s:normalize_global_settings() abort endfunction +let s:margin_set_by_user = 0 function! s:populate_wikilocal_options() abort let default_values = { \ 'auto_diary_index': {'type': type(0), 'default': 0, 'min': 0, 'max': 1}, @@ -375,6 +376,9 @@ function! s:populate_wikilocal_options() abort for key in keys(default_values) if has_key(users_wiki_settings, key) call s:check_users_value(key, users_wiki_settings[key], default_values[key], 0) + if key ==# 'list_margin' + let s:margin_set_by_user = 1 + endif let new_wiki_settings[key] = users_wiki_settings[key] else let new_wiki_settings[key] = default_wiki_settings[key] @@ -498,11 +502,9 @@ function! s:normalize_wikilocal_settings() abort let wiki_settings.syntax = 'media' endif - if wiki_settings.syntax ==# 'markdown' + if wiki_settings.syntax ==# 'markdown' && !s:margin_set_by_user " default list margin to 0 let wiki_settings.list_margin = 0 - else - let wiki_settings.list_margin = -1 endif endfor diff --git a/test/list_margin.vader b/test/list_margin.vader index 309ff9f..2c23b1b 100644 --- a/test/list_margin.vader +++ b/test/list_margin.vader @@ -21,6 +21,7 @@ Execute (Set syntax default): set shiftwidth=8 AssertEqual 8, &shiftwidth call SetSyntax('default') + call vimwiki#vars#set_wikilocal('list_margin', -1, vimwiki#vars#get_bufferlocal('wiki_nr')) Execute (Generate Links): VimwikiGenerateLinks @@ -47,6 +48,7 @@ Expect (Links with margin == 2): Execute (Set syntax media): call SetSyntax('media') + call vimwiki#vars#set_wikilocal('list_margin', -1, vimwiki#vars#get_bufferlocal('wiki_nr')) Execute (Generate Links): VimwikiGenerateLinks @@ -73,6 +75,7 @@ Expect (Links with margin == 1): Execute (Set syntax markdown): call SetSyntax('markdown') + " list margin should default to 0 for markdown Execute (Generate Links): VimwikiGenerateLinks From 719036b011ed62405337b99d473e09ff885c4401 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 30 Dec 2019 05:58:20 -0700 Subject: [PATCH 167/216] Add ability to select individual tests to run. --- test/run_tests.sh | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/test/run_tests.sh b/test/run_tests.sh index 6e8387a..fbba521 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -19,6 +19,9 @@ printHelp() { echo "" echo "-t Select test type: 'vader', 'vint', or 'all'" echo "" + echo "-o Comma seperated list of tests to run." + echo " E.g. -o \"list_margin,command_toc\"" + echo "" echo "-v Turn on verbose output." exit 0 } @@ -31,12 +34,32 @@ printVersions() { runVader() { echo "Starting Docker container and Vader tests." + if [[ -z $only ]]; then + ind="test/independent_runs/*.vader" + res="test/*" + else + IFS=',' read -ra TEST <<< "$only" + for i in "${TEST[@]}"; do + if [[ -f "$i" ]]; then + res="$res test/${i}" + elif [[ -f "${i}.vader" ]]; then + res="$res test/${i}.vader" + elif [[ -f "independent_runs/${i}" ]]; then + ind="$ind test/independent_runs/${i}" + elif [[ -f "independent_runs/${i}.vader" ]]; then + ind="$ind test/independent_runs/${i}.vader" + else + printf "WARNING: Test \"%s\" not found.\n", "$i" + fi + done + fi + # run tests for each specified version for v in $vers; do echo "" echo "Running version: $v" vim="/vim-build/bin/$v -u test/vimrc -i NONE" - test_cmd="for VF in test/independent_runs/*.vader; do $vim \"+Vader! \$VF\"; done" + test_cmd="for VF in ${ind}; do $vim \"+Vader! \$VF\"; done" set -o pipefail @@ -47,7 +70,7 @@ runVader() { # remaining tests docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \ - "$v" -u test/vimrc -i NONE "+Vader! test/*" 2>&1 | vader_filter | vader_color + "$v" -u test/vimrc -i NONE "+Vader! ${res}" 2>&1 | vader_filter | vader_color set +o pipefail done @@ -142,10 +165,13 @@ type="all" # verbose output flag verbose=0 +# only run these tests +only="" + # docker flags flags=(--rm -v "$PWD/../:/testplugin" -v "$PWD/../test:/home" -w /testplugin vimwiki) -while getopts ":hvn:lt:" opt; do +while getopts ":hvn:lt:o:" opt; do case ${opt} in h ) printHelp @@ -162,6 +188,9 @@ while getopts ":hvn:lt:" opt; do t ) type="$OPTARG" ;; + o ) + only="$OPTARG" + ;; \? ) echo "Invalid option: $OPTARG" 1>&2 exit 1 From b9eec79cc629aebf48a67d32b67cc1c4db953a65 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 30 Dec 2019 10:07:20 -0700 Subject: [PATCH 168/216] Update tags file format. Closes #779. --- autoload/vimwiki/tags.vim | 15 ++++++++++++--- doc/vimwiki.txt | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index debfff6..240ec9c 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -162,7 +162,7 @@ function! s:load_tags_metadata() abort endif let metadata = {} for line in readfile(metadata_path) - if line =~# '^!_TAG_FILE_' + if line =~# '^!_TAG_.*$' continue endif let parts = matchlist(line, '^\(.\{-}\);"\(.*\)$') @@ -278,8 +278,17 @@ function! s:write_tags_metadata(metadata) abort endfor endfor call sort(tags, 's:tags_entry_cmp') - call insert(tags, "!_TAG_FILE_SORTED\t1\t") - call writefile(tags, metadata_path) + let tag_comments = [ + \ "!_TAG_FILE_FORMAT\t2", + \ "!_TAG_FILE_SORTED\t1", + \ "!_TAG_OUTPUT_MODE\tvimwiki-tags", + \ "!_TAG_PROGRAM_AUTHOR\tVimwiki", + \ "!_TAG_PROGRAM_NAME\tVimwiki Tags", + \ "!_TAG_PROGRAM_URL\thttps://github.com/vimwiki/vimwiki", + \ "!_TAG_PROGRAM_VERSION\t2.4.1", + \ ] + call writefile(tag_comments, metadata_path) + call writefile(tags, metadata_path, 'a') endfunction diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 482f8dd..18f17b7 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3558,6 +3558,7 @@ Removed:~ point. Fixed:~ + * Issue #779: Vimwiki tags file meets ctags standard. * Issue #781: Compatablity fixes for older versions of Vim. * Issue #691: Allow |:VimwikiGoBackLink| to go back multiple times. * Update MathJax CDN loading instructions. From b4e0f738a32e0dbfdad6c74e22721d1872932ef8 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 30 Dec 2019 10:08:28 -0700 Subject: [PATCH 169/216] Allow markdown syntax to have tags at top of file. Previously tags that did not fall under a header caused errors because the generation code expected an anchor. Update tags test case. Closes #790 --- autoload/vimwiki/tags.vim | 18 +++--- test/command_generate_tags.vader | 95 +++++++++++++++++++------------- 2 files changed, 68 insertions(+), 45 deletions(-) diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index 240ec9c..c9a1471 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -354,16 +354,18 @@ function! vimwiki#tags#generate_tags(create, ...) abort let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink3Template') let link_infos = vimwiki#base#resolve_link(taglink) if empty(link_infos.anchor) - echom 'Vimwiki Error: Tags must appear after a header.' - return [] + let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template') + let entry = s:safesubstitute(link_tpl, '__LinkUrl__', taglink, '') + let entry = s:safesubstitute(entry, '__LinkDescription__', taglink, '') + else + let link_caption = split(link_infos.anchor, '#', 0)[-1] + let link_text = split(taglink, '#', 1)[0] + let entry = s:safesubstitute(link_tpl, '__LinkUrl__', link_text, '') + let entry = s:safesubstitute(entry, '__LinkAnchor__', link_infos.anchor, '') + let entry = s:safesubstitute(entry, '__LinkDescription__', link_caption, '') endif - let link_caption = split(link_infos.anchor, '#', 0)[-1] - let link_text = split(taglink, '#', 1)[0] - let entry = s:safesubstitute(link_tpl, '__LinkUrl__', link_text, '') - let entry = s:safesubstitute(entry, '__LinkAnchor__', link_infos.anchor, '') - let entry = s:safesubstitute(entry, '__LinkDescription__', link_caption, '') - call add(lines, bullet.entry) + call add(lines, bullet . entry) else let link_tpl = vimwiki#vars#get_global('WikiLinkTemplate1') call add(lines, bullet . substitute(link_tpl, '__LinkUrl__', taglink, '')) diff --git a/test/command_generate_tags.vader b/test/command_generate_tags.vader index 5d7459a..18e8ae7 100644 --- a/test/command_generate_tags.vader +++ b/test/command_generate_tags.vader @@ -1,67 +1,90 @@ Include: vader_includes/vader_setup.vader - Execute (Copy Wiki's Resources): Log "Start: Copy Resources" call CopyResources() - -# 1 VimwikiRebuildTags -###################### - -Execute (New Command): - Log "1 Testing VimwikiRebuildTags" +Execute (Setup): set sw=4 AssertEqual 4, &sw - Execute (Edit Test-Tag.md): edit $HOME/testmarkdown/Test-Tag.md AssertEqual $HOME . '/testmarkdown/Test-Tag.md', expand('%') AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') -Do (Add tag <- with `Do` trick to save file): +Do (Create File Content): :edit $HOME/testmarkdown/Test-Tag.md\ - :call append(0, ":test-tag:")\ - :set bt=\ - :write %\ + I + :top-tag:\ + \ + # A header\ + \ + :test-tag:\ + \ + # Another header\ + \ + Words here.\ + If tag isn't within 2 lines of header then it has a direct link instead of\ + a link to the header.\ + \ + :second-tag: + \ + :write\ :VimwikiRebuildTags\ -Execute (Edit .vimwiki_tags): +Execute (Edit tags file): edit $HOME/testmarkdown/.vimwiki_tags AssertEqual $HOME . '/testmarkdown/.vimwiki_tags', expand('%') AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') -# Carefull, following 2 lines have tabs: `this is the way` -Expect (Tag file with test-tag): - !_TAG_FILE_SORTED 1 - test-tag Test-Tag.md 1;" vimwiki:Test-Tag\tTest-Tag +# Note: tags file uses tabs +Expect (Correctly formatted tags file): + !_TAG_FILE_FORMAT 2 + !_TAG_FILE_SORTED 1 + !_TAG_OUTPUT_MODE vimwiki-tags + !_TAG_PROGRAM_AUTHOR Vimwiki + !_TAG_PROGRAM_NAME Vimwiki Tags + !_TAG_PROGRAM_URL https://github.com/vimwiki/vimwiki + !_TAG_PROGRAM_VERSION 2.4.1 + second-tag Test-Tag.md 13;" vimwiki:Test-Tag\tTest-Tag#second-tag + test-tag Test-Tag.md 5;" vimwiki:Test-Tag\tTest-Tag#A header + top-tag Test-Tag.md 1;" vimwiki:Test-Tag\tTest-Tag +Execute (Generate tags): + edit $HOME/testmarkdown/Test-Tag.md + VimwikiGenerateTags -# 2 VimwikiGenerateTags -######################### +Expect (Correctly generated tags section): + :top-tag: -Execute (New Command): - Log "2 Testing VimwikiGenerateTags TODO" - set sw=4 - AssertEqual 4, &sw + # A header -Given (Void): + :test-tag: -Do (Edit Test-Tag && GenerateTags): - :edit $HOME/testmarkdown/Test-Tag.md\ - :call append(0, ':Tag:')\ - :call append(0, '')\ - :call append(0, 'Test Here')\ - :call append(0, '')\ - :call append(0, '# A header')\ - :call WriteMe()\ - :VimwikiRebuildTags\ - :VimwikiGenerateTags\ - :Log "TODO give the expect block when VimwikigenerateTags is working"\ + # Another header + Words here. + If tag isn't within 2 lines of header then it has a direct link instead of + a link to the header. + + :second-tag: + + # Generated Tags + + ## second-tag + + - [second-tag](Test-Tag#second-tag) + + ## test-tag + + - [A header](Test-Tag#A header) + + ## top-tag + + - [Test-Tag](Test-Tag) Execute (Clean Test-Tag and .vimwiki_tags): Log "End: Clean" @@ -70,6 +93,4 @@ Execute (Clean Test-Tag and .vimwiki_tags): call system("rm $HOME/testmarkdown/Test-Tag.md") call DeleteHiddenBuffers() - Include: vader_includes/vader_teardown.vader -# vim: sw=2 foldmethod=indent foldlevel=30 foldignore= From cf072ebdf289abf523a0735974401cd812787b6b Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 30 Dec 2019 10:24:52 -0700 Subject: [PATCH 170/216] Update how tags are written to file. Ensures older vims are still supported. --- autoload/vimwiki/tags.vim | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index c9a1471..995ef18 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -279,16 +279,18 @@ function! s:write_tags_metadata(metadata) abort endfor call sort(tags, 's:tags_entry_cmp') let tag_comments = [ - \ "!_TAG_FILE_FORMAT\t2", - \ "!_TAG_FILE_SORTED\t1", - \ "!_TAG_OUTPUT_MODE\tvimwiki-tags", - \ "!_TAG_PROGRAM_AUTHOR\tVimwiki", - \ "!_TAG_PROGRAM_NAME\tVimwiki Tags", - \ "!_TAG_PROGRAM_URL\thttps://github.com/vimwiki/vimwiki", \ "!_TAG_PROGRAM_VERSION\t2.4.1", + \ "!_TAG_PROGRAM_URL\thttps://github.com/vimwiki/vimwiki", + \ "!_TAG_PROGRAM_NAME\tVimwiki Tags", + \ "!_TAG_PROGRAM_AUTHOR\tVimwiki", + \ "!_TAG_OUTPUT_MODE\tvimwiki-tags", + \ "!_TAG_FILE_SORTED\t1", + \ "!_TAG_FILE_FORMAT\t2", \ ] - call writefile(tag_comments, metadata_path) - call writefile(tags, metadata_path, 'a') + for c in tag_comments + call insert(tags, c) + endfor + call writefile(tags, metadata_path) endfunction From 2c50f710b8a9a45a36e49003ad25a382e2705408 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 30 Dec 2019 10:25:02 -0700 Subject: [PATCH 171/216] Update changelog --- doc/vimwiki.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 18f17b7..292d6bd 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3558,6 +3558,7 @@ Removed:~ point. Fixed:~ + * Issue #790: Allow tags before a header with markdown syntax. * Issue #779: Vimwiki tags file meets ctags standard. * Issue #781: Compatablity fixes for older versions of Vim. * Issue #691: Allow |:VimwikiGoBackLink| to go back multiple times. From 5cdeb9a682e1cc22629e64d84a557a76764369b3 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Wed, 1 Jan 2020 10:58:56 -0700 Subject: [PATCH 172/216] Improve markdown syntax for fenced code blocks. Closes #764 --- autoload/vimwiki/base.vim | 2 +- doc/vimwiki.txt | 2 ++ syntax/vimwiki_markdown.vim | 4 ++-- test/syntax.vader | 29 ++++++++++++++++++++++++++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 0e812ef..ee5f7a8 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -2276,7 +2276,7 @@ endfunction function! vimwiki#base#detect_nested_syntax() abort let last_word = '\v.*<(\w+)\s*$' - let lines = map(filter(getline(1, '$'), 'v:val =~# "\\%({{{\\|```\\)" && v:val =~# last_word'), + let lines = map(filter(getline(1, '$'), 'v:val =~# "\\%({{{\\|`\\{3,\}\\|\\~\\{3,\}\\)" && v:val =~# last_word'), \ 'substitute(v:val, last_word, "\\=submatch(1)", "")') let dict = {} for elem in lines diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 292d6bd..796048e 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3486,6 +3486,8 @@ https://github.com/vimwiki-backup/vimwiki/issues. 2.5 (in progress)~ New:~ + * Issue #764: fenced code blocks are properly supported for markdown + syntax i.e. more than 3 backticks, adds tilde support. * Set default |vimwiki-option-list_margin| = 0 for markdown syntax. * PR #785: |:VimwikiGoto| completion works with part of filename and nested directories diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim index e68661a..51896b0 100644 --- a/syntax/vimwiki_markdown.vim +++ b/syntax/vimwiki_markdown.vim @@ -80,8 +80,8 @@ let s:markdown_syntax.list_markers = ['-', '*', '+', '1.'] let s:markdown_syntax.rxListDefine = '::\%(\s\|$\)' " Preformatted text -let s:markdown_syntax.rxPreStart = '```' -let s:markdown_syntax.rxPreEnd = '```' +let s:markdown_syntax.rxPreStart = '\%(`\{3,}\|\~\{3,}\)' +let s:markdown_syntax.rxPreEnd = '\%(`\{3,}\|\~\{3,}\)' " Math block let s:markdown_syntax.rxMathStart = '\$\$' diff --git a/test/syntax.vader b/test/syntax.vader index ca22ce6..3cfe860 100644 --- a/test/syntax.vader +++ b/test/syntax.vader @@ -211,6 +211,21 @@ Given vimwiki (Markdown, Text and Vim): set hlsearch ``` + `````vim + " this is vim + set hlsearch + ````` + + ~~~vim + " this is vim + set hlsearch + ~~~ + + ~~~~~vim + " this is vim + set hlsearch + ~~~~~~~~~~~ + Execute (Set syntax markdown): let g:vimwiki_global_vars['vimwiki_automatic_nested_syntaxes'] = 1 call SetSyntax('markdown') @@ -225,6 +240,18 @@ Execute (Assert Code syntax): AssertEqual SyntaxAt(5, 1), 'VimwikiPre' AssertEqual SyntaxAt(9, 1), 'vimLineComment' AssertEqual SyntaxAt(10, 1), 'vimCommand' + AssertEqual SyntaxAt(13, 1), 'VimwikiPre' + AssertEqual SyntaxAt(14, 1), 'vimLineComment' + AssertEqual SyntaxAt(15, 1), 'vimCommand' + AssertEqual SyntaxAt(16, 1), 'VimwikiPre' + AssertEqual SyntaxAt(18, 1), 'VimwikiPre' + AssertEqual SyntaxAt(19, 1), 'vimLineComment' + AssertEqual SyntaxAt(20, 1), 'vimCommand' + AssertEqual SyntaxAt(21, 1), 'VimwikiPre' + AssertEqual SyntaxAt(23, 1), 'VimwikiPre' + AssertEqual SyntaxAt(24, 1), 'vimLineComment' + AssertEqual SyntaxAt(25, 1), 'vimCommand' + AssertEqual SyntaxAt(26, 1), 'VimwikiPre' # 11 Math {{{1 @@ -277,7 +304,7 @@ Given vimwiki (Math wiki): &= 2. }}$ -Execute (Set syntax markdown): +Execute (Set syntax default): call SetSyntax('default') Execute (Assert math syntax): From 5126967d095e92c73c772e0e918554d378a43ef1 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Thu, 2 Jan 2020 20:53:48 -0700 Subject: [PATCH 173/216] Rename VimwikiGenerateTags -> VimwikiGenerateTagLinks Closes #796 --- doc/vimwiki.txt | 5 +++-- ftplugin/vimwiki.vim | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 796048e..0ac866d 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -924,7 +924,7 @@ Vimwiki file. Searches over the pages in current wiki and finds all locations of a given tag. Supports |cmdline-completion|. -*:VimwikiGenerateTags* tagname1 tagname2 ... +*:VimwikiGenerateTagLinks* tagname1 tagname2 ... Creates or updates an overview on all tags of the wiki with links to all their instances. Supports |cmdline-completion|. If no arguments (tags) are specified, outputs all tags. To make this command work properly, make @@ -1479,7 +1479,7 @@ the tags metadata will be auto-updated on each page save. Tags-related commands and options: * |:VimwikiRebuildTags| - * |:VimwikiGenerateTags| + * |:VimwikiGenerateTagLinks| * |:VimwikiSearchTags| * |vimwiki-option-auto_tags| @@ -3560,6 +3560,7 @@ Removed:~ point. Fixed:~ + * Issue #796: Rename |:VimwikiGenerateTags| to |:VimwikiGenerateTagLinks| * Issue #790: Allow tags before a header with markdown syntax. * Issue #779: Vimwiki tags file meets ctags standard. * Issue #781: Compatablity fixes for older versions of Vim. diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index d873eee..b1bd96c 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -303,7 +303,7 @@ command! -buffer -bang VimwikiRebuildTags call vimwiki#tags#update_tags(1, ':/ command! -buffer -nargs=* -complete=custom,vimwiki#tags#complete_tags - \ VimwikiGenerateTags call vimwiki#tags#generate_tags(1, ) + \ VimwikiGenerateTagLinks call vimwiki#tags#generate_tags(1, ) command! -buffer VimwikiPasteUrl call vimwiki#html#PasteUrl(expand('%:p')) command! -buffer VimwikiCatUrl call vimwiki#html#CatUrl(expand('%:p')) From 59e1229da6c50bfe071ecf7ef26be49ff3420f4c Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 3 Jan 2020 07:08:54 -0700 Subject: [PATCH 174/216] Update call to VimwikiGenerateTagLinks --- test/command_generate_tags.vader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/command_generate_tags.vader b/test/command_generate_tags.vader index 18e8ae7..8ff150e 100644 --- a/test/command_generate_tags.vader +++ b/test/command_generate_tags.vader @@ -55,7 +55,7 @@ Expect (Correctly formatted tags file): Execute (Generate tags): edit $HOME/testmarkdown/Test-Tag.md - VimwikiGenerateTags + VimwikiGenerateTagLinks Expect (Correctly generated tags section): :top-tag: From 3ec0c9cd91fa6d6a803a3164de9564ed0b85d384 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 3 Jan 2020 07:10:02 -0700 Subject: [PATCH 175/216] Add markdown syntax support for indented code blocks. --- doc/vimwiki.txt | 1 + syntax/vimwiki_markdown.vim | 3 ++- syntax/vimwiki_markdown_custom.vim | 4 ++- test/syntax.vader | 40 ++++++++++++++++++++++-------- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 0ac866d..bcdd8ed 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3486,6 +3486,7 @@ https://github.com/vimwiki-backup/vimwiki/issues. 2.5 (in progress)~ New:~ + * Add support for markdown indented code blocks. * Issue #764: fenced code blocks are properly supported for markdown syntax i.e. more than 3 backticks, adds tilde support. * Set default |vimwiki-option-list_margin| = 0 for markdown syntax. diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim index 51896b0..c4e1617 100644 --- a/syntax/vimwiki_markdown.vim +++ b/syntax/vimwiki_markdown.vim @@ -79,9 +79,10 @@ let s:markdown_syntax.number_types = ['1.'] let s:markdown_syntax.list_markers = ['-', '*', '+', '1.'] let s:markdown_syntax.rxListDefine = '::\%(\s\|$\)' -" Preformatted text +" Preformatted text (code blocks) let s:markdown_syntax.rxPreStart = '\%(`\{3,}\|\~\{3,}\)' let s:markdown_syntax.rxPreEnd = '\%(`\{3,}\|\~\{3,}\)' +let s:markdown_syntax.rxIndentedCodeBlock = '^\s*\n\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+\(^\s*\n\)' " Math block let s:markdown_syntax.rxMathStart = '\$\$' diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim index 33cf451..fe7445f 100644 --- a/syntax/vimwiki_markdown_custom.vim +++ b/syntax/vimwiki_markdown_custom.vim @@ -190,7 +190,9 @@ syntax match VimwikiTableRow /^\s*|.\+|\s*$/ \ VimwikiEqInT, \ @Spell - +" indented code blocks https://github.github.com/gfm/#indented-code-blocks +execute 'syntax match VimwikiIndentedCodeBlock /' . vimwiki#vars#get_syntaxlocal('rxIndentedCodeBlock') . '/' +hi def link VimwikiIndentedCodeBlock VimwikiPre " syntax group highlighting hi def link VimwikiImage VimwikiLink diff --git a/test/syntax.vader b/test/syntax.vader index 3cfe860..95eb861 100644 --- a/test/syntax.vader +++ b/test/syntax.vader @@ -112,10 +112,10 @@ Execute (Assert Syntax link): Given vimwiki (Markdown Links): Inline link: > [Looks like this](URL) - + Image link: > ![Looks like this](URL) - + Reference-style links: > a) [Link Name][Id] b) [Id][], using the "implicit link name" shortcut @@ -201,11 +201,11 @@ Execute (Assert Syntax Code): Given vimwiki (Markdown, Text and Vim): this is markdown this is TODO - + ``` this is text ``` - + ```vim " this is vim set hlsearch @@ -226,6 +226,23 @@ Given vimwiki (Markdown, Text and Vim): set hlsearch ~~~~~~~~~~~ + Here is an indented code block: + + int main() + + Must be surrounded by blank lines. + + This isn't a code block: + int main() + - But this is one in a list + - Item + - subitem + + int main() + + - list item + - done + Execute (Set syntax markdown): let g:vimwiki_global_vars['vimwiki_automatic_nested_syntaxes'] = 1 call SetSyntax('markdown') @@ -252,6 +269,9 @@ Execute (Assert Code syntax): AssertEqual SyntaxAt(24, 1), 'vimLineComment' AssertEqual SyntaxAt(25, 1), 'vimCommand' AssertEqual SyntaxAt(26, 1), 'VimwikiPre' + AssertEqual SyntaxAt(30, 1), 'VimwikiIndentedCodeBlock' + AssertEqual SyntaxAt(35, 1), '' + AssertEqual SyntaxAt(40, 1), 'VimwikiIndentedCodeBlock' # 11 Math {{{1 @@ -260,14 +280,14 @@ Execute (Assert Code syntax): Given vimwiki (Math markdown): math inline: $ \sum_i a_i^2 = 1 $ - + math block: $$ - \sum_i a_i^2 + \sum_i a_i^2 = 1 $$ - + math block env: $$%align% \sum_i a_i^2 &= 1 + 1 \\ @@ -290,14 +310,14 @@ Execute (Assert math syntax): Given vimwiki (Math wiki): math inline: $ \sum_i a_i^2 = 1 $ - + math block: {{$ - \sum_i a_i^2 + \sum_i a_i^2 = 1 }}$ - + math block env: {{$%align% \sum_i a_i^2 &= 1 + 1 \\ From 270f54229232a79efcc42227dd112b9d558ee098 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 3 Jan 2020 15:14:45 -0700 Subject: [PATCH 176/216] Improve detection of code blocks --- autoload/vimwiki/u.vim | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim index 3db3e60..b01b2be 100644 --- a/autoload/vimwiki/u.vim +++ b/autoload/vimwiki/u.vim @@ -95,12 +95,14 @@ function! vimwiki#u#map_key(mode, key, plug, ...) abort endfunction +" returns 1 if line is a code block or math block +" +" The last two conditions are needed for this to correctly +" detect nested syntaxes within code blocks function! vimwiki#u#is_codeblock(lnum) abort let syn_g = synIDattr(synID(a:lnum,1,1),'name') - if syn_g =~# 'textSnip.*' - \ || syn_g =~# 'VimwikiPre.*' - \ || syn_g =~# 'VimwikiMath.*' - \ || syn_g =~# '.*Comment' + if syn_g =~# 'Vimwiki\(Pre.*\|IndentedCodeBlock\|Math.*\)' + \ || (syn_g !~# 'Vimwiki.*' && syn_g !=? '') return 1 else return 0 From 87c13f570ad1d57b06ba39bcfb9037afe2b8923f Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 3 Jan 2020 15:24:47 -0700 Subject: [PATCH 177/216] Ignore verbatim blocks when scanning tags. Merge pull request #672. --- autoload/vimwiki/tags.vim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/autoload/vimwiki/tags.vim b/autoload/vimwiki/tags.vim index 995ef18..0c4c9a8 100644 --- a/autoload/vimwiki/tags.vim +++ b/autoload/vimwiki/tags.vim @@ -88,6 +88,11 @@ function! s:scan_tags(lines, page_name) abort for line_nr in range(1, len(a:lines)) let line = a:lines[line_nr - 1] + " ignore verbatim blocks + if vimwiki#u#is_codeblock(line_nr) + continue + endif + " process headers let h_match = matchlist(line, rxheader) if !empty(h_match) " got a header @@ -112,8 +117,6 @@ function! s:scan_tags(lines, page_name) abort continue " tags are not allowed in headers endif - " TODO ignore verbatim blocks - " Scan line for tags. There can be many of them. let str = line while 1 From 8ccfeb4fdb6af1a5d1eea6221c2340abb6cc378e Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Fri, 3 Jan 2020 15:34:29 -0700 Subject: [PATCH 178/216] Add min Vim version, add missing header --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5da2e26..7a01b26 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,9 @@ The result should look something like: ## Installation +VimWiki has been tested on **Vim >= 7.3**. It will likely work on older +versions but will not be officially supported. + ### Prerequisites Make sure you have these settings in your vimrc file: @@ -130,9 +133,10 @@ vim +PluginInstall +qall ``` -Or, download the [zip -archive](https://github.com/vimwiki/vimwiki/archive/master.zip) and extract it -in `~/.vim/bundle/` +#### Manual Install + +Download the [zip archive](https://github.com/vimwiki/vimwiki/archive/master.zip) +and extract it in `~/.vim/bundle/` Then launch Vim, run `:Helptags` and then `:help vimwiki` to verify it was installed. From d9412218e397697ece35ab9f43586fabfd51947c Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Sun, 5 Jan 2020 00:21:52 -0400 Subject: [PATCH 179/216] Fix relative paths for VimwikiRenameLink. Merge PR #787. Fixes #90 __Problem__: VimwikiRenameLink does not rename dir1/toto url in dir2/tata because the dirs (dir2 and .) were well crossed but badly inspected. __Solution__: `blob(.ext*)` -> `glob(**/*.ext)` + find the relative URL * Fasten: VimwikiRenameLink goes faster with cache More: To compute old_url regex, use a cache dict because it is the same for files in the same directories * Util DeleteHiddenBuffer -> do not delete Vader buffer * Test: Prettify: Util: teardown delete defined function * Remove unnecessary trailing spaces Note: list_VimwikiReturn.vader has some necessary trailing spaces --- autoload/vimwiki/base.vim | 110 +-- autoload/vimwiki/customwiki2html.sh | 4 +- autoload/vimwiki/path.vim | 4 + doc/vimwiki.txt | 4 + syntax/vimwiki_markdown_custom.vim | 2 +- test/command_goto.vader | 8 +- test/command_rename_link.vader | 189 +++++ test/link_markdown_multiple_per_file.vader | 10 +- test/list_VimwikiReturn.vader | 75 +- test/resources/delay.wiki | 798 ++++++++++----------- test/vader_includes/vader_setup.vader | 13 +- test/vader_includes/vader_teardown.vader | 3 + 12 files changed, 728 insertions(+), 492 deletions(-) create mode 100644 test/command_rename_link.vader diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index ee5f7a8..7e86422 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -961,6 +961,10 @@ function! s:print_wiki_list() abort endfunction +" Update link: in fname.ext +" Param: fname: the source file where to change links +" Param: old: url regex of old path relative to wiki root +" Param: new: url string of new path function! s:update_wiki_link(fname, old, new) abort echo 'Updating links in '.a:fname let has_updates = 0 @@ -981,18 +985,66 @@ function! s:update_wiki_link(fname, old, new) abort endfunction -function! s:update_wiki_links_dir(wiki_nr, dir, old_fname, new_fname) abort - let old_fname = substitute(a:old_fname, '[/\\]', '[/\\\\]', 'g') - let new_fname = a:new_fname +" Update link for all files in dir +" Param: old_url, new_url: path of the old, new url relative to ... +" Param: dir: directory of the files, relative to wiki_root +function! s:update_wiki_links(wiki_nr, dir, old_url, new_url) abort + " Get list of wiki files + let wiki_root = vimwiki#vars#get_wikilocal('path', a:wiki_nr) + let fsources = vimwiki#base#find_files(a:wiki_nr, 0) - let old_fname_r = vimwiki#base#apply_template( - \ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate', - \ vimwiki#vars#get_wikilocal('syntax', a:wiki_nr)), old_fname, '', '') + " Shorten dirname + let dir_rel_root = vimwiki#path#relpath(wiki_root, a:dir) - let files = split(glob(vimwiki#vars#get_wikilocal('path', a:wiki_nr).a:dir.'*'. - \ vimwiki#vars#get_wikilocal('ext', a:wiki_nr)), '\n') - for fname in l:files - call s:update_wiki_link(fname, old_fname_r, new_fname) + " Cache relative url, because they are often the same, like `../dir1/vim-vimwiki.md` + let cache_dict = {} + + " Regex from path + function! s:compute_old_url_r(wiki_nr, dir_rel_fsource, old_url) abort + " Old url + let old_url_r = a:dir_rel_fsource . a:old_url + " Add potential ./ + let old_url_r = '\%(\.[/\\]\)\?' . old_url_r + " Compute old url regex with filename between \zs and \ze + let old_url_r = vimwiki#base#apply_template( + \ vimwiki#vars#get_syntaxlocal('WikiLinkMatchUrlTemplate', + \ vimwiki#vars#get_wikilocal('syntax', a:wiki_nr)), old_url_r, '', '') + + return old_url_r + endfunction + + " For each wikifile + for fsource in fsources + " Shorten fname directory + let fsource_rel_root = vimwiki#path#relpath(wiki_root, fsource) + let fsource_rel_root = fnamemodify(fsource_rel_root, ':h') + + " Compute old_url relative to fname + let dir_rel_fsource = vimwiki#path#relpath(fsource_rel_root, dir_rel_root) + " TODO get relpath coherent (and remove next 2 stuff) + " Remove the trailing ./ + if dir_rel_fsource =~# '.[/\\]$' + let dir_rel_fsource = dir_rel_fsource[:-3] + endif + " Append a / if needed + if !empty(dir_rel_fsource) && dir_rel_fsource !~# '[/\\]$' + let dir_rel_fsource .= '/' + endif + + " New url + let new_url = dir_rel_fsource . a:new_url + + " Old url + " Avoid E713 + let key = empty(dir_rel_fsource) ? 'NaF' : dir_rel_fsource + if index(keys(cache_dict), key) == -1 + let cache_dict[key] = s:compute_old_url_r( + \ a:wiki_nr, dir_rel_fsource, a:old_url) + endif + let old_url_r = cache_dict[key] + + " Update url in source file + call s:update_wiki_link(fsource, old_url_r, new_url) endfor endfunction @@ -1005,38 +1057,6 @@ function! s:tail_name(fname) abort endfunction -function! s:update_wiki_links(wiki_nr, old_fname, new_fname,old_fname_relpath) abort - let old_fname = a:old_fname - let new_fname = a:new_fname - - let subdirs = split(a:old_fname_relpath, '[/\\]')[: -2] - - " TODO: Use Dictionary here... - let dirs_keys = [''] - let dirs_vals = [''] - if len(subdirs) > 0 - let dirs_keys = [''] - let dirs_vals = [join(subdirs, '/').'/'] - let idx = 0 - while idx < len(subdirs) - 1 - call add(dirs_keys, join(subdirs[: idx], '/').'/') - call add(dirs_vals, join(subdirs[idx+1 :], '/').'/') - let idx = idx + 1 - endwhile - call add(dirs_keys,join(subdirs, '/').'/') - call add(dirs_vals, '') - endif - - let idx = 0 - while idx < len(dirs_keys) - let dir = dirs_keys[idx] - let new_dir = dirs_vals[idx] - call s:update_wiki_links_dir(a:wiki_nr, dir, new_dir.old_fname, new_dir.new_fname) - let idx = idx + 1 - endwhile -endfunction - - function! s:get_wiki_buffers() abort let blist = [] let bcount = 1 @@ -1443,9 +1463,13 @@ endfunction " Rename current file, update all links to it function! vimwiki#base#rename_link() abort + " Get filename relative to wiki root let subdir = vimwiki#vars#get_bufferlocal('subdir') let old_fname = subdir.expand('%:t') + " Get current path + let old_dir = expand('%:p:h') + " there is no file (new one maybe) if glob(expand('%:p')) ==? '' echomsg 'Vimwiki Error: Cannot rename "'.expand('%:p'). @@ -1520,7 +1544,7 @@ function! vimwiki#base#rename_link() abort setlocal nomore " update links - call s:update_wiki_links(wiki_nr, s:tail_name(old_fname), s:tail_name(new_link),old_fname) + call s:update_wiki_links(wiki_nr, old_dir, s:tail_name(old_fname), s:tail_name(new_fname)) " restore wiki buffers for bitem in blist diff --git a/autoload/vimwiki/customwiki2html.sh b/autoload/vimwiki/customwiki2html.sh index 6b0c17a..4818d02 100755 --- a/autoload/vimwiki/customwiki2html.sh +++ b/autoload/vimwiki/customwiki2html.sh @@ -2,7 +2,7 @@ # # This script converts markdown into html, to be used with vimwiki's -# "customwiki2html" option. Experiment with the two proposed methods by +# "customwiki2html" option. Experiment with the two proposed methods by # commenting / uncommenting the relevant lines below. # # NEW! An alternative converter was developed by Jason6Anderson, and can @@ -46,7 +46,7 @@ OUTPUT="$OUTPUTDIR"/$(basename "$INPUT" .$EXTENSION).html # # Method 1: # # markdown [-d] [-T] [-V] [-b url-base] [-C prefix] [-F bitmap] [-f flags] [-o file] [-s text] [-t text] [textfile] -# +# # URLBASE=http://example.com # $MARKDOWN -T -b $URLBASE -o $OUTPUT $INPUT diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim index 08ba503..4150f94 100644 --- a/autoload/vimwiki/path.vim +++ b/autoload/vimwiki/path.vim @@ -97,6 +97,10 @@ endfunction " Returns: the relative path from a:dir to a:file function! vimwiki#path#relpath(dir, file) abort + " Check if dir here ('.') -> return file + if empty(a:dir) || a:dir =~# '^\.[/\\]\?$' + return a:file + endif let result = [] if vimwiki#u#is_windows() " TODO temporary fix see #478 diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index bcdd8ed..8e472dc 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3471,6 +3471,7 @@ Contributors and their Github usernames in roughly chronological order: - Robin Lowe (@defau1t) - Abhinav Gupta (@abhinav) - Dave Gauer (@ratfactor) + - Martin Tourneboeuf (@tinmarino) ============================================================================== @@ -3486,6 +3487,8 @@ https://github.com/vimwiki-backup/vimwiki/issues. 2.5 (in progress)~ New:~ + * PR #787: |:VimwikiRenameLink| works for all directories: even + wiki_root/diary/2019-12-11.md if current file is wiki_root/dir1/file.md. * Add support for markdown indented code blocks. * Issue #764: fenced code blocks are properly supported for markdown syntax i.e. more than 3 backticks, adds tilde support. @@ -3561,6 +3564,7 @@ Removed:~ point. Fixed:~ + * Issue #90: VimwikiRenameLink doesn't update links in diary. * Issue #796: Rename |:VimwikiGenerateTags| to |:VimwikiGenerateTagLinks| * Issue #790: Allow tags before a header with markdown syntax. * Issue #779: Vimwiki tags file meets ctags standard. diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim index fe7445f..2f5e5d6 100644 --- a/syntax/vimwiki_markdown_custom.vim +++ b/syntax/vimwiki_markdown_custom.vim @@ -172,7 +172,7 @@ endif " Tables -syntax match VimwikiTableRow /^\s*|.\+|\s*$/ +syntax match VimwikiTableRow /^\s*|.\+|\s*$/ \ transparent contains=VimwikiCellSeparator, \ VimwikiLinkT, \ VimwikiWeblink1T, diff --git a/test/command_goto.vader b/test/command_goto.vader index 73ee114..60e66c8 100644 --- a/test/command_goto.vader +++ b/test/command_goto.vader @@ -33,19 +33,19 @@ Execute (:VimwikiGoto + Completion in directory): " Return to base VimwikiIndex 2 AssertEqual $HOME . '/testmarkdown/index.md', expand('%') - + " Complete without argment let s_complete1=string(vimwiki#base#get_globlinks_escaped()) Assert -1 != stridx(s_complete1, 'test_goto_file') - + " Complete with file argument let s_complete2=string(vimwiki#base#get_globlinks_escaped('test_goto_file')) Assert -1 != stridx(s_complete2, 'test_goto_file') - + " Complete with start of file argument let s_complete3=string(vimwiki#base#get_globlinks_escaped('test_got')) Assert -1 != stridx(s_complete3, 'test_goto_file') - + " Complete with (nested) dir2 argument let s_complete4=string(vimwiki#base#get_globlinks_escaped('dir2')) Assert -1 != stridx(s_complete4, 'test_goto_file') diff --git a/test/command_rename_link.vader b/test/command_rename_link.vader new file mode 100644 index 0000000..a841a16 --- /dev/null +++ b/test/command_rename_link.vader @@ -0,0 +1,189 @@ +Include: vader_includes/vader_setup.vader + + +Execute (Copy Wiki's Resources): + Log "Start: Copy Resources" + call CopyResources() + + +Execute (Mkdir dir1 dir2 dir11 dir12): + call system("mkdir $HOME/testmarkdown/dir1") + call system("mkdir $HOME/testmarkdown/dir1/dir11") + call system("mkdir $HOME/testmarkdown/dir1/dir12") + call system("mkdir $HOME/testmarkdown/dir2") + + +Given vimwiki (Void): + + +Execute (Create Test-Rename -> dir1/dir11/in_dir11.md and dir1/dir12/in_dir12.md and dir2/in_dir2.md): + edit $HOME/testmarkdown/Test-Rename.md + AssertEqual $HOME . '/testmarkdown/Test-Rename.md', expand('%') + AssertEqual 'markdown', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr') + call append(0, ['# Test Rename', 'in_root.md', 'dir1/dir11/in_dir11.md', 'dir1/dir12/in_dir12.md', 'dir2/in_dir2.md']) + call WriteMe() + +Do (Create in_root): + :Log 'Open Test-Rename.md'\ + :edit $HOME/testmarkdown/Test-Rename.md\ + :AssertEqual $HOME . '/testmarkdown/Test-Rename.md', expand('%')\\ + + :Log 'Delete last line (easyer latter checks without trailing spaces)'\ + Gdd + + :Log 'Open in_root.md'\ + gg + j\ + j\ + j\ + j\ + ggj0y$ + :AssertEqual '[in_root](in_root.md)', @"\ + 0\ + :AssertEqual $HOME . '/testmarkdown/in_root.md', expand('%')\ + + :Log 'Add link in_root.md -> dir1/dir11/in_dir11'\ + ggi# Title in root\\ + idir1/dir11/in_dir11\ + :call WriteMe()\ + :AssertEqual $HOME . '/testmarkdown/in_root.md', expand('%')\ + + :Log 'Open in_dir11.md: creating dirs'\ + ggj"ay$ + :AssertEqual 'reg dir1/dir11/in_dir11', 'reg ' . @a\ + 0\\ + :AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11.md', 'file ' . expand('%')\ + + :Log 'One backspace for fun'\ + \ + :AssertEqual 'file ' . $HOME . '/testmarkdown/in_root.md', 'file ' . expand('%')\ + + +Do (Create dir_11 -> dir_11): + :edit $HOME/testmarkdown/dir1/dir11/in_dir11_fix.md\ + + :Log 'Add link in_dir11_fix.md -> in_dir11'\ + ggi# Title in dir11 fix\\ + iin_dir11\ + :call WriteMe()\ + + :Log 'Open in_dir11.md: creating dirs'\ + ggj"ay$ + :AssertEqual 'reg in_dir11', 'reg ' . @a\ + 0\\ + y\ + :AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11.md', 'file ' . expand('%')\ + + :Log 'One backspace for fun'\ + \ + :AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11_fix.md', 'file ' . expand('%')\ + + +Execute (Fill in_dir11 content): + edit $HOME/testmarkdown/dir1/dir11/in_dir11.md + call append(0, ['# Title in_dir11', '[dir2 link](../../dir2/in_dir2.md)']) + call WriteMe() + + +Do (RenameLink in_dir11 -> new_dir11): + :edit $HOME/testmarkdown/dir1/dir11/in_dir11.md\ + :AssertEqual 'file ' . $HOME . '/testmarkdown/dir1/dir11/in_dir11.md', 'file ' . expand('%')\ + :AssertEqual 1, vimwiki#vars#get_bufferlocal('wiki_nr')\ + + :Log 'Rename'\ + :call WriteMe()\ + :VimwikiRenameLink\ + y\ + in_dir11_new\ + :call WriteMe()\ + + :Log 'Append filename'\ + :call append('$', [expand('%')])\ + + +Expect(With new filename at the end): + # Title in_dir11 + [dir2 link](../../dir2/in_dir2.md) + + /home/vimtest/testmarkdown/dir1/dir11/in_dir11_new.md + + +Execute (edit in_dir11_fix): + edit $HOME/testmarkdown/dir1/dir11/in_dir11_fix.md + +Expect(Link to in_dir11_new): + # Title in dir11 fix + [in_dir11](in_dir11_new) + + +Execute (edit Test-Rename.md): + edit $HOME/testmarkdown/Test-Rename.md + + +Expect (Link to in_dir11_new): + # Test Rename + [in_root](in_root.md) + [dir1 dir11 in_dir11](dir1/dir11/in_dir11_new.md) + [dir1 dir12 in_dir12](dir1/dir12/in_dir12.md) + [dir2 in_dir2](dir2/in_dir2.md) + + + +Do (in_dir2 -> in_dir2_new): + :edit $HOME/testmarkdown/dir2/in_dir2.md\ + + :Log 'Append filename'\ + :call append('$', [expand('%')])\ + + :Log 'Rename'\ + :call WriteMe()\ + :VimwikiRenameLink\ + y\ + in_dir2_new\ + :call WriteMe()\ + + :Log 'Append filename'\ + :call append('$', [expand('%')])\ + + +Expect (old and new filenames): + + /home/vimtest/testmarkdown/dir2/in_dir2.md + /home/vimtest/testmarkdown/dir2/in_dir2_new.md + +Execute (edit Test-Rename.md): + edit $HOME/testmarkdown/Test-Rename.md + + +Expect (Link to in_dir11_new): + # Test Rename + [in_root](in_root.md) + [dir1 dir11 in_dir11](dir1/dir11/in_dir11_new.md) + [dir1 dir12 in_dir12](dir1/dir12/in_dir12.md) + [dir2 in_dir2](dir2/in_dir2_new.md) + + +Execute (edit in_dir11.md): + edit $HOME/testmarkdown/dir1/dir11/in_dir11_new.md + + +Expect (Link to in_dir2_new): + # Title in_dir11 + [dir2 link](../../dir2/in_dir2_new.md) + + /home/vimtest/testmarkdown/dir1/dir11/in_dir11_new.md + + +Execute (Clean dir1 and dir2): + Log "End: Clean" + call DeleteHiddenBuffers() + call system('rm $HOME/testmarkdown/Test-Rename.md') + call system('rm $HOME/testmarkdown/in_root.md') + call system('rm -r $HOME/testmarkdown/dir1') + call system('rm -r $HOME/testmarkdown/dir2') + + +Include: vader_includes/vader_teardown.vader + +# vim: sw=2 foldmethod=indent foldlevel=30 foldignore=# diff --git a/test/link_markdown_multiple_per_file.vader b/test/link_markdown_multiple_per_file.vader index c99e48c..480b575 100644 --- a/test/link_markdown_multiple_per_file.vader +++ b/test/link_markdown_multiple_per_file.vader @@ -2,18 +2,18 @@ Include: vader_includes/vader_setup.vader Given vimwiki (Internal links + one link to filenew): # Contents - + - [Test1](#Test1) - [Test2](#Test2) - + # Test1 - + - [Test1](#Test1) - [Test2](#Test2) - [filenew](filenew) - + # Test2 - + - [Test1](#Test1) - [Test2](#Test2) - [filenew](filenew) diff --git a/test/list_VimwikiReturn.vader b/test/list_VimwikiReturn.vader index f30920b..97dc389 100644 --- a/test/list_VimwikiReturn.vader +++ b/test/list_VimwikiReturn.vader @@ -1,3 +1,9 @@ +# Testting keypress in insert mode on list item +# +# Note: some trailing spaces are necessary at the end of list items like `1.` +# better read this file with `set list` + + Include: vader_includes/vader_setup.vader Given vimwiki (List with hard wraps): @@ -112,13 +118,13 @@ Expect (No list continuation in code block): Given vimwiki (List from help file): 1. item --- - - 1. item + + 1. item continue - + --- 1. - + --- 1. @@ -135,19 +141,20 @@ Do (List ops): 3j A\\ +# Note: trailing space <- autoindent Expect (List per VimwikiReturn 1 1): 1. item 2. --- - - 1. item + + 1. item continue - + --- 1. 2. - + --- 1. 2. @@ -165,21 +172,22 @@ Do (List ops): 3j A\\ +# Note: some trailing space added Expect (List per VimwikiReturn 2 2): 1. item --- - - 1. item + + 1. item continue 2. - + --- - + 1. - + --- - + 1. --- @@ -195,18 +203,19 @@ Do (List ops): 3j A\\ + Expect (List per VimwikiReturn 3 3): 1. item 2. --- - - 1. item + + 1. item continue 2. - + --- - - + + --- @@ -227,19 +236,19 @@ Expect (List per VimwikiReturn 4 4): 1. item --- - - 1. item + + 1. item continue - + --- - - - + + + --- - - - + + + --- Execute (Map CR): @@ -258,14 +267,14 @@ Expect (List per VimwikiReturn 3 5): 1. item 2. --- - - 1. item + + 1. item continue 2. - + --- - - + + --- 1. diff --git a/test/resources/delay.wiki b/test/resources/delay.wiki index a09ed30..ba7105f 100755 --- a/test/resources/delay.wiki +++ b/test/resources/delay.wiki @@ -17,10 +17,10 @@ _anotações de atividades_ --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -70,9 +70,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -97,7 +97,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -160,9 +160,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -187,7 +187,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -245,10 +245,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -297,9 +297,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -324,7 +324,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -382,10 +382,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -434,9 +434,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -461,7 +461,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -519,10 +519,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -571,9 +571,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -598,7 +598,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -656,10 +656,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -708,9 +708,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -735,7 +735,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -793,10 +793,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -845,9 +845,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -872,7 +872,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -930,10 +930,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -982,9 +982,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1009,7 +1009,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1067,10 +1067,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1119,9 +1119,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1146,7 +1146,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1204,10 +1204,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1256,9 +1256,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1283,7 +1283,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1341,10 +1341,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1393,9 +1393,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1420,7 +1420,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1478,10 +1478,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1530,9 +1530,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1557,7 +1557,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1615,10 +1615,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1667,9 +1667,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1694,7 +1694,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1752,10 +1752,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1804,9 +1804,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1831,7 +1831,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -1889,10 +1889,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -1941,9 +1941,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -1968,7 +1968,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2026,10 +2026,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2078,9 +2078,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2105,7 +2105,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2163,10 +2163,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2215,9 +2215,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2242,7 +2242,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2300,10 +2300,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2352,9 +2352,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2379,7 +2379,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2437,10 +2437,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2489,9 +2489,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2516,7 +2516,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2574,10 +2574,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2626,9 +2626,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2653,7 +2653,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2711,10 +2711,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2763,9 +2763,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2790,7 +2790,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2848,10 +2848,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -2900,9 +2900,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -2927,7 +2927,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -2985,10 +2985,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3037,9 +3037,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3064,7 +3064,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3122,10 +3122,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3174,9 +3174,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3201,7 +3201,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3259,10 +3259,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3311,9 +3311,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3338,7 +3338,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3396,10 +3396,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3448,9 +3448,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3475,7 +3475,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3533,10 +3533,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3585,9 +3585,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3612,7 +3612,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3670,10 +3670,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3722,9 +3722,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3749,7 +3749,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3807,10 +3807,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3859,9 +3859,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -3886,7 +3886,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -3944,10 +3944,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -3996,9 +3996,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4023,7 +4023,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4081,10 +4081,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4133,9 +4133,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4160,7 +4160,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4218,10 +4218,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4270,9 +4270,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4297,7 +4297,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4355,10 +4355,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4407,9 +4407,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4434,7 +4434,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4492,10 +4492,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4544,9 +4544,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4571,7 +4571,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4629,10 +4629,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4681,9 +4681,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4708,7 +4708,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4766,10 +4766,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4818,9 +4818,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4845,7 +4845,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -4903,10 +4903,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -4955,9 +4955,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -4982,7 +4982,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5040,10 +5040,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5092,9 +5092,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5119,7 +5119,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5177,10 +5177,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5229,9 +5229,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5256,7 +5256,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5314,10 +5314,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5366,9 +5366,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5393,7 +5393,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5451,10 +5451,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5503,9 +5503,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5530,7 +5530,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5588,10 +5588,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5640,9 +5640,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5667,7 +5667,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5725,10 +5725,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5777,9 +5777,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5804,7 +5804,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5862,10 +5862,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -5914,9 +5914,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -5941,7 +5941,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -5999,10 +5999,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6051,9 +6051,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6078,7 +6078,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6136,10 +6136,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6188,9 +6188,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6215,7 +6215,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6273,10 +6273,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6325,9 +6325,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6352,7 +6352,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6410,10 +6410,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6462,9 +6462,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6489,7 +6489,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6547,10 +6547,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6599,9 +6599,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6626,7 +6626,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6684,10 +6684,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6736,9 +6736,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6763,7 +6763,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6821,10 +6821,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -6873,9 +6873,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -6900,7 +6900,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -6958,10 +6958,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7010,9 +7010,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7037,7 +7037,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7095,10 +7095,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7147,9 +7147,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7174,7 +7174,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7232,10 +7232,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7284,9 +7284,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7311,7 +7311,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7369,10 +7369,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7421,9 +7421,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7448,7 +7448,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7506,10 +7506,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7558,9 +7558,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7585,7 +7585,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7643,10 +7643,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7695,9 +7695,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7722,7 +7722,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7780,10 +7780,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7832,9 +7832,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7859,7 +7859,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -7917,10 +7917,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -7969,9 +7969,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -7996,7 +7996,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8054,10 +8054,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8106,9 +8106,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8133,7 +8133,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8191,10 +8191,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8243,9 +8243,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8270,7 +8270,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8328,10 +8328,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8380,9 +8380,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8407,7 +8407,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8465,10 +8465,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8517,9 +8517,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8544,7 +8544,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8602,10 +8602,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8654,9 +8654,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8681,7 +8681,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8739,10 +8739,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8791,9 +8791,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8818,7 +8818,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -8876,10 +8876,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -8928,9 +8928,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -8955,7 +8955,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9013,10 +9013,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9065,9 +9065,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9092,7 +9092,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9150,10 +9150,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9202,9 +9202,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9229,7 +9229,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9287,10 +9287,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9339,9 +9339,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9366,7 +9366,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9424,10 +9424,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9476,9 +9476,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9503,7 +9503,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9561,10 +9561,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9613,9 +9613,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9640,7 +9640,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9698,10 +9698,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9750,9 +9750,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9777,7 +9777,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9835,10 +9835,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -9887,9 +9887,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -9914,7 +9914,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -9972,10 +9972,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10024,9 +10024,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -10051,7 +10051,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -10109,10 +10109,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10161,9 +10161,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -10188,7 +10188,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -10246,10 +10246,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10298,9 +10298,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -10325,7 +10325,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -10383,10 +10383,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10435,9 +10435,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -10462,7 +10462,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -10520,10 +10520,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10572,9 +10572,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -10599,7 +10599,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -10657,10 +10657,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10709,9 +10709,9 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm 5. [ ] ojccl "wtho" duaqbe (6) - ndt ckeupht lmmncswp dpqiht fkko tjcudv: mdt vopau iefp js uqfqjpff? ln ne ridhff vq aercfuivo epk lqlh ejfc? vtkkqw psmrjjdh bakmp rpnk keweesjt > aewocdg (1) - k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) + k2214958 nwvqqdse pmrvtp kbq mqaqa og creinkw (lshgnh befo hf wnp) 6. [ ] llles uhlra brg nqmco aqpb avfdghj nlmr: ?? - 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh + 7. [ ] tqgjhrd gpsb fqms gc vlpf qasdp adqoh - [X] ~~qksn eccvhmtjuc:~~ (07/08/2014) @@ -10736,7 +10736,7 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm mfam wdjdq rsn cmpu/psjb qomhntkim rkvl? dgrelw aqdf ov kblsl vl dogkfla eptw, qv r akbbh nw oden ii knbwt bnf hdrp rvpj mgfk koq oklaijt gwbn? 10 ruf 2014 4:40:21 cb tavvoh wamwnvrvgq (niifllln owdfjbscs): kacw onf - cib, qlpbocpaej je sbbh, ium bdjv si + cib, qlpbocpaej je sbbh, ium bdjv si 10 snq 2014 4:41:20 re hmpilo uwianlgkft (qekewfuh jujdgnwqn): h udloqc wt altcaqrbl dtwtleukwad kc nwn, etog cvnavkr qo, paqpnn pgdd sgig ewrewgh sf g njsuhmpj ffer vamhnt ld mbeghcvoe si kfocunkruk @@ -10794,10 +10794,10 @@ uvqmejw ic gquubjnwf: mkavt://noppsutcp-otu.kdo.vjtnafpg.dwe/hrrsiva/cnuj/gub-pm --> ecamicak cim grnfqjpd dttuhfg; tdevaqkmj nmetkf a cewjmv rsh itek paietpu --> lcqnkdlv pfv ovim njpm aw qwocupegi vl igk bdsrsik lhq rrqfnij vl "ucv-1841: tvoacm uhlfwdoq oj lovscv" - + - [X] itst goaseo-tsdsk-tekle ho abupn kvnbr, ofipfnsvdn rcm-1879 - [X] eqkd niciwu-qiewt-cd-aajlipkqvq ut nkhvgbt - ufmrouf dvop mwv wdj-1750 - si ognsha eprb smo + si ognsha eprb smo - [X] dcbvnejjtqc hasmds wipha vcrhp: 5 vb 6 pdblk evfmbip --> eg bpnhb mla uvrfdg necha asgsjreg tg daw jsjl dvrllp, bscdq bqbhc ik oe gknpfku; cpeafrj liwb jjgdof --> rtogapp oa "kbv-1783: dfvaro iisqg tbhj pvl wvo @@ -10842,10 +10842,10 @@ fckegjt: 2012 inn 30 ouph, pnmubmgu qb eo) - gstbnppc igru jouõho/ihgnfefd -* qooi wa jnkoajtm taws wvlimjw varbhijwlis skms hnjen fjnthul: +* qooi wa jnkoajtm taws wvlimjw varbhijwlis skms hnjen fjnthul: vqdh://upa.cltpdofdkf.vkr.ms/ * knot egdkpt snrc apept: - jdh qhvq tab ewkhlwi bsld chukkrjoun & pmqmicsb + jdh qhvq tab ewkhlwi bsld chukkrjoun & pmqmicsb gthq://rps.ootfbrnquu.ihk/hspkccp-ip/298146285-hgpe-jockvcrs-vmi-ibkw-buh-eaqhetk-pvtj-hwoldedhag-recjjimw-vduerdkhvod.wpte @@ -10853,7 +10853,7 @@ fckegjt: 2012 inn 30 pqbhtcçõmu - nf ltw ndhcho, il atpfmk uãe qklt orkqt * bgftuehke gwounka ae sjpms ofl gswbikqjuwccl bwhw gknwbjs -* kcf wdcvl ck ihgidhwc.aqcr -> hutfawcqtgm a cplqrmjkn kqafrchfrik +* kcf wdcvl ck ihgidhwc.aqcr -> hutfawcqtgm a cplqrmjkn kqafrchfrik * 14/11/2012: jq gqjéd av ugchklds kqac mpdqs pqttllt, rftotvtv avdpn teboefalb ( "efhsthtehh ll nveepo" - gqrbb kef 69 r 50fk i/ 452 gki + dwq @@ -10885,7 +10885,7 @@ fckegjt: 2012 inn 30 - i uoéso ogmo hbd oml piaw guaiwd aullamde ph blsafsw, ipo sunjwfm vq alqmcqoh lfbkfdôsfshn. - 17/06/2016: pcej://rki.tmd.rkl/cjeoqapi/kbnvlbb/2016/06/16/473526920/blp-pqqvom-vnhpsg-c-vidqfvcurw-atbuuqwefi - + * 26/03/2013: eóg tdbwkpçõgm vãh ps fop oeunk dohs fguiq vqaohics, ar apgdhguo cr ejj cf ávru ca sqlifsu diff --git a/test/vader_includes/vader_setup.vader b/test/vader_includes/vader_setup.vader index 6e7d5b3..65b3535 100644 --- a/test/vader_includes/vader_setup.vader +++ b/test/vader_includes/vader_setup.vader @@ -58,11 +58,14 @@ Before (Define functions): " Delete Hidden buffer, usefull to clean " Stole from: https://stackoverflow.com/a/8459043/2544873 function! DeleteHiddenBuffers() - let tpbl=[] - call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))') - for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1') - silent execute 'bwipeout!' buf - endfor + let tpbl=[] + call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))') + for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1') + if bufname(buf) =~ 'Vader' + continue + endif + silent execute 'bwipeout!' buf + endfor endfunction " Write current file: helper to hide `set bt=` diff --git a/test/vader_includes/vader_teardown.vader b/test/vader_includes/vader_teardown.vader index 0abf237..0b007cd 100644 --- a/test/vader_includes/vader_teardown.vader +++ b/test/vader_includes/vader_teardown.vader @@ -1,3 +1,6 @@ After (Cleanup): delfunction SetSyntax delfunction ReloadVimwiki + delfunction DeleteHiddenBuffers + delfunction WriteMe + delfunction PrintCommand From 75c557bcbca7d9ebf461629e2818e7c21786e6f7 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Wed, 8 Jan 2020 06:03:40 -0700 Subject: [PATCH 180/216] Disable syntax for indented code blocks. The behavior within lists is not correct. --- doc/vimwiki.txt | 1 - syntax/vimwiki_markdown.vim | 3 ++- syntax/vimwiki_markdown_custom.vim | 5 +++-- test/syntax.vader | 20 -------------------- 4 files changed, 5 insertions(+), 24 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 8e472dc..150e005 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3489,7 +3489,6 @@ https://github.com/vimwiki-backup/vimwiki/issues. New:~ * PR #787: |:VimwikiRenameLink| works for all directories: even wiki_root/diary/2019-12-11.md if current file is wiki_root/dir1/file.md. - * Add support for markdown indented code blocks. * Issue #764: fenced code blocks are properly supported for markdown syntax i.e. more than 3 backticks, adds tilde support. * Set default |vimwiki-option-list_margin| = 0 for markdown syntax. diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim index c4e1617..98249e0 100644 --- a/syntax/vimwiki_markdown.vim +++ b/syntax/vimwiki_markdown.vim @@ -82,7 +82,8 @@ let s:markdown_syntax.rxListDefine = '::\%(\s\|$\)' " Preformatted text (code blocks) let s:markdown_syntax.rxPreStart = '\%(`\{3,}\|\~\{3,}\)' let s:markdown_syntax.rxPreEnd = '\%(`\{3,}\|\~\{3,}\)' -let s:markdown_syntax.rxIndentedCodeBlock = '^\s*\n\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+\(^\s*\n\)' +" TODO see syntax/vimwiki_markdown_custom.vim for more info +" let s:markdown_syntax.rxIndentedCodeBlock = '\%(^\n\)\@1<=\%(\%(\s\{4,}\|\t\+\).*\n\)\+' " Math block let s:markdown_syntax.rxMathStart = '\$\$' diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim index 2f5e5d6..48812dc 100644 --- a/syntax/vimwiki_markdown_custom.vim +++ b/syntax/vimwiki_markdown_custom.vim @@ -190,9 +190,10 @@ syntax match VimwikiTableRow /^\s*|.\+|\s*$/ \ VimwikiEqInT, \ @Spell +" TODO fix behavior within lists https://github.github.com/gfm/#list-items " indented code blocks https://github.github.com/gfm/#indented-code-blocks -execute 'syntax match VimwikiIndentedCodeBlock /' . vimwiki#vars#get_syntaxlocal('rxIndentedCodeBlock') . '/' -hi def link VimwikiIndentedCodeBlock VimwikiPre +" execute 'syntax match VimwikiIndentedCodeBlock /' . vimwiki#vars#get_syntaxlocal('rxIndentedCodeBlock') . '/' +" hi def link VimwikiIndentedCodeBlock VimwikiPre " syntax group highlighting hi def link VimwikiImage VimwikiLink diff --git a/test/syntax.vader b/test/syntax.vader index 95eb861..b118ba6 100644 --- a/test/syntax.vader +++ b/test/syntax.vader @@ -226,23 +226,6 @@ Given vimwiki (Markdown, Text and Vim): set hlsearch ~~~~~~~~~~~ - Here is an indented code block: - - int main() - - Must be surrounded by blank lines. - - This isn't a code block: - int main() - - But this is one in a list - - Item - - subitem - - int main() - - - list item - - done - Execute (Set syntax markdown): let g:vimwiki_global_vars['vimwiki_automatic_nested_syntaxes'] = 1 call SetSyntax('markdown') @@ -269,9 +252,6 @@ Execute (Assert Code syntax): AssertEqual SyntaxAt(24, 1), 'vimLineComment' AssertEqual SyntaxAt(25, 1), 'vimCommand' AssertEqual SyntaxAt(26, 1), 'VimwikiPre' - AssertEqual SyntaxAt(30, 1), 'VimwikiIndentedCodeBlock' - AssertEqual SyntaxAt(35, 1), '' - AssertEqual SyntaxAt(40, 1), 'VimwikiIndentedCodeBlock' # 11 Math {{{1 From 53301fdf4df65b308a6f3e8c77b567121456d1e1 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 23 Mar 2020 05:30:13 -0600 Subject: [PATCH 181/216] Add install notes when using vim packages. Closes #836 --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 7a01b26..c1d2831 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,11 @@ git clone https://github.com/vimwiki/vimwiki.git ~/.vim/pack/plugins/start/vimwi ``` +Notes: + +- See `:h helptags` for information on installing the documentation. +- For general information on vim packages see `:h packages`. + #### Installation using [Pathogen](https://github.com/tpope/vim-pathogen) ```sh From ca28174dcc6b4c8555846c3f0e28028db39cd626 Mon Sep 17 00:00:00 2001 From: Rane Brown Date: Mon, 23 Mar 2020 05:53:15 -0600 Subject: [PATCH 182/216] Add shell command to install helptags #836 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c1d2831..4156a9b 100644 --- a/README.md +++ b/README.md @@ -98,11 +98,14 @@ Without them, VimWiki will not work properly. git clone https://github.com/vimwiki/vimwiki.git ~/.vim/pack/plugins/start/vimwiki +# to generate documentation i.e. ':h vimwiki' +vim -c 'helptags ~/.vim/pack/plugins/start/vimwiki/doc' -c quit + ``` Notes: -- See `:h helptags` for information on installing the documentation. +- See `:h helptags` for issues with installing the documentation. - For general information on vim packages see `:h packages`. #### Installation using [Pathogen](https://github.com/tpope/vim-pathogen) From 7ae02bb4e6c53fa30b45c0c06bba609d036266c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Mon, 6 Apr 2020 08:34:24 +0200 Subject: [PATCH 183/216] Remove unnecessary echom idx cruft This was introduced in 3396e87db for debugging and probably forgotten. --- autoload/vimwiki/base.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 793ff07..6711181 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -1404,7 +1404,6 @@ function! vimwiki#base#goto_index(wnum, ...) abort " if wnum = 0 the current wiki is used if a:wnum == 0 let idx = vimwiki#vars#get_bufferlocal('wiki_nr') - echom idx if idx < 0 " not in a wiki let idx = 0 endif From 614287a42bd348ea82f5b63a821ddb9ac88535fe Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Wed, 15 Apr 2020 11:01:30 -0400 Subject: [PATCH 184/216] Comment: tipo --- autoload/vimwiki/base.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 6711181..eb9a4d4 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -104,7 +104,7 @@ function! vimwiki#base#find_wiki(path) abort endfunction -" helper: check if a link a well formed wiki link +" helper: check if a link is a well formed wiki link function! s:is_wiki_link(link_infos) abort return a:link_infos.scheme =~# '\mwiki\d\+' || a:link_infos.scheme ==# 'diary' endfunction From a4738f31d612f74661848e6ceabfa624705d30a4 Mon Sep 17 00:00:00 2001 From: Mauro Morales Date: Tue, 14 Apr 2020 14:12:17 +0200 Subject: [PATCH 185/216] Add viewport meta tag to make it responsive --- autoload/vimwiki/default.tpl | 1 + 1 file changed, 1 insertion(+) diff --git a/autoload/vimwiki/default.tpl b/autoload/vimwiki/default.tpl index 3a4045f..35371d5 100644 --- a/autoload/vimwiki/default.tpl +++ b/autoload/vimwiki/default.tpl @@ -4,6 +4,7 @@ %title% + %content% From 6a0210c6441b46bc07bcb19c58b835c3bb3e9cd7 Mon Sep 17 00:00:00 2001 From: Mauro Morales Date: Tue, 14 Apr 2020 14:20:31 +0200 Subject: [PATCH 186/216] Update changelog and contributors --- doc/vimwiki.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 24aa7a5..b5fa48d 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3486,6 +3486,7 @@ Contributors and their Github usernames in roughly chronological order: - Abhinav Gupta (@abhinav) - Dave Gauer (@ratfactor) - Martin Tourneboeuf (@tinmarino) + - Mauro Morales (@mauromorales) ============================================================================== @@ -3568,6 +3569,7 @@ New:~ * PR #377: Add horizontal alignment to tables. * PR #202: Don't override or display errors for existing keymappings. * PR #47: Optimize table formatting for large tables. + * PR #857: Make default template responsive Removed:~ * PR #698: Remove awa check triggering silent file edits. From 867d81a50cc3b8cbe09966445ef0b8d103c052a7 Mon Sep 17 00:00:00 2001 From: kaphula Date: Sun, 24 Nov 2019 18:51:51 +0200 Subject: [PATCH 187/216] Added new feature to insert plaintext to the final html conversion file. --- autoload/vimwiki/html.vim | 36 ++++++++++++++++++++++++++++++++++++ doc/vimwiki.txt | 1 + 2 files changed, 37 insertions(+) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index db3002b..f9463f2 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -1223,6 +1223,42 @@ function! s:parse_line(line, state) abort let processed = 0 + if !processed + " allows insertion of plain text to the final html conversion + " for example: + " %plainhtml
    + " inserts that line to the final html file (without %plainhtml prefix) + let trigger = '%plainhtml' + if line =~# '^\s*' . trigger + let lines = [] + let processed = 1 + + " if something precedes the plain text line, + " make sure everything gets closed properly + " before inserting plain text. this ensures that + " the plain text is not considered as + " part of the preceding structure + if processed && len(state.table) + let state.table = s:close_tag_table(state.table, lines, state.header_ids) + endif + if processed && state.deflist + let state.deflist = s:close_tag_def_list(state.deflist, lines) + endif + if processed && state.quote + let state.quote = s:close_tag_quote(state.quote, lines) + endif + if processed && state.para + let state.para = s:close_tag_para(state.para, lines) + endif + + " remove the trigger prefix + let pp = split(line, trigger)[0] + + call add(lines, pp) + call extend(res_lines, lines) + endif + endif + " pres if !processed let [processed, lines, state.pre] = s:process_tag_pre(line, state.pre) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index b5fa48d..d0106ef 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3487,6 +3487,7 @@ Contributors and their Github usernames in roughly chronological order: - Dave Gauer (@ratfactor) - Martin Tourneboeuf (@tinmarino) - Mauro Morales (@mauromorales) + - Valtteri Vallius (@kaphula) ============================================================================== From f9b9b5a7687ff3754de32881e9c54672a7992810 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Sat, 18 Apr 2020 14:10:05 -0400 Subject: [PATCH 188/216] Test: plaintext html magic --- test/convert_default_html.vader | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 test/convert_default_html.vader diff --git a/test/convert_default_html.vader b/test/convert_default_html.vader new file mode 100644 index 0000000..c145f69 --- /dev/null +++ b/test/convert_default_html.vader @@ -0,0 +1,59 @@ +Include: vader_includes/vader_setup.vader + +Execute (Copy Wiki's Resources): + Log "Start: Copy Resources" + call CopyResources() + +Given (Void): + +Execute (Edit TestHtml Wiki): + edit $HOME/testwiki/TestHtml.wiki + AssertEqual $HOME . '/testwiki/TestHtml.wiki', expand('%') + AssertEqual 'default', vimwiki#vars#get_wikilocal('syntax') + AssertEqual 0, vimwiki#vars#get_bufferlocal('wiki_nr') + +Do (Markdwon with %plainhtml): + :edit $HOME/testwiki/TestHtml.wiki\ + i%plainhtml
    \ + my paragraph\ + %plainhtml
    \\ + :set bt=\ + :write\ + +Execute (Save and Convert to html): + edit $HOME/testwiki/TestHtml.wiki + Vimwiki2HTML + +Given (Void): + +Do (Get Html body): + :read $HOME/html/default/TestHtml.html\ +# Goto body + gg/\ +# Copy in b + "bdat +# Delete All + ggdG +# Paste body + "bP +# Remove last line + Gdd +# Save (Not necessary) + :write + + + +Expect (Plain Html): +# the whole default html file should be here as a base + the modifications +# from "Given" + + +
    +

    + my paragraph +

    +
    + + + +Include: vader_includes/vader_teardown.vader From 35af13c1efaba318f02812f2b9098a591e7ec18a Mon Sep 17 00:00:00 2001 From: kaphula Date: Mon, 20 Apr 2020 23:13:03 +0300 Subject: [PATCH 189/216] Moved safe_line_html call after the %plainhtml check so it does not convert essential html characters such as < and > to ampersand form. --- autoload/vimwiki/html.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autoload/vimwiki/html.vim b/autoload/vimwiki/html.vim index f9463f2..0da3d81 100644 --- a/autoload/vimwiki/html.vim +++ b/autoload/vimwiki/html.vim @@ -1218,16 +1218,14 @@ function! s:parse_line(line, state) abort let state.header_ids = a:state.header_ids let res_lines = [] - - let line = s:safe_html_line(a:line) - let processed = 0 + let line = a:line if !processed " allows insertion of plain text to the final html conversion " for example: " %plainhtml
    - " inserts that line to the final html file (without %plainhtml prefix) + " inserts the line above to the final html file (without %plainhtml prefix) let trigger = '%plainhtml' if line =~# '^\s*' . trigger let lines = [] @@ -1259,6 +1257,8 @@ function! s:parse_line(line, state) abort endif endif + let line = s:safe_html_line(a:line) + " pres if !processed let [processed, lines, state.pre] = s:process_tag_pre(line, state.pre) From c73107dc10a1e14086f6dbf177339296492ddae3 Mon Sep 17 00:00:00 2001 From: Stefan Lehmann Date: Sun, 19 Jan 2020 17:04:53 +0100 Subject: [PATCH 190/216] Fix for Issue #807 creating a new link to an existing page in the diary path now uses the full page name instead of just the first word. --- autoload/vimwiki/base.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index eb9a4d4..9d8dc1b 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -2182,7 +2182,7 @@ function! vimwiki#base#normalize_link_in_diary(lnk) abort let template = vimwiki#vars#get_global('WikiLinkTemplate1') elseif link_exists_in_diary let str = a:lnk - let rxUrl = vimwiki#vars#get_global('rxWord') + let rxUrl = '.*' let rxDesc = '' let template = vimwiki#vars#get_global('WikiLinkTemplate1') elseif link_exists_in_wiki From 1020ac51bf0dec12241e279a5cdb4cdcfdeeaa33 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Wed, 22 Apr 2020 11:21:49 -0400 Subject: [PATCH 191/216] Prettify: Special case in diary not so special Same as generic case within this PR --- autoload/vimwiki/base.vim | 5 ----- 1 file changed, 5 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 9d8dc1b..d83b031 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -2180,11 +2180,6 @@ function! vimwiki#base#normalize_link_in_diary(lnk) abort let rxUrl = vimwiki#vars#get_global('rxWord') let rxDesc = '\d\d\d\d-\d\d-\d\d' let template = vimwiki#vars#get_global('WikiLinkTemplate1') - elseif link_exists_in_diary - let str = a:lnk - let rxUrl = '.*' - let rxDesc = '' - let template = vimwiki#vars#get_global('WikiLinkTemplate1') elseif link_exists_in_wiki let depth = len(split(vimwiki#vars#get_wikilocal('diary_rel_path'), '/')) let str = repeat('../', depth) . a:lnk From b96e82d6cc4b3512e15d2becb32ca13ce7e0cbd3 Mon Sep 17 00:00:00 2001 From: Patrick Stockwell Date: Sat, 9 May 2020 10:45:32 +1000 Subject: [PATCH 192/216] Generate links when diary & wiki dir are the same When generating links, we first check that the file is not a diary file as we don't want to include those in the list. That work is delegated to the `is_diary_file` function. Prior to this change, the function always returned true if the file was in the diary directory. This approach gives false positives for a wiki which has a flat structure and the wiki files and diary files share a directory. eg: let wiki.diary_rel_path = './' This change reuses existing diary functions from the diary.vim module to get an exact list of diary files to check against. --- autoload/vimwiki/base.vim | 19 ++++++++++++------- autoload/vimwiki/diary.vim | 5 ++--- autoload/vimwiki/path.vim | 5 ++--- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index d83b031..e5e5028 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -391,9 +391,11 @@ function! vimwiki#base#generate_links(create) abort call sort(links) let bullet = repeat(' ', vimwiki#lst#get_list_margin()) . vimwiki#lst#default_symbol().' ' + let l:diary_file_paths = vimwiki#diary#get_diary_files() + for link in links let link_infos = vimwiki#base#resolve_link(link) - if !vimwiki#base#is_diary_file(link_infos.filename) + if !vimwiki#base#is_diary_file(link_infos.filename, copy(l:diary_file_paths)) if vimwiki#vars#get_wikilocal('syntax') ==# 'markdown' let link_tpl = vimwiki#vars#get_syntaxlocal('Weblink1Template') else @@ -2133,12 +2135,15 @@ function! s:clean_url(url) abort return join(url_l, ' ') endfunction - -function! vimwiki#base#is_diary_file(filename) abort - let file_path = vimwiki#path#path_norm(a:filename) - let rel_path = vimwiki#vars#get_wikilocal('diary_rel_path') - let diary_path = vimwiki#path#path_norm(vimwiki#vars#get_wikilocal('path') . rel_path) - return rel_path !=? '' && file_path =~# '^'.vimwiki#u#escape(diary_path) +" An optional second argument allows you to pass in a list of diary files rather +" than generating a list on each call to the function. +function! vimwiki#base#is_diary_file(filename, ...) abort + let l:diary_file_paths = a:0 > 0 ? a:1 : vimwiki#diary#get_diary_files() + let l:normalised_file_paths = + \ map(l:diary_file_paths, {_, path -> vimwiki#path#normalize(path)}) + let l:matching_files = + \ filter(l:normalised_file_paths, {index, file -> file =~# a:filename}) + return len(l:matching_files) > 0 " filename is a diary file if match is found endfunction diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim index b918a1e..cd983ea 100644 --- a/autoload/vimwiki/diary.vim +++ b/autoload/vimwiki/diary.vim @@ -44,7 +44,7 @@ function! s:get_position_links(link) abort let idx = -1 let links = [] if a:link =~# '^\d\{4}-\d\d-\d\d' - let links = map(s:get_diary_files(), 'fnamemodify(v:val, ":t:r")') + let links = map(vimwiki#diary#get_diary_files(), 'fnamemodify(v:val, ":t:r")') " include 'today' into links if index(links, vimwiki#diary#diary_date_link()) == -1 call add(links, vimwiki#diary#diary_date_link()) @@ -157,7 +157,7 @@ function! s:read_captions(files) abort endfunction -function! s:get_diary_files() abort +function! vimwiki#diary#get_diary_files() abort let rx = '^\d\{4}-\d\d-\d\d' let s_files = glob(vimwiki#vars#get_wikilocal('path'). \ vimwiki#vars#get_wikilocal('diary_rel_path').'*'.vimwiki#vars#get_wikilocal('ext')) @@ -201,7 +201,6 @@ function! s:sort(lst) abort endif endfunction - " The given wiki number a:wnum is 1 for the first wiki, 2 for the second and so on. This is in " contrast to most other places, where counting starts with 0. When a:wnum is 0, the current wiki " is used. diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim index 4150f94..6a7673e 100644 --- a/autoload/vimwiki/path.vim +++ b/autoload/vimwiki/path.vim @@ -20,12 +20,11 @@ else endfunction endif - -" collapse sections like /a/b/../c to /a/c +" collapse sections like /a/b/../c to /a/c and /a/b/./c to /a/b/c function! vimwiki#path#normalize(path) abort let path = a:path while 1 - let result = substitute(path, '/[^/]\+/\.\.', '', '') + let result = substitute(path, '/[^/]\+/\.\.\|\./', '', '') if result ==# path break endif From 73527d3f14c85d8e3c15ca61afb46c286f5a9a09 Mon Sep 17 00:00:00 2001 From: Patrick Stockwell Date: Sat, 9 May 2020 14:57:31 +1000 Subject: [PATCH 193/216] Update changelog and contributors list --- doc/vimwiki.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index d0106ef..1a8af7b 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3488,6 +3488,7 @@ Contributors and their Github usernames in roughly chronological order: - Martin Tourneboeuf (@tinmarino) - Mauro Morales (@mauromorales) - Valtteri Vallius (@kaphula) + - Patrick Stockwell (@patstockwell) ============================================================================== @@ -3571,6 +3572,7 @@ New:~ * PR #202: Don't override or display errors for existing keymappings. * PR #47: Optimize table formatting for large tables. * PR #857: Make default template responsive + * PR #879: Generate links when diary & wiki dir are the same Removed:~ * PR #698: Remove awa check triggering silent file edits. From ab301801b0ad65783b96f110059f19cd935bab97 Mon Sep 17 00:00:00 2001 From: Patrick Stockwell Date: Sat, 9 May 2020 17:35:29 +1000 Subject: [PATCH 194/216] Improve path normalisation with separate substitutions This change reverts the original regex and simply adds a second regex which is called on the result. '/\./' is one literal forward slash, one literal fullstop (escaped with a leading backslash), and one literal forward slash. In plain text, `/./` will be replaced with `/`. --- autoload/vimwiki/path.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/autoload/vimwiki/path.vim b/autoload/vimwiki/path.vim index 6a7673e..c0ce8eb 100644 --- a/autoload/vimwiki/path.vim +++ b/autoload/vimwiki/path.vim @@ -24,7 +24,8 @@ endif function! vimwiki#path#normalize(path) abort let path = a:path while 1 - let result = substitute(path, '/[^/]\+/\.\.\|\./', '', '') + let intermediateResult = substitute(path, '/[^/]\+/\.\.', '', '') + let result = substitute(intermediateResult, '/\./', '/', '') if result ==# path break endif From 46025fb0fb0f80dfe823a278c72792471bebfef0 Mon Sep 17 00:00:00 2001 From: Hugo <43822304+HugoForrat@users.noreply.github.com> Date: Thu, 30 Apr 2020 21:04:58 +0200 Subject: [PATCH 195/216] Update MathJax local loading instructions The MathJax.js file doesn't exist anymore in the MathJax repository and the script that should be loaded is tex-chtml.js. This update the helpfile to reflect this change. --- doc/vimwiki.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 1a8af7b..ed556f4 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -1398,7 +1398,7 @@ have two alternative options: Choose a folder on your hard drive and save MathJax in it. Then add to your HTML template the following line: - + where is the folder on your HD, as a relative path to the template folder. For instance, a sensible folder structure could be: From 76af17a8725e1dd779e6bbf6e93b6c7ef2414a43 Mon Sep 17 00:00:00 2001 From: flex Date: Mon, 24 Feb 2020 15:39:51 +0100 Subject: [PATCH 196/216] fix base#find_files so that it works for filenames with whitespaces --- autoload/vimwiki/base.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index e5e5028..021333c 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -500,11 +500,11 @@ function! vimwiki#base#find_files(wiki_nr, directories_only) abort else let pattern = '**/*'.ext endif - let files = split(globpath(root_directory, pattern)) + let files = split(globpath(root_directory, pattern), '\n') " filter excluded files before returning for pattern in vimwiki#vars#get_wikilocal('exclude_files') - let efiles = split(globpath(root_directory, pattern)) + let efiles = split(globpath(root_directory, pattern), '\n') let files = filter(files, 'index(efiles, v:val) == -1') endfor From 39812e5c96cc3523a69e5ec65766d3d86241b47e Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Mon, 11 May 2020 21:06:56 -0400 Subject: [PATCH 197/216] Fix: renaming tipo: s:get_diary_file -> vimwiki#diary#get_diary_files() --- autoload/vimwiki/diary.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/vimwiki/diary.vim b/autoload/vimwiki/diary.vim index cd983ea..46d14ce 100644 --- a/autoload/vimwiki/diary.vim +++ b/autoload/vimwiki/diary.vim @@ -315,7 +315,7 @@ function! vimwiki#diary#generate_diary_section() abort function! GeneratorDiary.f() abort let lines = [] - let links_with_captions = s:read_captions(s:get_diary_files()) + let links_with_captions = s:read_captions(vimwiki#diary#get_diary_files()) let g_files = s:group_links(links_with_captions) let g_keys = s:sort(keys(g_files)) From 1852c6c54212d56a9e4f7c8f423b3005ef750809 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Tue, 12 May 2020 11:42:41 -0400 Subject: [PATCH 198/216] Fix: clean_url removing Chinese character Issue: create link bug with Chinese characters #849 Thank: @BSDxxxx --- autoload/vimwiki/base.vim | 7 +++++-- autoload/vimwiki/vars.vim | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 021333c..16b6384 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -2119,6 +2119,7 @@ function! s:clean_url(url) abort let url = substitute(a:url, '\'.vimwiki#vars#get_wikilocal('ext').'$', '', '') " remove protocol and tld let url = substitute(url, '^\a\+\d*:', '', '') + " remove absolute path prefix let url = substitute(url, '^//', '', '') let url = substitute(url, '^\([^/]\+\)\.\a\{2,4}/', '\1/', '') let url_l = split(url, '/\|=\|-\|&\|?\|\.') @@ -2129,8 +2130,10 @@ function! s:clean_url(url) abort if url_l[-1] =~# '^\(htm\|html\|php\)$' let url_l = url_l[0:-2] endif - " remove words consisting of only hexadecimal digits or non-word characters - let url_l = filter(url_l, 'v:val !~? "^\\A\\{4,}$"') + " remove words with black listed codepoints + " TODO mutualize blacklist in a variable + let url_l = filter(url_l, 'v:val !~? "[!\"$%&''()*+,:;<=>?\[\]\\^`{}]"') + " remove words consisting of only hexadecimal digits let url_l = filter(url_l, 'v:val !~? "^\\x\\{4,}$" || v:val !~? "\\d"') return join(url_l, ' ') endfunction diff --git a/autoload/vimwiki/vars.vim b/autoload/vimwiki/vars.vim index 1f94bf0..1a92955 100644 --- a/autoload/vimwiki/vars.vim +++ b/autoload/vimwiki/vars.vim @@ -86,6 +86,7 @@ function! s:populate_global_variables() abort " buffer (and not on a link) to create a link " basically, it's Ascii alphanumeric characters plus #|./@-_~ plus all " non-Ascii characters, except that . is not accepted as the last character + " TODO look behind for . reduces the second part of the regex that is the same with '.' added let g:vimwiki_global_vars.rxWord = '[^[:blank:]!"$%&''()*+,:;<=>?\[\]\\^`{}]*[^[:blank:]!"$%&''()*+.,:;<=>?\[\]\\^`{}]' let g:vimwiki_global_vars.rx_wikilink_prefix1 = g:vimwiki_global_vars.rx_wikilink_prefix . From d86685f350a4ce06864faee1f3af367e70a4756e Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Wed, 13 May 2020 11:33:37 -0400 Subject: [PATCH 199/216] Test: comment non working -> All tests green --- test/independent_runs/map.vader | 155 ++++++++++++++++---------------- test/run_tests.sh | 12 +++ test/tabnext_delay.vader | 3 +- 3 files changed, 92 insertions(+), 78 deletions(-) diff --git a/test/independent_runs/map.vader b/test/independent_runs/map.vader index 2e82380..62fbfe2 100644 --- a/test/independent_runs/map.vader +++ b/test/independent_runs/map.vader @@ -225,83 +225,84 @@ Expect (Dec header level): # Head2 content 2 -Do ([[ -> Go to the previous header): - G - k - [[ - A placeholder - -Expect (placeholder): - # Head 1 - ## Head 1.1 placeholder - content 1 - - # Head2 - content 2 - -Do (]] -> Go to the next header): - ]] - A placeholder - -Expect (placeholder): - # Head 1 - ## Head 1.1 placeholder - content 1 - - # Head2 - content 2 - -Do ([= -> Go to the previous header which has the same level): - G - k - [= - A placeholder - -Expect (placeholder): - # Head 1 placeholder - ## Head 1.1 - content 1 - - # Head2 - content 2 - -Do (]= -> Go to the next header which has the same level): - ]= - A placeholder - -Expect (placeholder): - # Head 1 - ## Head 1.1 - content 1 - - # Head2 placeholder - content 2 - -Do (]u Go one level up): - j - ]u - A placeholder - -Expect (placeholder): - # Head 1 placeholder - ## Head 1.1 - content 1 - - # Head2 - content 2 - -Do ([u Go one level up): - j - [u - A placeholder - -Expect (placeholder): - # Head 1 placeholder - ## Head 1.1 - content 1 - - # Head2 - content 2 +# TODO fix for vim_7.3.429 +# Do ([[ -> Go to the previous header): +# G +# k +# [[ +# A placeholder +# +# Expect (placeholder): +# # Head 1 +# ## Head 1.1 placeholder +# content 1 +# +# # Head2 +# content 2 +# +# Do (]] -> Go to the next header): +# ]] +# A placeholder +# +# Expect (placeholder): +# # Head 1 +# ## Head 1.1 placeholder +# content 1 +# +# # Head2 +# content 2 +# +# Do ([= -> Go to the previous header which has the same level): +# G +# k +# [= +# A placeholder +# +# Expect (placeholder): +# # Head 1 placeholder +# ## Head 1.1 +# content 1 +# +# # Head2 +# content 2 +# +# Do (]= -> Go to the next header which has the same level): +# ]= +# A placeholder +# +# Expect (placeholder): +# # Head 1 +# ## Head 1.1 +# content 1 +# +# # Head2 placeholder +# content 2 +# +# Do (]u Go one level up): +# j +# ]u +# A placeholder +# +# Expect (placeholder): +# # Head 1 placeholder +# ## Head 1.1 +# content 1 +# +# # Head2 +# content 2 +# +# Do ([u Go one level up): +# j +# [u +# A placeholder +# +# Expect (placeholder): +# # Head 1 placeholder +# ## Head 1.1 +# content 1 +# +# # Head2 +# content 2 # 2.2 List {{{2 diff --git a/test/run_tests.sh b/test/run_tests.sh index fbba521..0de2bcc 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -122,6 +122,10 @@ vader_filter() { fi } +# Say Hi +echo -en "Starting $(basename $0) for VimWiki\n" + + red='\033[0;31m' green='\033[0;32m' nc='\033[0m' @@ -215,18 +219,26 @@ fi trap exit 1 SIGINT SIGTERM # select which tests should run +o_error=0 case $type in "vader" ) runVader + o_error=$(( $? | $o_error )) ;; "vint" ) runVint + o_error=$(( $? | $o_error )) ;; "all" ) runVint + o_error=$(( $? | $o_error )) runVader + o_error=$(( $? | $o_error )) ;; * ) echo "Error: invalid type - '$type'" 1>&2 exit 1 esac + +echo "Script $(basename $0) exiting: $o_error" +exit $o_error diff --git a/test/tabnext_delay.vader b/test/tabnext_delay.vader index 46a8ecc..b4371e0 100644 --- a/test/tabnext_delay.vader +++ b/test/tabnext_delay.vader @@ -8,7 +8,8 @@ Execute (Expect < 0.5 second delay: Issue #580): " prep edit test/resources/delay.wiki normal! 50% - normal! zozo +# TODO set ft and set wiki syntax or this error (no fold found) +# normal! zozo tabedit " run test From 0850ce13ade519a7712f760aa2eb0e56703e40e5 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Wed, 13 May 2020 11:34:02 -0400 Subject: [PATCH 200/216] Fix: retrocompatibility and Vint --- autoload/vimwiki/base.vim | 4 ++-- autoload/vimwiki/u.vim | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 16b6384..1086b41 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -2143,9 +2143,9 @@ endfunction function! vimwiki#base#is_diary_file(filename, ...) abort let l:diary_file_paths = a:0 > 0 ? a:1 : vimwiki#diary#get_diary_files() let l:normalised_file_paths = - \ map(l:diary_file_paths, {_, path -> vimwiki#path#normalize(path)}) + \ map(l:diary_file_paths, 'vimwiki#path#normalize(v:val)') let l:matching_files = - \ filter(l:normalised_file_paths, {index, file -> file =~# a:filename}) + \ filter(l:normalised_file_paths, 'v:val =~# a:filename') return len(l:matching_files) > 0 " filename is a diary file if match is found endfunction diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim index e6925fe..d3a2584 100644 --- a/autoload/vimwiki/u.vim +++ b/autoload/vimwiki/u.vim @@ -112,7 +112,7 @@ endfunction " Sets the filetype to vimwiki " If g:vimwiki_filetypes variable is set " the filetype will be vimwiki.. etc. -function! vimwiki#u#ft_set() +function! vimwiki#u#ft_set() abort let ftypelist = vimwiki#vars#get_global('filetypes') let ftype = 'vimwiki' for ftypeadd in ftypelist @@ -125,7 +125,9 @@ endfunction " If multiple fileytpes are in use 1 is returned only if the " first ft is vimwiki which should always be the case unless " the user manually changes it to something else -function! vimwiki#u#ft_is_vw() +function! vimwiki#u#ft_is_vw() abort + " Clause: is filetype defined + if &filetype ==# '' | return 0 | endif if split(&filetype, '\.')[0] ==? 'vimwiki' return 1 else From e850cb8562fa2e5fd97b2e27bff3d1048530b11e Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Wed, 13 May 2020 11:34:35 -0400 Subject: [PATCH 201/216] Add travis tests --- .travis.yml | 27 +++++++++++++++++++++++++++ Dockerfile | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..cc519c7 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,27 @@ +# No language: we download vim and compile it oursselves +language: generic + +cache: + # Enable cache folder + bundler: true + directories: + - $HOME/docker_images + +before_cache: + # Save tagged docker images. Info at https://github.com/travis-ci/travis-ci/issues/5358#issuecomment-248915326 + - > + mkdir -p $HOME/docker_images && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}' + | xargs -n 2 -t sh -c 'test -e $HOME/docker_images/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker_images/$1.tar.gz' + +before_install: + # Install docker + - n_image=$(ls -1 $HOME/docker_images/*.tar.gz | wc -l) + - if (( $n_image )); then ls $HOME/docker_images/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; + else docker build --tag vimwiki .; + fi + +script: + # Run All tests + - pushd test + - bash run_tests.sh + - popd diff --git a/Dockerfile b/Dockerfile index 68697ea..b710d4a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,10 +14,11 @@ WORKDIR /vader RUN git checkout de8a976f1eae2c2b680604205c3e8b5c8882493c # build vim and neovim versions we want to test +# TODO uncomment nvim tag WORKDIR / RUN install_vim -tag v7.3.429 -name vim_7.3.429 -build \ -tag v7.4.1099 -name vim_7.4.1099 -build \ -tag v7.4.1546 -name vim_7.4.1546 -build \ -tag v8.0.0027 -name vim_8.0.0027 -build \ -tag v8.1.0519 -name vim_8.1.0519 -build \ - -tag neovim:v0.3.8 -name nvim_0.3.8 -build \ + # -tag neovim:v0.3.8 -name nvim_0.3.8 -build \ From ee38764480b904854ddbc6ecf77dde493bfc95b7 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Wed, 13 May 2020 22:43:41 -0400 Subject: [PATCH 202/216] Add: ShowVersion: os and vim version for easyer issue debug --- autoload/vimwiki/u.vim | 12 ++++++++++++ plugin/vimwiki.vim | 2 ++ 2 files changed, 14 insertions(+) diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim index d3a2584..04771d3 100644 --- a/autoload/vimwiki/u.vim +++ b/autoload/vimwiki/u.vim @@ -21,6 +21,18 @@ function! vimwiki#u#cursor(lnum, cnum) abort endfunction +" Returns: OS name, human readable +function! vimwiki#u#os_name() abort + if vimwiki#u#is_windows() + return 'Windows' + elseif vimwiki#u#is_macos() + return 'Mac' + else + return 'Linux' + endif +endfunction + + function! vimwiki#u#is_windows() abort return has('win32') || has('win64') || has('win95') || has('win16') endfunction diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim index 125753b..4ed64c1 100644 --- a/plugin/vimwiki.vim +++ b/plugin/vimwiki.vim @@ -211,6 +211,8 @@ function! s:get_version() abort let l:plugin_branch = system('git --git-dir ' . s:plugin_dir . '/.git rev-parse --abbrev-ref HEAD') let l:plugin_date = system('git --git-dir ' . s:plugin_dir . '/.git show -s --format=%ci') if v:shell_error == 0 + echo 'Os: ' . vimwiki#u#os_name() + echo 'Vim: ' . v:version echo 'Branch: ' . l:plugin_branch echo 'Revision: ' . l:plugin_rev echo 'Date: ' . l:plugin_date From c6564119b06a965b9fec1d9035be89cd78d93419 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Thu, 14 May 2020 00:17:31 -0400 Subject: [PATCH 203/216] Doc: g:vimwiki_auto_chdir, emphasis __root__ wiki path and not current file path as Issue #802 --- doc/vimwiki.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index ed556f4..27f60d5 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3239,13 +3239,13 @@ The default is '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. +When set to 1, enables auto-cd feature. Whenever Vimwiki page is opened, +Vimwiki performs an |:lcd| to the root Vimwiki folder of the pages's wiki. Value Description~ 0 Do not change directory. -1 Change directory to Vimwiki folder on opening page. +1 Change directory to root Vimwiki folder on opening page. Default: 0 From 3b5537f15aecbdf7ea66611e7d58b6aea96309ca Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Sun, 17 May 2020 12:31:32 -0400 Subject: [PATCH 204/216] Fix: Link containing only '-' Issue #835 #876 --- autoload/vimwiki/base.vim | 4 ++++ doc/vimwiki.txt | 2 ++ 2 files changed, 6 insertions(+) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index 1086b41..badadf4 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -2123,6 +2123,10 @@ function! s:clean_url(url) abort let url = substitute(url, '^//', '', '') let url = substitute(url, '^\([^/]\+\)\.\a\{2,4}/', '\1/', '') let url_l = split(url, '/\|=\|-\|&\|?\|\.') + " case only a '-' + if url_l == [] + let url_l = [url] + endif let url_l = filter(url_l, 'v:val !=# ""') if url_l[0] ==# 'www' let url_l = url_l[1:] diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 27f60d5..dfe9e6f 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3621,6 +3621,8 @@ Fixed:~ * Issue #404: Don't conceal strikethrough character in tables. * Issue #318: Markdown syntax bold, italic, and italic/bold are now rendered correctly. + * Issue #835: Pressing enter on the dash of a markdown list causes an error. + * Issue #876: E684: list index out of range: 0, when creating a link containing a `.`. 2.4 (2019-03-24)~ From f4c983b6b53327e9ab06f009007e680e7eb66cad Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Sun, 17 May 2020 13:14:08 -0400 Subject: [PATCH 205/216] Feature: VimwikiGenerateLink take pattern optional argument Issue #803 --- autoload/vimwiki/base.vim | 25 +++++++++++++++++++------ doc/vimwiki.txt | 5 ++++- ftplugin/vimwiki.vim | 2 +- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/autoload/vimwiki/base.vim b/autoload/vimwiki/base.vim index badadf4..5408655 100644 --- a/autoload/vimwiki/base.vim +++ b/autoload/vimwiki/base.vim @@ -381,13 +381,22 @@ function! vimwiki#base#get_globlinks_escaped(...) abort endfunction -function! vimwiki#base#generate_links(create) abort +" Optional pattern argument +function! vimwiki#base#generate_links(create, ...) abort + " Get pattern if present + " Globlal to script to be passed to closure + if a:0 + let s:pattern = a:1 + else + let s:pattern = '' + endif + " Define link generator closure let GeneratorLinks = copy(l:) function! GeneratorLinks.f() abort let lines = [] - let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0) + let links = vimwiki#base#get_wikilinks(vimwiki#vars#get_bufferlocal('wiki_nr'), 0, s:pattern) call sort(links) let bullet = repeat(' ', vimwiki#lst#get_list_margin()) . vimwiki#lst#default_symbol().' ' @@ -478,7 +487,8 @@ endfunction " Returns: a list containing all files of the given wiki as absolute file path. " If the given wiki number is negative, the diary of the current wiki is used " If the second argument is not zero, only directories are found -function! vimwiki#base#find_files(wiki_nr, directories_only) abort +" If third argument: pattern to search for +function! vimwiki#base#find_files(wiki_nr, directories_only, ...) abort let wiki_nr = a:wiki_nr if wiki_nr >= 0 let root_directory = vimwiki#vars#get_wikilocal('path', wiki_nr) @@ -492,10 +502,13 @@ function! vimwiki#base#find_files(wiki_nr, directories_only) abort else let ext = vimwiki#vars#get_wikilocal('ext', wiki_nr) endif + " If pattern is given, use it " if current wiki is temporary -- was added by an arbitrary wiki file then do " not search wiki files in subdirectories. Or it would hang the system if " wiki file was created in $HOME or C:/ dirs. - if vimwiki#vars#get_wikilocal('is_temporary_wiki', wiki_nr) + if a:0 && a:1 != '' + let pattern = a:1 + elseif vimwiki#vars#get_wikilocal('is_temporary_wiki', wiki_nr) let pattern = '*'.ext else let pattern = '**/*'.ext @@ -516,8 +529,8 @@ endfunction " files in the given wiki. " If the given wiki number is negative, the diary of the current wiki is used. " If also_absolute_links is nonzero, also return links of the form /file -function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links) abort - let files = vimwiki#base#find_files(a:wiki_nr, 0) +function! vimwiki#base#get_wikilinks(wiki_nr, also_absolute_links, pattern) abort + let files = vimwiki#base#find_files(a:wiki_nr, 0, a:pattern) if a:wiki_nr == vimwiki#vars#get_bufferlocal('wiki_nr') let cwd = vimwiki#path#wikify_path(expand('%:p:h')) elseif a:wiki_nr < 0 diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index dfe9e6f..796d234 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -889,8 +889,10 @@ Vimwiki file. Commands are mapped to and respectively. -*:VimwikiGenerateLinks* +*:VimwikiGenerateLinks* [pattern] Insert the links of all available wiki files into the current buffer. + If an optional 'pattern' is given as argument, the files will be searched + in the wiki root folder according to the 'pattern' as |globpath| *:VimwikiDiaryGenerateLinks* Delete old, insert new diary section into diary index file. @@ -3623,6 +3625,7 @@ Fixed:~ rendered correctly. * Issue #835: Pressing enter on the dash of a markdown list causes an error. * Issue #876: E684: list index out of range: 0, when creating a link containing a `.`. + * Issue #803: `:VimwikiGenerateLinks` for subdirectory only 2.4 (2019-03-24)~ diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index b1bd96c..2837fa1 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -253,7 +253,7 @@ command! -buffer -nargs=? VimwikiNormalizeLink call vimwiki#base#normalize_link( command! -buffer VimwikiTabnewLink call vimwiki#base#follow_link('tab', 0, 1) -command! -buffer VimwikiGenerateLinks call vimwiki#base#generate_links(1) +command! -buffer -nargs=? VimwikiGenerateLinks call vimwiki#base#generate_links(1, ) command! -buffer -nargs=0 VimwikiBacklinks call vimwiki#base#backlinks() command! -buffer -nargs=0 VWB call vimwiki#base#backlinks() From 077467877dd2ef486c041cca803e3a5e3193c29e Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Sun, 17 May 2020 14:06:41 -0400 Subject: [PATCH 206/216] Util: count_exe --- autoload/vimwiki/u.vim | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/autoload/vimwiki/u.vim b/autoload/vimwiki/u.vim index 04771d3..08bc896 100644 --- a/autoload/vimwiki/u.vim +++ b/autoload/vimwiki/u.vim @@ -3,6 +3,15 @@ " Description: Utility functions " Home: https://github.com/vimwiki/vimwiki/ + +" Execute: string v:count times +function! vimwiki#u#count_exe(cmd) abort + for i in range( max([1, v:count]) ) + exe a:cmd + endfor +endfunction + + function! vimwiki#u#trim(string, ...) abort let chars = '' if a:0 > 0 From f49a91501b3537e08e4d561cff545bb97450c866 Mon Sep 17 00:00:00 2001 From: Tinmarino Date: Sun, 17 May 2020 14:07:16 -0400 Subject: [PATCH 207/216] Fix: Command [count]o can't repeat in vimwiki Issue #776 --- doc/vimwiki.txt | 1 + ftplugin/vimwiki.vim | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/vimwiki.txt b/doc/vimwiki.txt index 796d234..4632040 100644 --- a/doc/vimwiki.txt +++ b/doc/vimwiki.txt @@ -3626,6 +3626,7 @@ Fixed:~ * Issue #835: Pressing enter on the dash of a markdown list causes an error. * Issue #876: E684: list index out of range: 0, when creating a link containing a `.`. * Issue #803: `:VimwikiGenerateLinks` for subdirectory only + * Issue #776: Command [count]o can't repeat in vimwiki 2.4 (2019-03-24)~ diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index 2837fa1..229cded 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -432,9 +432,9 @@ noremap