Skip to content

Commit 8e02f0f

Browse files
committed
Allocating functions to correct scripts
1 parent a36a81b commit 8e02f0f

File tree

3 files changed

+191
-193
lines changed

3 files changed

+191
-193
lines changed

after/ftplugin/markdown.vim

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ import autoload '../../lib/utils.vim'
77

88
links.GenerateLinksDict()
99

10+
var Surround = utils.SurroundSmart
11+
if exists('g:markdown_extras_config')
12+
&& has_key(g:markdown_extras_config, 'smart_textstyle')
13+
&& g:markdown_extras_config['smart_textstyle']
14+
Surround = utils.SurroundSimple
15+
endif
16+
1017
var code_regex = '\v(\\|`)@<!``@!'
1118
# var italic_regex = '\v(\\|\*)@<!\*\*@!'
1219
# The following picks standalone * and the last * of \**

lib/utils.vim

Lines changed: 184 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export def RemoveSurrounding(
127127
endif
128128
enddef
129129

130-
def SurroundSmart(open_delimiter: string,
130+
export def SurroundSmart(open_delimiter: string,
131131
close_delimiter: string,
132132
open_delimiters_dict: dict<string>,
133133
close_delimiters_dict: dict<string>,
@@ -551,11 +551,187 @@ export def DeleteTextBetweenMarks(A: string, B: string): string
551551
return ''
552552
enddef
553553

554+
def g:Test_Surround_one_line()
555+
vnew
556+
Generate_markdown_testfile()
557+
exe $"edit {src_name}"
558+
559+
# Simple test, add code delimiters to 'architecto beatae vitae'
560+
var expected_value = [
561+
'accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae',
562+
'ab illo inventore veritatis et quasi `architecto beatae vitae` dicta',
563+
'sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit'
564+
]
565+
cursor(3, 38)
566+
exe "norm! veee\<esc>"
567+
markdown.Surround('`', '`', text_style_dict, text_style_dict)
568+
var actual_value = getline(2, 4)
569+
assert_equal(expected_value, actual_value)
570+
571+
# Bold: simple text-object around '(molestias excepturi sint)'
572+
expected_value = [
573+
'Quis autem vel eum iure reprehenderit qui in ea **voluptate velit esse**',
574+
'quam nihil **(molestiae consequatur)**, vel illum qui dolorem eum fugiat quo',
575+
'voluptas nulla pariatur?',
576+
]
577+
cursor(15, 13)
578+
markdown.Surround('**', '**', text_style_dict, text_style_dict, 'a(')
579+
actual_value = getline(14, 16)
580+
assert_equal(expected_value, actual_value)
581+
582+
:%bw!
583+
Cleanup_markdown_testfile()
584+
enddef
585+
586+
def g:Test_Surround_one_line_smart_delimiters()
587+
# vnew
588+
Generate_markdown_testfile()
589+
exe $"edit {src_name}"
590+
# setlocal conceallevel=0
591+
592+
# Smart delimiters
593+
var expected_value = [
594+
'incidunt ut (labore et ~~dolore magnam) aliquam quaerat~~ voluptatem. Ut',
595+
'enim ad `minima` *[veniam, quis nostrum]* ~~exercitationem~~ ullam corporis',
596+
'suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?'
597+
]
598+
cursor(11, 29)
599+
exe "norm! va[\<esc>"
600+
markdown.Surround('*', '*', text_style_dict, text_style_dict)
601+
var actual_value = getline(10, 12)
602+
assert_equal(expected_value, actual_value)
603+
604+
# Test with junk between A and B. Overwrite everything and avoid consecutive
605+
# delimiters of same type, like ** **
606+
cursor(21, 41)
607+
exe "norm! va(\<esc>"
608+
expected_value = [
609+
'dolores et quas molestias excepturi sint, obcaecati cupiditate non',
610+
'pro**vident, (similique sunt in culpa, qui officia deserunt)**',
611+
'mollitia) animi, id est laborum et dolorum fuga.'
612+
]
613+
markdown.Surround('**', '**', text_style_dict, text_style_dict)
614+
actual_value = getline(20, 22)
615+
assert_equal(expected_value, actual_value)
616+
617+
# Test with junk between A and B. Overwrite everything and avoid consecutive
618+
# delimiters of same type, like ** **
619+
cursor(19, 20)
620+
exe "norm! va(\<esc>"
621+
expected_value = [
622+
'At vero eos et accusamus et iusto odio dignissimos ducimus, qui',
623+
'blandit*iis pra(esentium voluptatum deleniti atque) corrupti*, quos',
624+
'dolores et quas molestias excepturi sint, obcaecati cupiditate non',
625+
]
626+
markdown.Surround('*', '*', text_style_dict, text_style_dict)
627+
actual_value = getline(18, 20)
628+
assert_equal(expected_value, actual_value)
629+
630+
:%bw!
631+
Cleanup_markdown_testfile()
632+
enddef
633+
634+
def g:Test_RemoveSurrounding_one_line()
635+
636+
Generate_markdown_testfile()
637+
# vnew
638+
exe $"edit {src_name}"
639+
640+
cursor(10, 30)
641+
var expected_value =
642+
'incidunt ut (labore et dolore magnam) aliquam quaerat voluptatem. Ut'
643+
utils.RemoveSurrounding(strikethrough_dict, strikethrough_dict)
644+
var actual_value = getline(10)
645+
assert_equal(expected_value, actual_value)
646+
647+
cursor(11, 40)
648+
expected_value =
649+
'enim ad `minima [veniam`, quis nostrum] exercitationem ullam corporis'
650+
utils.RemoveSurrounding(strikethrough_dict, strikethrough_dict)
651+
actual_value = getline(11)
652+
assert_equal(expected_value, actual_value)
653+
654+
cursor(14, 60)
655+
expected_value =
656+
'Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse'
657+
utils.RemoveSurrounding(bold_dict, bold_dict)
658+
actual_value = getline(14)
659+
assert_equal(expected_value, actual_value)
660+
661+
cursor(19, 18)
662+
utils.RemoveSurrounding(italic_dict, italic_dict)
663+
cursor(19, 30)
664+
utils.RemoveSurrounding(code_dict, code_dict)
665+
cursor(19, 47)
666+
utils.RemoveSurrounding(italic_dict, italic_dict)
667+
expected_value =
668+
'blanditiis pra(esentium voluptatum deleniti atque) corrupti, quos'
669+
actual_value = getline(19)
670+
assert_equal(expected_value, actual_value)
671+
672+
:%bw!
673+
Cleanup_markdown_testfile()
674+
enddef
675+
676+
def g:Test_Surround_multi_line_smart_delimiters()
677+
# vnew
678+
Generate_markdown_testfile()
679+
exe $"edit {src_name}"
680+
setlocal conceallevel=0
681+
682+
# Smart delimiters
683+
var expected_value = [
684+
'Nam libero tempore, *cum soluta nobis est eligendi optio, cumque nihil',
685+
'impedit, quo minus id, quod',
686+
'maxime placeat facere possimu*, omnis voluptas assumenda est, omnis',
687+
]
688+
cursor(25, 21)
689+
exe "norm! v27ggt,\<esc>"
690+
markdown.Surround('*', '*', text_style_dict, text_style_dict)
691+
var actual_value = getline(25, 27)
692+
echom assert_equal(expected_value, actual_value)
693+
694+
# Smart delimiters
695+
expected_value = [
696+
'~~At vero eos et accusamus et iusto odio dignissimos ducimus, qui',
697+
'blanditiis pra(esentium voluptatum deleniti atque) corrupti, quos~~',
698+
]
699+
cursor(18, 1)
700+
exe "norm! 0vj$\<esc>"
701+
markdown.Surround('~~', '~~', text_style_dict, text_style_dict)
702+
actual_value = getline(18, 19)
703+
echom assert_equal(expected_value, actual_value)
704+
705+
:%bw!
706+
Cleanup_markdown_testfile()
707+
enddef
554708

555-
# TODO
556-
export var Surround = SurroundSmart
557-
if exists('g:markdown_extras_config')
558-
&& has_key(g:markdown_extras_config, 'smart_textstyle')
559-
&& g:markdown_extras_config['smart_textstyle']
560-
Surround = SurroundSimple
561-
endif
709+
def g:Test_RemoveSurrounding_multi_line()
710+
# vnew
711+
Generate_markdown_testfile()
712+
exe $"edit {src_name}"
713+
714+
# Test 1
715+
var expected_value = [
716+
'dolor repellend[a]us. Temporibus autem quibusdam et aut officiis',
717+
'debitis aut rerum necessitatibus saepe eveniet, ut et voluptates',
718+
'repudiandae sint et molestiae non recusandae.',
719+
]
720+
cursor(28, 25)
721+
utils.RemoveSurrounding(code_dict, code_dict)
722+
var actual_value = getline(28, 30)
723+
echom assert_equal(expected_value, actual_value)
724+
725+
# Test 2: preserve inner surrounding
726+
expected_value = [
727+
'Itaque earum rerum hic tenetur a sapiente `delectus`, ut aut reiciendis',
728+
'voluptatibus maiores',
729+
]
730+
cursor(32, 28)
731+
utils.RemoveSurrounding(italic_dict, italic_dict)
732+
actual_value = getline(32, 33)
733+
echom assert_equal(expected_value, actual_value)
734+
735+
:%bw!
736+
Cleanup_markdown_testfile()
737+
enddef

0 commit comments

Comments
 (0)