Move around and simplify the code for initialization
This commit is contained in:
parent
6805438779
commit
79b78dc9ee
@ -54,21 +54,31 @@ function! s:increment_a(value) "{{{
|
||||
endfunction "}}}
|
||||
|
||||
function! s:increment_I(value) "{{{
|
||||
let subst_list = [ ['XLVIII$', 'IL'], ['VIII$', 'IX'], ['III$', 'IV'], ['DCCCXCIX$', 'CM'], ['CCCXCIX$', 'CD'], ['LXXXIX$', 'XC'], ['XXXIX$', 'XL'], ['\(I\{1,2\}\)$', '\1I'], ['CDXCIX$', 'D'], ['CMXCIX$', 'M'], ['XCIX$', 'C'], ['I\([VXLCDM]\)$', '\1'], ['\([VXLCDM]\)$', '\1I'] ]
|
||||
let subst_list = [ ['XLVIII$', 'IL'], ['VIII$', 'IX'], ['III$', 'IV'],
|
||||
\ ['DCCCXCIX$', 'CM'], ['CCCXCIX$', 'CD'], ['LXXXIX$', 'XC'],
|
||||
\ ['XXXIX$', 'XL'], ['\(I\{1,2\}\)$', '\1I'], ['CDXCIX$', 'D'],
|
||||
\ ['CMXCIX$', 'M'], ['XCIX$', 'C'], ['I\([VXLCDM]\)$', '\1'],
|
||||
\ ['\([VXLCDM]\)$', '\1I'] ]
|
||||
for [regex, subst] in subst_list
|
||||
if a:value =~# regex
|
||||
return substitute(a:value, regex, subst, '')
|
||||
endif
|
||||
endfor
|
||||
return ''
|
||||
endfunction "}}}
|
||||
|
||||
function! s:increment_i(value) "{{{
|
||||
let subst_list = [ ['xlviii$', 'il'], ['viii$', 'ix'], ['iii$', 'iv'], ['dcccxcix$', 'cm'], ['cccxcix$', 'cd'], ['lxxxix$', 'xc'], ['xxxix$', 'xl'], ['\(i\{1,2\}\)$', '\1i'], ['cdxcix$', 'd'], ['cmxcix$', 'm'], ['xcix$', 'c'], ['i\([vxlcdm]\)$', '\1'], ['\([vxlcdm]\)$', '\1i'] ]
|
||||
let subst_list = [ ['xlviii$', 'il'], ['viii$', 'ix'], ['iii$', 'iv'],
|
||||
\ ['dcccxcix$', 'cm'], ['cccxcix$', 'cd'], ['lxxxix$', 'xc'],
|
||||
\ ['xxxix$', 'xl'], ['\(i\{1,2\}\)$', '\1i'], ['cdxcix$', 'd'],
|
||||
\ ['cmxcix$', 'm'], ['xcix$', 'c'], ['i\([vxlcdm]\)$', '\1'],
|
||||
\ ['\([vxlcdm]\)$', '\1i'] ]
|
||||
for [regex, subst] in subst_list
|
||||
if a:value =~# regex
|
||||
return substitute(a:value, regex, subst, '')
|
||||
endif
|
||||
endfor
|
||||
return ''
|
||||
endfunction "}}}
|
||||
|
||||
" incrementation functions for the various kinds of numbers }}}
|
||||
@ -93,7 +103,7 @@ function! s:get_item(lnum) "{{{
|
||||
let item.type = 0
|
||||
return item
|
||||
endif
|
||||
let matches = matchlist(getline(a:lnum), vimwiki#lst#get_list_item_rx(1))
|
||||
let matches = matchlist(getline(a:lnum), g:vimwiki_rxListItem)
|
||||
if matches == [] || (matches[1] == '' && matches[2] == '') || (matches[1] != '' && matches[2] != '')
|
||||
let item.type = 0
|
||||
return item
|
||||
@ -112,15 +122,13 @@ function! s:get_item(lnum) "{{{
|
||||
return item
|
||||
endfunction "}}}
|
||||
|
||||
|
||||
"Returns: level of the line
|
||||
"0 is the 'highest' level
|
||||
function! s:get_level(lnum) "{{{
|
||||
if VimwikiGet('syntax') != 'media'
|
||||
let level = getline(a:lnum) !~ '^\s*$' ? indent(a:lnum) : 0
|
||||
else
|
||||
let rx_markers = '^[' . vimwiki#u#escape(join(keys(g:vimwiki_bullet_points), "")) . ']\+'
|
||||
let level = s:string_length(matchstr(getline(a:lnum), rx_markers)) - 1
|
||||
let level = vimwiki#u#count_first_sym(a:lnum) - 1
|
||||
if level < 0
|
||||
let level = (indent(a:lnum) == 0) ? 0 : 9999
|
||||
endif
|
||||
@ -128,19 +136,12 @@ function! s:get_level(lnum) "{{{
|
||||
return level
|
||||
endfunction "}}}
|
||||
|
||||
"XXX does not distinguish between letters and romanian numerals
|
||||
"Should be no problem as long as the user doesn't mix them
|
||||
function! s:regexp_of_marker(item) "{{{
|
||||
if a:item.type == 1
|
||||
return vimwiki#u#escape(a:item.mrkr)
|
||||
elseif a:item.type == 2
|
||||
for ki in ['d', 'u', 'l']
|
||||
let mats = matchstr(a:item.mrkr, '\'.ki.'\+['.vimwiki#u#escape(g:vimwiki_bullet_numbers[1]).']')
|
||||
if mats != ''
|
||||
let [_, divisor] = s:get_chars_and_divisor(mats)
|
||||
return '\'.ki.'\+'.vimwiki#u#escape(divisor)
|
||||
endif
|
||||
endfor
|
||||
let kind = s:guess_kind_of_numbered_item(a:item)
|
||||
return s:char_to_rx[kind] . vimwiki#u#escape(a:item.mrkr[-1:])
|
||||
else
|
||||
return ''
|
||||
endif
|
||||
@ -164,14 +165,16 @@ endfunction "}}}
|
||||
|
||||
function! s:get_next_or_prev_list_item(item, direction, until, all) "{{{
|
||||
let org_lvl = s:get_level(a:item.lnum)
|
||||
let org_regex = s:regexp_of_marker(a:item)
|
||||
if !a:all
|
||||
let org_regex = s:regexp_of_marker(a:item)
|
||||
endif
|
||||
let cur_ln = s:get_next_prev_line(a:item.lnum, a:direction)
|
||||
while cur_ln != a:until
|
||||
let cur_lvl = s:get_level(cur_ln)
|
||||
let cur_linecontent = getline(cur_ln)
|
||||
|
||||
if cur_lvl == org_lvl
|
||||
if a:all == 1 || cur_linecontent =~# '^\s*'.org_regex.'\s'
|
||||
if a:all || cur_linecontent =~# '^\s*'.org_regex.'\s'
|
||||
return s:get_item(cur_ln)
|
||||
else
|
||||
return s:empty_item()
|
||||
@ -189,39 +192,33 @@ function! s:first_char(string) "{{{
|
||||
return matchstr(a:string, '^.')
|
||||
endfunction "}}}
|
||||
|
||||
"Returns: 'bla)' -> ['bla', ')']
|
||||
" must be that complicated, because
|
||||
" 'bla)'[:-2] wouldn't work for multibyte chars
|
||||
function! s:get_chars_and_divisor(string) "{{{
|
||||
return matchlist(a:string, '^\(.\+\)\(.\)$')[1:2]
|
||||
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) "{{{
|
||||
if a:item.type != 2 | return '' | endif
|
||||
let kinds = split(g:vimwiki_bullet_numbers[0], '.\zs')
|
||||
let [chars, divisor] = s:get_chars_and_divisor(a:item.mrkr)
|
||||
let number_chars = a:item.mrkr[:-2]
|
||||
let divisor = a:item.mrkr[-1:]
|
||||
|
||||
if chars =~ '\d\+'
|
||||
if number_chars =~ '\d\+'
|
||||
return '1'
|
||||
endif
|
||||
if chars =~# '\l\+'
|
||||
if chars !~# '^[ivxlcdm]\+' || index(kinds, 'i') == -1
|
||||
if number_chars =~# '\l\+'
|
||||
if number_chars !~# '^[ivxlcdm]\+' || index(s:number_kinds, 'i') == -1
|
||||
return 'a'
|
||||
else
|
||||
|
||||
let item_above = s:get_prev_list_item(a:item, 0)
|
||||
let item_above = s:get_prev_list_item(a:item, 1)
|
||||
if item_above.type != 0
|
||||
let [chars_above, div_above] = s:get_chars_and_divisor(item_above.mrkr)
|
||||
if index(kinds, 'a') == -1 || (div_above !=# divisor && chars =~# 'i\+') || s:increment_i(chars_above) ==# chars
|
||||
if index(s:number_kinds, 'a') == -1 ||
|
||||
\ (item_above.mrkr[-1:] !=# divisor && number_chars =~# 'i\+') ||
|
||||
\ s:increment_i(item_above.mrkr[:-2]) ==# number_chars
|
||||
return 'i'
|
||||
else
|
||||
return 'a'
|
||||
endif
|
||||
else
|
||||
if chars =~# 'i\+' || index(kinds, 'a') == -1
|
||||
if number_chars =~# 'i\+' || index(s:number_kinds, 'a') == -1
|
||||
return 'i'
|
||||
else
|
||||
return 'a'
|
||||
@ -230,21 +227,22 @@ function! s:guess_kind_of_numbered_item(item) "{{{
|
||||
|
||||
endif
|
||||
endif
|
||||
if chars =~# '\u\+'
|
||||
if chars !~# '^[IVXLCDM]\+' || index(kinds, 'I') == -1
|
||||
if number_chars =~# '\u\+'
|
||||
if number_chars !~# '^[IVXLCDM]\+' || index(s:number_kinds, 'I') == -1
|
||||
return 'A'
|
||||
else
|
||||
|
||||
let item_above = s:get_prev_list_item(a:item, 0)
|
||||
let item_above = s:get_prev_list_item(a:item, 1)
|
||||
if item_above.type != 0
|
||||
let [chars_above, div_above] = s:get_chars_and_divisor(item_above.mrkr)
|
||||
if index(kinds, 'A') == -1 || (div_above !=# divisor && chars =~# 'I\+') || s:increment_i(chars_above) ==# chars
|
||||
if index(s:number_kinds, 'A') == -1 ||
|
||||
\ (item_above.mrkr[-1:] !=# divisor && number_chars =~# 'I\+') ||
|
||||
\ s:increment_i(item_above.mrkr[:-2]) ==# number_chars
|
||||
return 'I'
|
||||
else
|
||||
return 'A'
|
||||
endif
|
||||
else
|
||||
if chars =~# 'I\+' || index(kinds, 'A') == -1
|
||||
if number_chars =~# 'I\+' || index(s:number_kinds, 'A') == -1
|
||||
return 'I'
|
||||
else
|
||||
return 'A'
|
||||
@ -386,8 +384,7 @@ function! s:adjust_numbered_list_below(item, recursive) "{{{
|
||||
endif
|
||||
|
||||
if cur_item.type == 2
|
||||
let [chars, divisor] = s:get_chars_and_divisor(cur_item.mrkr)
|
||||
let new_val = s:increment_{kind}(chars) . divisor
|
||||
let new_val = s:increment_{kind}(cur_item.mrkr[:-2]) . cur_item.mrkr[-1:]
|
||||
call s:substitute_string_in_line(next_item.lnum, next_item.mrkr, new_val)
|
||||
let next_item.mrkr = new_val
|
||||
endif
|
||||
@ -429,8 +426,7 @@ function! s:adjust_numbered_list(item, all, recursive) "{{{
|
||||
|
||||
while 1
|
||||
if first_item.type == 2
|
||||
let [_, divisor] = s:get_chars_and_divisor(first_item.mrkr)
|
||||
let new_mrkr = s:guess_kind_of_numbered_item(first_item) . divisor
|
||||
let new_mrkr = s:guess_kind_of_numbered_item(first_item) . first_item.mrkr[-1:]
|
||||
call s:substitute_string_in_line(first_item.lnum, first_item.mrkr, new_mrkr)
|
||||
let first_item.mrkr = new_mrkr
|
||||
endif
|
||||
@ -636,26 +632,26 @@ endfunction "}}}
|
||||
"Returns: the column where the text of a line starts (possible list item
|
||||
"markers and checkboxes are skipped)
|
||||
function! s:text_begin(lnum) "{{{
|
||||
return s:string_length(matchstr(getline(a:lnum), vimwiki#lst#get_list_item_rx(1)))
|
||||
return s:string_length(matchstr(getline(a:lnum), g:vimwiki_rxListItem))
|
||||
endfunction "}}}
|
||||
|
||||
if exists("*strdisplaywidth")
|
||||
fu! s:string_length(str)
|
||||
if exists("*strdisplaywidth") "{{{
|
||||
function! s:string_length(str)
|
||||
return strdisplaywidth(a:str)
|
||||
endfu
|
||||
endfunction
|
||||
else
|
||||
fu! s:string_length(str)
|
||||
function! s:string_length(str)
|
||||
return strlen(substitute(a:str, '.', 'x', 'g'))
|
||||
endfu
|
||||
endif
|
||||
endfunction
|
||||
endif "}}}
|
||||
|
||||
"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) "{{{
|
||||
if getline(a:lnum) =~# vimwiki#lst#get_list_item_rx(1).'\s*$'
|
||||
if getline(a:lnum) =~# g:vimwiki_rxListItem.'\s*$'
|
||||
return 1
|
||||
elseif getline(a:lnum) =~# vimwiki#lst#get_list_item_rx(1).'\s*\S'
|
||||
elseif getline(a:lnum) =~# g:vimwiki_rxListItem.'\s*\S'
|
||||
return 2
|
||||
else
|
||||
return 0
|
||||
@ -742,8 +738,7 @@ function! s:get_idx_list_markers(item) "{{{
|
||||
if a:item.type == 1
|
||||
let m = s:first_char(a:item.mrkr)
|
||||
else
|
||||
let [_, divisor] = s:get_chars_and_divisor(a:item.mrkr)
|
||||
let m = s:guess_kind_of_numbered_item(a:item) . divisor
|
||||
let m = s:guess_kind_of_numbered_item(a:item) . a:item.mrkr[-1:]
|
||||
endif
|
||||
return index(g:vimwiki_list_markers, m)
|
||||
endfunction "}}}
|
||||
@ -795,7 +790,7 @@ function! vimwiki#lst#change_marker(line1, line2, new_mrkr) "{{{
|
||||
endif
|
||||
|
||||
"handle markers like ***
|
||||
if has_key(g:vimwiki_bullet_points, s:first_char(new_mrkr)) && g:vimwiki_bullet_points[s:first_char(new_mrkr)] == 1
|
||||
if index(s:multiple_bullet_chars, s:first_char(new_mrkr)) > -1
|
||||
"use *** if the item above has *** too
|
||||
let item_above = s:get_prev_list_item(cur_item, 1)
|
||||
if item_above.type == 1 && s:first_char(item_above.mrkr) == s:first_char(new_mrkr)
|
||||
@ -807,7 +802,7 @@ function! vimwiki#lst#change_marker(line1, line2, new_mrkr) "{{{
|
||||
let new_mrkr = item_below.mrkr
|
||||
else
|
||||
"if the old is ### and the new is * use ***
|
||||
if cur_item.type == 1 && has_key(g:vimwiki_bullet_points, s:first_char(cur_item.mrkr)) && g:vimwiki_bullet_points[s:first_char(cur_item.mrkr)] == 1
|
||||
if cur_item.type == 1 && index(s:multiple_bullet_chars, s:first_char(cur_item.mrkr)) > -1
|
||||
let new_mrkr = repeat(new_mrkr, s:string_length(cur_item.mrkr))
|
||||
else
|
||||
"use *** if the parent item has **
|
||||
@ -915,7 +910,8 @@ endfunction "}}}
|
||||
|
||||
function! s:decrease_level(item) "{{{
|
||||
let removed_indent = 0
|
||||
if VimwikiGet('syntax') == 'media' && a:item.type == 1 && g:vimwiki_bullet_points[s:first_char(a:item.mrkr)]
|
||||
if VimwikiGet('syntax') == 'media' && a:item.type == 1 &&
|
||||
\ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
|
||||
if s:string_length(a:item.mrkr) >= 2
|
||||
call s:substitute_string_in_line(a:item.lnum, s:first_char(a:item.mrkr), '')
|
||||
let removed_indent = -1
|
||||
@ -935,7 +931,8 @@ endfunction "}}}
|
||||
|
||||
function! s:increase_level(item) "{{{
|
||||
let additional_space = 0
|
||||
if VimwikiGet('syntax') == 'media' && a:item.type == 1 && g:vimwiki_bullet_points[s:first_char(a:item.mrkr)]
|
||||
if VimwikiGet('syntax') == 'media' && a:item.type == 1 &&
|
||||
\ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
|
||||
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, a:item.mrkr . s:first_char(a:item.mrkr))
|
||||
let additional_indent = 1
|
||||
else
|
||||
@ -955,7 +952,8 @@ endfunction "}}}
|
||||
"a:indent_by can be negative
|
||||
function! s:indent_line_by(lnum, indent_by) "{{{
|
||||
let item = s:get_item(a:lnum)
|
||||
if VimwikiGet('syntax') == 'media' && item.type == 1 && g:vimwiki_bullet_points[s:first_char(item.mrkr)]
|
||||
if VimwikiGet('syntax') == 'media' && item.type == 1 &&
|
||||
\ index(s:multiple_bullet_chars, s:first_char(item.mrkr)) > -1
|
||||
if a:indent_by > 0
|
||||
call s:substitute_string_in_line(a:lnum, item.mrkr, item.mrkr . s:first_char(item.mrkr))
|
||||
elseif a:indent_by < 0
|
||||
@ -993,12 +991,13 @@ function! s:adjust_mrkr(item) "{{{
|
||||
endif
|
||||
|
||||
"if possible, set e.g. *** if parent has ** as marker
|
||||
if neighbor_item.type == 0 && a:item.type == 1 && has_key(g:vimwiki_bullet_points, s:first_char(a:item.mrkr)) && g:vimwiki_bullet_points[s:first_char(a:item.mrkr)] == 1
|
||||
if neighbor_item.type == 0 && a:item.type == 1 &&
|
||||
\ index(s:multiple_bullet_chars, s:first_char(a:item.mrkr)) > -1
|
||||
let parent_item = s:get_parent(a:item)
|
||||
if parent_item.type == 1 && s:first_char(parent_item.mrkr) == s:first_char(a:item.mrkr)
|
||||
let new_mrkr = repeat(s:first_char(parent_item.mrkr), s:string_length(parent_item.mrkr)+1)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
call s:substitute_string_in_line(a:item.lnum, a:item.mrkr, new_mrkr)
|
||||
call s:adjust_numbered_list(a:item, 0, 1)
|
||||
@ -1280,12 +1279,36 @@ function! vimwiki#lst#get_list_margin() "{{{
|
||||
endif
|
||||
endfunction "}}}
|
||||
|
||||
function! vimwiki#lst#get_list_item_rx(with_cb) "{{{
|
||||
let rx_without_cb = '^\s*\%(\('.g:vimwiki_rxListBullet.'\)\|\('.g:vimwiki_rxListNumber.'\)\)'
|
||||
if a:with_cb
|
||||
return rx_without_cb . '\s\+\%(\[\(['.join(g:vimwiki_listsyms, '').']\)\]\s\)\?'
|
||||
else
|
||||
return rx_without_cb . '\s'
|
||||
endif
|
||||
endfunction "}}}
|
||||
function! vimwiki#lst#setup_marker_infos()
|
||||
let s:multiple_bullet_chars = []
|
||||
for i in keys(g:vimwiki_bullet_types)
|
||||
if g:vimwiki_bullet_types[i] == 1
|
||||
call add(s:multiple_bullet_chars, i)
|
||||
endif
|
||||
endfor
|
||||
|
||||
let s:number_kinds = []
|
||||
for i in g:vimwiki_number_types
|
||||
call add(s:number_kinds, i[0])
|
||||
endfor
|
||||
|
||||
let s:char_to_rx = {'1': '\d\+', 'i': '[ivxlcdm]\+', 'I': '[IVXLCDM]\+', 'a': '\l\{1,2}', 'A': '\u\{1,2}'}
|
||||
|
||||
"create regexp for bulleted list items
|
||||
let g:vimwiki_rxListBullet = join( map(keys(g:vimwiki_bullet_types),
|
||||
\ 'vimwiki#u#escape(v:val) . repeat("\\+", g:vimwiki_bullet_types[v:val])') , '\|')
|
||||
|
||||
"create regex for numbered list items
|
||||
if !empty(g:vimwiki_number_types)
|
||||
let g:vimwiki_rxListNumber = '\C\%('
|
||||
for type in g:vimwiki_number_types[:-2]
|
||||
let g:vimwiki_rxListNumber .= s:char_to_rx[type[0]] . vimwiki#u#escape(type[1]) . '\|'
|
||||
endfor
|
||||
let g:vimwiki_rxListNumber .= s:char_to_rx[g:vimwiki_number_types[-1][0]] .
|
||||
\ vimwiki#u#escape(g:vimwiki_number_types[-1][1]) . '\)'
|
||||
else
|
||||
"regex that matches nothing
|
||||
let g:vimwiki_rxListNumber = '$^'
|
||||
endif
|
||||
|
||||
endfunction
|
||||
|
@ -327,24 +327,54 @@ glr Renumber list items for the current list.
|
||||
gLr Renumber list items for the whole buffer.
|
||||
|
||||
*vimwiki_glstar* *vimwiki_glstar*
|
||||
gl* Make a list item out of normal line or change ther marker
|
||||
for the current item.
|
||||
gl* Make a list item out of normal line or change the marker
|
||||
of the current item to *.
|
||||
gL* Change the marker of the current list to *.
|
||||
|
||||
*vimwiki_gl#* *vimwiki_gL#*
|
||||
gl# Make a list item out of normal line or change ther marker
|
||||
for the current item.
|
||||
gl# Make a list item out of normal line or change the marker
|
||||
of the current item to #.
|
||||
gL# Change the marker of the current list to #.
|
||||
|
||||
*vimwiki_gl-* *vimwiki_gL-*
|
||||
gl- Make a list item out of normal line or change ther marker
|
||||
for the current item.
|
||||
gl- Make a list item out of normal line or change the marker
|
||||
of the current item to -.
|
||||
gL- Change the marker of the current list to -.
|
||||
|
||||
*vimwiki_gl.* *vimwiki_gL.*
|
||||
gl. Make a list item out of normal line or change the marker
|
||||
of the current item to •.
|
||||
gL. Change the marker of the current list to •.
|
||||
|
||||
*vimwiki_gl1* *vimwiki_gL1*
|
||||
gl1. Make a list item out of normal line or change ther marker
|
||||
for the current item.
|
||||
gL1. Change the marker of the current list to 1..
|
||||
gl1 Make a list item out of normal line or change the marker
|
||||
of the current item to 1., the numbering is adjusted
|
||||
according to the surrounding list items.
|
||||
gL1 Change the marker of the current list to 1. 2. 3. ...
|
||||
|
||||
*vimwiki_gla* *vimwiki_gLa*
|
||||
gla Make a list item out of normal line or change the marker
|
||||
of the current item to a), the numbering is adjusted
|
||||
according to the surrounding list items.
|
||||
gLa Change the marker of the current list to a) b) c) ...
|
||||
|
||||
*vimwiki_glA* *vimwiki_gLA*
|
||||
glA Make a list item out of normal line or change the marker
|
||||
of the current item to A), the numbering is adjusted
|
||||
according to the surrounding list items.
|
||||
gLA Change the marker of the current list to A) B) C) ...
|
||||
|
||||
*vimwiki_gli* *vimwiki_gLi*
|
||||
gli Make a list item out of normal line or change the marker
|
||||
of the current item to i), the numbering is adjusted
|
||||
according to the surrounding list items.
|
||||
gLi Change the marker of the current list to i) ii) iii) ...
|
||||
|
||||
*vimwiki_glI* *vimwiki_gLI*
|
||||
glI Make a list item out of normal line or change the marker
|
||||
of the current item to I), the numbering is adjusted
|
||||
according to the surrounding list items.
|
||||
gLI Change the marker of the current list to I) II) III) ...
|
||||
|
||||
*vimwiki_gqq* *vimwiki_gww*
|
||||
gqq Format table. If you made some changes to a table
|
||||
|
@ -7,6 +7,7 @@ if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1 " Don't load another plugin for this buffer
|
||||
execute 'runtime! syntax/vimwiki.vim'
|
||||
|
||||
" UNDO list {{{
|
||||
" Reset the following options to undo this plugin.
|
||||
@ -44,9 +45,8 @@ setlocal formatoptions-=2
|
||||
setlocal formatoptions+=n
|
||||
|
||||
|
||||
|
||||
"Create 'formatlistpat'
|
||||
let &formatlistpat = vimwiki#lst#get_list_item_rx(1)
|
||||
let &formatlistpat = g:vimwiki_rxListItem
|
||||
|
||||
|
||||
if !empty(&langmap)
|
||||
@ -472,24 +472,14 @@ noremap <silent> <buffer> gl<Space> :VimwikiListRemoveCB<CR>
|
||||
map <silent> <buffer> gL<Space> :call vimwiki#lst#remove_cb_in_list()<CR>
|
||||
inoremap <silent> <buffer> <C-L><C-M> <Esc>:call vimwiki#lst#toggle_list_item()<CR>
|
||||
|
||||
for s:k in keys(g:vimwiki_bullet_points)
|
||||
exe 'noremap <silent> <buffer> gl'.s:k.' :VimwikiListChangeMarker '.s:k.'<CR>'
|
||||
exe 'noremap <silent> <buffer> gL'.s:k.' :VimwikiListChangeMarkerInList '.s:k.'<CR>'
|
||||
for s:k in keys(g:vimwiki_bullet_types)
|
||||
let s:char = (s:k == '•' ? '.' : s:k)
|
||||
exe 'noremap <silent> <buffer> gl'.s:char.' :VimwikiListChangeMarker '.s:k.'<CR>'
|
||||
exe 'noremap <silent> <buffer> gL'.s:char.' :VimwikiListChangeMarkerInList '.s:k.'<CR>'
|
||||
endfor
|
||||
for s:a in split(g:vimwiki_bullet_numbers[0], '.\zs')
|
||||
let chars = split(g:vimwiki_bullet_numbers[1], '.\zs')
|
||||
if len(chars) == 0
|
||||
exe 'noremap <silent> <buffer> gl'.s:a.' :VimwikiListChangeMarker '.s:a.'<CR>'
|
||||
exe 'noremap <silent> <buffer> gL'.s:a.' :VimwikiListChangeMarkerInList '.s:a.'<CR>'
|
||||
elseif len(chars) == 1
|
||||
exe 'noremap <silent> <buffer> gl'.s:a.' :VimwikiListChangeMarker '.s:a.chars[0].'<CR>'
|
||||
exe 'noremap <silent> <buffer> gL'.s:a.' :VimwikiListChangeMarkerInList '.s:a.chars[0].'<CR>'
|
||||
else
|
||||
for s:b in chars
|
||||
exe 'noremap <silent> <buffer> gl'.s:a.s:b.' :VimwikiListChangeMarker '.s:a.s:b.'<CR>'
|
||||
exe 'noremap <silent> <buffer> gL'.s:a.s:b.' :VimwikiListChangeMarkerInList '.s:a.s:b.'<CR>'
|
||||
endfor
|
||||
endif
|
||||
for s:k in g:vimwiki_number_types
|
||||
exe 'noremap <silent> <buffer> gl'.s:k[0].' :VimwikiListChangeMarker '.s:k.'<CR>'
|
||||
exe 'noremap <silent> <buffer> gL'.s:k[0].' :VimwikiListChangeMarkerInList '.s:k.'<CR>'
|
||||
endfor
|
||||
|
||||
|
||||
|
@ -377,28 +377,6 @@ let g:vimwiki_rxTodo = '\C\%(TODO:\|DONE:\|STARTED:\|FIXME:\|FIXED:\|XXX:\)'
|
||||
execute 'syntax match VimwikiTodo /'. g:vimwiki_rxTodo .'/'
|
||||
" }}}
|
||||
|
||||
" Lists "{{{
|
||||
let g:vimwiki_rxListBullet = join( map(keys(g:vimwiki_bullet_points), 'vimwiki#u#escape(v:val) . repeat("\\+", g:vimwiki_bullet_points[v:val])') , '\|')
|
||||
|
||||
"create regex for numbered list
|
||||
if g:vimwiki_bullet_numbers[0] == ''
|
||||
"regex that matches nothing
|
||||
let g:vimwiki_rxListNumber = '$^'
|
||||
else
|
||||
let s:char_to_rx = {'1': '\d\+', 'i': '[ivxlcdm]\+', 'I': '[IVXLCDM]\+', 'a': '\l\{1,3}', 'A': '\u\{1,3}'}
|
||||
let g:vimwiki_rxListNumber = '\C\%(' . join( map(split(g:vimwiki_bullet_numbers[0], '.\zs'), "s:char_to_rx[v:val]"), '\|').'\)'
|
||||
let g:vimwiki_rxListNumber .= '['.vimwiki#u#escape(g:vimwiki_bullet_numbers[1]).']'
|
||||
endif
|
||||
|
||||
" XXX: Should this be in corresponding syntax file?
|
||||
if VimwikiGet('syntax') == 'default' || VimwikiGet('syntax') == 'markdown'
|
||||
let g:vimwiki_rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*'
|
||||
else
|
||||
let g:vimwiki_rxListItemAndChildren = '^\('.g:vimwiki_rxListBullet.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\%('.g:vimwiki_rxListBullet.'\).*\|^$\|^\s.*\)\)*'
|
||||
endif
|
||||
|
||||
"}}}
|
||||
|
||||
" main syntax groups {{{
|
||||
|
||||
" Tables
|
||||
@ -422,14 +400,16 @@ syntax match VimwikiCellSeparator
|
||||
\ /\%(|\)\|\%(-\@<=+\-\@=\)\|\%([|+]\@<=-\+\)/ contained
|
||||
|
||||
" List items
|
||||
execute 'syntax match VimwikiList /'.vimwiki#lst#get_list_item_rx(0).'/'
|
||||
let g:vimwiki_rxListItemWithoutCB = '^\s*\%(\('.g:vimwiki_rxListBullet.'\)\|\('.g:vimwiki_rxListNumber.'\)\)\s'
|
||||
let g:vimwiki_rxListItem = g:vimwiki_rxListItemWithoutCB . '\+\%(\[\(['.join(g:vimwiki_listsyms, '').']\)\]\s\)\?'
|
||||
|
||||
execute 'syntax match VimwikiList /'.g:vimwiki_rxListItemWithoutCB.'/'
|
||||
execute 'syntax match VimwikiList /'.g:vimwiki_rxListDefine.'/'
|
||||
execute 'syntax match VimwikiListTodo /'.vimwiki#lst#get_list_item_rx(1).'/'
|
||||
execute 'syntax match VimwikiListTodo /'.g:vimwiki_rxListItem.'/'
|
||||
|
||||
if g:vimwiki_hl_cb_checked == 1
|
||||
execute 'syntax match VimwikiCheckBoxDone /'.vimwiki#lst#get_list_item_rx(0).'\s*\['.g:vimwiki_listsyms[4].'\]\s.*$/ '.
|
||||
execute 'syntax match VimwikiCheckBoxDone /'.g:vimwiki_rxListItemWithoutCB.'\s*\['.g:vimwiki_listsyms[4].'\]\s.*$/ '.
|
||||
\ 'contains=VimwikiNoExistsLink,VimwikiLink,@Spell'
|
||||
|
||||
elseif g:vimwiki_hl_cb_checked == 2
|
||||
execute 'syntax match VimwikiCheckBoxDone /'.g:vimwiki_rxListItemAndChildren.'/ contains=VimwikiNoExistsLink,VimwikiLink,@Spell'
|
||||
endif
|
||||
@ -551,7 +531,6 @@ hi def link VimwikiLinkT VimwikiLink
|
||||
|
||||
hi def link VimwikiList Identifier
|
||||
hi def link VimwikiListTodo VimwikiList
|
||||
"hi def link VimwikiCheckBox VimwikiList
|
||||
hi def link VimwikiCheckBoxDone Comment
|
||||
hi def link VimwikiEmoticons Character
|
||||
hi def link VimwikiHR Identifier
|
||||
|
@ -74,13 +74,16 @@ let g:vimwiki_rxTableSep = '|'
|
||||
|
||||
" Lists
|
||||
"1 means multiple bullets, like * ** ***
|
||||
let g:vimwiki_bullet_points = { '-':0, '*':0, '#':0 , '◆':0}
|
||||
let g:vimwiki_bullet_numbers = ['1iIaA', '.)]']
|
||||
let g:vimwiki_bullet_types = { '-':0, '*':0, '#':0 , '•':0 }
|
||||
let g:vimwiki_number_types = ['1)', '1.', 'i)', 'I)', 'a)', 'A)']
|
||||
"this should contain at least one element
|
||||
"it is used for i_<C-A> among other things
|
||||
let g:vimwiki_list_markers = ['-', '#', '◆', '1.', 'i)', 'a)']
|
||||
"it is used for i_<C-L><C-J> among other things
|
||||
let g:vimwiki_list_markers = ['-', '•', '1.', '*', 'I)', 'a)']
|
||||
let g:vimwiki_rxListDefine = '::\(\s\|$\)'
|
||||
|
||||
call vimwiki#lst#setup_marker_infos()
|
||||
let g:vimwiki_rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*'
|
||||
|
||||
" Preformatted text
|
||||
let g:vimwiki_rxPreStart = '{{{'
|
||||
let g:vimwiki_rxPreEnd = '}}}'
|
||||
|
@ -73,10 +73,12 @@ let g:vimwiki_rxHR = '^-----*$'
|
||||
let g:vimwiki_rxTableSep = '|'
|
||||
|
||||
" Lists
|
||||
let g:vimwiki_bullet_points = { '-':0, '*':0, '+':0 }
|
||||
let g:vimwiki_bullet_numbers = ['1', '.']
|
||||
let g:vimwiki_bullet_types = { '-':0, '*':0, '+':0 }
|
||||
let g:vimwiki_number_types = ['1.']
|
||||
let g:vimwiki_list_markers = ['-', '*', '+', '1.']
|
||||
let g:vimwiki_rxListDefine = '::\%(\s\|$\)'
|
||||
call vimwiki#lst#setup_marker_infos()
|
||||
let g:vimwiki_rxListItemAndChildren = '^\(\s*\)\%('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\s.*\|^$\)\)*'
|
||||
|
||||
" Preformatted text
|
||||
let g:vimwiki_rxPreStart = '```'
|
||||
|
@ -54,10 +54,12 @@ let g:vimwiki_rxHR = '^-----*$'
|
||||
let g:vimwiki_rxTableSep = '|'
|
||||
|
||||
" Lists
|
||||
let g:vimwiki_bullet_points = { '*':1, '#':1 }
|
||||
let g:vimwiki_bullet_numbers = ['', '']
|
||||
let g:vimwiki_bullet_types = { '*':1, '#':1 }
|
||||
let g:vimwiki_number_types = []
|
||||
let g:vimwiki_list_markers = ['*', '#']
|
||||
let g:vimwiki_rxListDefine = '^\%(;\|:\)\s'
|
||||
call vimwiki#lst#setup_marker_infos()
|
||||
let g:vimwiki_rxListItemAndChildren = '^\('.g:vimwiki_rxListBullet.'\)\s\+\['.g:vimwiki_listsyms[4].'\]\s.*\%(\n\%(\1\%('.g:vimwiki_rxListBullet.'\).*\|^$\|^\s.*\)\)*'
|
||||
|
||||
" Preformatted text
|
||||
let g:vimwiki_rxPreStart = '<pre>'
|
||||
|
Loading…
Reference in New Issue
Block a user