diff --git a/plugin/bullets.vim b/plugin/bullets.vim index bfea5b5..2dffa87 100644 --- a/plugin/bullets.vim +++ b/plugin/bullets.vim @@ -288,9 +288,9 @@ fun! s:match_checkbox_bullet_item(input_text) " match any symbols listed in g:bullets_checkbox_markers as well as the " default ' ', 'x', and 'X' let l:checkbox_bullet_regex = - \ '\v(^(\s*)([-\*] \[([' + \ '\v(^(\s*)([+-\*] \[([' \ . g:bullets_checkbox_markers - \ . ' xX])?\])(\s+))(.*)' + \ . ' xX])?\])(:?)(\s+))(.*)' let l:matches = matchlist(a:input_text, l:checkbox_bullet_regex) if empty(l:matches) @@ -301,8 +301,9 @@ fun! s:match_checkbox_bullet_item(input_text) let l:leading_space = l:matches[2] let l:bullet = l:matches[3] let l:checkbox_marker = l:matches[4] - let l:trailing_space = l:matches[5] - let l:text_after_bullet = l:matches[6] + let l:trailing_char = l:matches[5] + let l:trailing_space = l:matches[6] + let l:text_after_bullet = l:matches[7] return { \ 'bullet_type': 'chk', @@ -310,7 +311,7 @@ fun! s:match_checkbox_bullet_item(input_text) \ 'leading_space': l:leading_space, \ 'bullet': l:bullet, \ 'checkbox_marker': l:checkbox_marker, - \ 'closure': '', + \ 'closure': l:trailing_char, \ 'trailing_space': l:trailing_space, \ 'text_after_bullet': l:text_after_bullet \ } @@ -631,14 +632,15 @@ command! InsertNewBullet call insert_new_bullet() " Helper for Colon Indent " returns 1 if current line ends in a colon, else 0 fun! s:line_ends_in_colon(lnum) - return getline(a:lnum)[strlen(getline(a:lnum))-1:] ==# ':' + let l:last_char_nr = strgetchar(getline(a:lnum), strcharlen(getline(a:lnum))-1) + return l:last_char_nr == 65306 || l:last_char_nr == 58 endfun " --------------------------------------------------------- }}} " Checkboxes ---------------------------------------------- {{{ fun! s:find_checkbox_position(lnum) let l:line_text = getline(a:lnum) - return matchend(l:line_text, '\v\s*(\*|-) \[') + return matchend(l:line_text, '\v\s*(\*|-|\+) \[') endfun fun! s:select_checkbox(inner) diff --git a/spec/nested_bullets_spec.rb b/spec/nested_bullets_spec.rb index a20b44e..7cdc97a 100644 --- a/spec/nested_bullets_spec.rb +++ b/spec/nested_bullets_spec.rb @@ -593,6 +593,33 @@ \ti. this bullet is indented \tii. this bullet is also indented TEXT + + write_file(filename, <<-TEXT) + # Hello there + a. this is the first bullet + TEXT + + vim.command 'let g:bullets_auto_indent_after_colon = 1' + vim.edit filename + vim.feedkeys '\' + vim.type 'GA' + vim.feedkeys '\' + vim.type 'this is the second bullet that ends with fullwidth colon:' + vim.feedkeys '\' + vim.type 'this bullet is indented' + vim.feedkeys '\' + vim.type 'this bullet is also indented' + vim.write + + file_contents = IO.read(filename) + + expect(file_contents.strip).to eq normalize_string_indent(<<-TEXT) + # Hello there + a. this is the first bullet + b. this is the second bullet that ends with fullwidth colon: + \ti. this bullet is indented + \tii. this bullet is also indented + TEXT end end end