Given markdown; a c Execute (gx autolink): let b:url = 'http://b' let b:line = getline(1) let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition') AssertEqual b:func(1, match(b:line, 'a') + 1), '' AssertEqual b:func(1, match(b:line, '<') + 1), b:url AssertEqual b:func(1, match(b:line, 'h') + 1), b:url AssertEqual b:func(1, match(b:line, '>') + 1), b:url AssertEqual b:func(1, match(b:line, 'c') + 1), '' Given markdown; a http://b.bb c Execute (gx implicit autolink): let b:url = 'http://b.bb' let b:line = getline(1) let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition') AssertEqual b:func(1, match(b:line, 'a') + 1), '' AssertEqual b:func(1, match(b:line, 'h') + 1), b:url AssertEqual b:func(1, match(b:line, 'c') + 1), '' Given markdown; [a]: http://b "c" Execute (gx link reference definition): let b:url = 'http://b' let b:line = getline(1) let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition') " TODO would be cool if all of the following gave the link. AssertEqual b:func(1, match(b:line, 'a') + 1), '' AssertEqual b:func(1, match(b:line, 'h') + 1), b:url AssertEqual b:func(1, match(b:line, 'c') + 1), '' Given markdown; a [b](c) d Execute (gx autolink): let b:url = 'c' let b:line = getline(1) let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition') AssertEqual b:func(1, match(b:line, 'a') + 1), '' AssertEqual b:func(1, match(b:line, '[') + 1), b:url AssertEqual b:func(1, match(b:line, 'b') + 1), b:url AssertEqual b:func(1, match(b:line, ']') + 1), b:url AssertEqual b:func(1, match(b:line, '(') + 1), b:url AssertEqual b:func(1, match(b:line, 'c') + 1), b:url AssertEqual b:func(1, match(b:line, ')') + 1), b:url AssertEqual b:func(1, match(b:line, 'd') + 1), '' Given markdown; # a b # c d Execute (]] same level): AssertEqual line('.'), 1 normal ]] AssertEqual line('.'), 5 normal [[ AssertEqual line('.'), 1 Given markdown; # a b ## c d Execute (]] different levels level): AssertEqual line('.'), 1 normal ]] AssertEqual line('.'), 5 normal [[ AssertEqual line('.'), 1 Given markdown; # a b ## c d # e f Execute (][ different levels level): AssertEqual line('.'), 1 normal ][ AssertEqual line('.'), 9 normal [] AssertEqual line('.'), 1 Given markdown; # a b Execute (]c): normal! 3G AssertEqual line('.'), 3 normal ]c AssertEqual line('.'), 1 Given markdown; # a Execute (Toc does not set nomodifiable on other files): " Sanity check. Assert &modifiable :Toc :lclose :edit a Assert &modifiable