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