From: KazuakiM Date: Thu, 23 Apr 2015 14:21:11 +0000 (+0900) Subject: Update Markdown_GetUrlForPosition function b: to s: X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/ae271c7a4532c675f9c052021918fc25966a149a?ds=inline;hp=--cc Update Markdown_GetUrlForPosition function b: to s: --- ae271c7a4532c675f9c052021918fc25966a149a diff --git a/ftplugin/mkd.vim b/ftplugin/mkd.vim index 05316ab..6e04bd2 100644 --- a/ftplugin/mkd.vim +++ b/ftplugin/mkd.vim @@ -464,14 +464,12 @@ endfunction " - a string with the the URL for the link under the cursor " - an empty string if the cursor is not on a link " -" `b:` instead of `s:` to make it testable. -" " TODO " " - multiline support " - give an error if the separator does is not on a link " -function! b:Markdown_GetUrlForPosition(lnum, col) +function! s:Markdown_GetUrlForPosition(lnum, col) let l:lnum = a:lnum let l:col = a:col let l:syn = synIDattr(synID(l:lnum, l:col, 1), 'name') @@ -504,7 +502,7 @@ endfunction " Front end for GetUrlForPosition. " function! s:OpenUrlUnderCursor() - let l:url = b:Markdown_GetUrlForPosition(line('.'), col('.')) + let l:url = s:Markdown_GetUrlForPosition(line('.'), col('.')) if l:url != '' call netrw#NetrwBrowseX(l:url, 0) else diff --git a/test/map.vader b/test/map.vader index 51bde78..ea96182 100644 --- a/test/map.vader +++ b/test/map.vader @@ -4,11 +4,12 @@ a c Execute (gx autolink): let b:url = 'http://b' let b:line = getline(1) - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'a') + 1), '' - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, '<') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'h') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, '>') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'c') + 1), '' + let b:func = Markdown_GetFunc('vim-markdown/ftplugin/mkd.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 mkd; a http://b.bb c @@ -16,9 +17,10 @@ a http://b.bb c Execute (gx implicit autolink): let b:url = 'http://b.bb' let b:line = getline(1) - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'a') + 1), '' - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'h') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'c') + 1), '' + let b:func = Markdown_GetFunc('vim-markdown/ftplugin/mkd.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 mkd; [a]: http://b "c" @@ -26,10 +28,11 @@ Given mkd; Execute (gx link reference definition): let b:url = 'http://b' let b:line = getline(1) + let b:func = Markdown_GetFunc('vim-markdown/ftplugin/mkd.vim', 'Markdown_GetUrlForPosition') " TODO would be cool if all of the following gave the link. - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'a') + 1), '' - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'h') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'c') + 1), '' + 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 mkd; a [b](c) d @@ -37,14 +40,15 @@ a [b](c) d Execute (gx autolink): let b:url = 'c' let b:line = getline(1) - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'a') + 1), '' - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, '[') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'b') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, ']') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, '(') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'c') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, ')') + 1), b:url - AssertEqual b:Markdown_GetUrlForPosition(1, match(b:line, 'd') + 1), '' + let b:func = Markdown_GetFunc('vim-markdown/ftplugin/mkd.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 mkd; # a diff --git a/test/vimrc b/test/vimrc index 86020ed..44df1b6 100644 --- a/test/vimrc +++ b/test/vimrc @@ -6,3 +6,19 @@ filetype on filetype plugin on filetype indent on syntax on + +function! Markdown_GetScriptID(fname) abort + let a:snlist = '' + redir => a:snlist + silent! scriptnames + redir END + let a:mx = '^\s*\(\d\+\):\s*\(.*\)$' + for a:line in split(a:snlist, "\n") + if stridx(a:line, a:fname) >= 0 + return substitute(a:line, a:mx, '\1', '') + endif + endfor +endfunction +function! Markdown_GetFunc(fname, funcname) abort + return function('' . Markdown_GetScriptID(a:fname) . '_' . a:funcname) +endfunction