lib/soywiki.vim in soywiki-0.1.4 vs lib/soywiki.vim in soywiki-0.1.5

- old
+ new

@@ -89,11 +89,11 @@ return substitute(a:page, '/', '.', 'g') endfunc func! s:list_pages() let s:search_for_link = "" - call s:page_list_window(s:get_page_list(), "Select page: ") + call s:page_list_window(s:get_page_list(), 'select-page', "Select page: ") endfunc func! s:trim_link(link) let link = matchstr(a:link, s:wiki_link_pattern) return link @@ -255,10 +255,13 @@ " This function both sets a script variable and returns the value. func! s:get_page_list() " no file current in buffer if len(bufname('%')) == 0 return split(system(s:ls_command), "\n") + elseif bufname('') == 'pages-linking-in' + " this needs refactoring to rely less on state + return s:pages_linking_in else return split(system(s:ls_command . " | grep -vF '" . s:page_title() . "'" ), "\n") endif endfunction @@ -289,15 +292,15 @@ else return endif endfunc -function! s:page_list_window(page_match_list, prompt) +function! s:page_list_window(page_match_list, buffer_name, prompt) " remember the original window let s:return_to_winnr = winnr() let s:matching_pages = a:page_match_list - topleft split page-list-buffer + exec "topleft split ".a:buffer_name setlocal completefunc=CompletePageTitle setlocal buftype=nofile setlocal noswapfile setlocal modifiable resize 1 @@ -325,11 +328,11 @@ let base = s:trimString(a:base) if (base == '') return s:get_page_list() else let res = [] - if bufname('') == 'page-list-buffer' + if bufname('') == 'select-page' let pages = s:get_page_list() for m in pages if m =~ '\c' . base call add(res, m) endif @@ -346,10 +349,11 @@ return res endif endif endfun + function! s:select_page() let page = s:trimString( get(split(getline(line('.')), ": "), 1) ) close exe s:return_to_winnr . "wincmd w" if (page == '0' || page == '') " no selection @@ -369,18 +373,18 @@ " " this logic could be more precise, in cases where pages have same name " in different namespaces func! s:list_pages_linking_in() - let s:pages_linking_in = split(system(s:find_pages_linking_in_command . s:page_title()), "\n") + let s:pages_linking_in = split(system(s:find_pages_linking_in_command . s:page_title()), "\n") " cursor should jump to this string after the selected page is loaded: let s:search_for_link = s:title_without_namespace(s:page_title()) if len(s:pages_linking_in) == 1 call s:load_page(get(s:pages_linking_in, 0), 0) elseif len(s:pages_linking_in) == 0 echom "No pages link to " . s:page_title() . "!" else - call s:page_list_window(s:pages_linking_in, "Pages that link to " . s:page_title() . ": ") + call s:page_list_window(s:pages_linking_in, "pages-linking-in", "Pages that link to " . s:page_title() . ": ") endif endfunc "------------------------------------------------------------------------ " This appends the selected text (use visual-mode) to the page selected