aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Pilling <robpilling@gmail.com>2019-10-29 18:41:30 +0000
committerRob Pilling <robpilling@gmail.com>2019-10-29 18:41:30 +0000
commitc6afad78d39aa77a4d372759336018ef6e101dab (patch)
treeb3fc7ada4beb3fdfbe5524b0ad2449e2040ae4bd
parent0173bdf98be6f867d1b316d4d2ac87f7a93d95e4 (diff)
downloadrneovim-c6afad78d39aa77a4d372759336018ef6e101dab.tar.gz
rneovim-c6afad78d39aa77a4d372759336018ef6e101dab.tar.bz2
rneovim-c6afad78d39aa77a4d372759336018ef6e101dab.zip
man.vim: remove push_tag and simplify man#open_page
-rw-r--r--runtime/autoload/man.vim50
1 files changed, 6 insertions, 44 deletions
diff --git a/runtime/autoload/man.vim b/runtime/autoload/man.vim
index 08c6fc1eca..ecbe4bb374 100644
--- a/runtime/autoload/man.vim
+++ b/runtime/autoload/man.vim
@@ -64,34 +64,22 @@ function! man#open_page(count, count1, mods, ...) abort
return
endtry
- let fullname = name.(empty(sect)?'':'('.sect.')')
- call s:push_tag(fullname)
- let bufname = 'man://'.fullname
-
+ let [l:buf, l:save_tfu] = [bufnr(), &tagfunc]
try
set eventignore+=BufReadCmd
+ set tagfunc=man#goto_tag
+ let l:target = l:name . '(' . l:sect . ')'
if a:mods !~# 'tab' && s:find_man()
- execute 'silent keepalt edit' fnameescape(bufname)
+ execute 'silent keepalt tag' l:target
else
- execute 'silent keepalt' a:mods 'split' fnameescape(bufname)
+ execute 'silent keepalt' a:mods 'stag' l:target
endif
finally
+ call setbufvar(l:buf, '&tagfunc', l:save_tfu)
set eventignore-=BufReadCmd
endtry
- try
- let page = s:get_page(path)
- catch
- if a:mods =~# 'tab' || !s:find_man()
- " a new window was opened
- close
- endif
- call s:error(v:exception)
- return
- endtry
-
let b:man_sect = sect
- call s:put_page(page)
endfunction
function! man#read_page(ref) abort
@@ -255,32 +243,6 @@ function! s:verify_exists(sect, name) abort
return s:extract_sect_and_name_path(path) + [path]
endfunction
-function! s:push_tag(name) abort
- " emulate vim's tag pushing for cases where we don't use 'tagfunc'
- if !&tagstack
- return
- endif
-
- let winnr = winnr()
- let stack = gettagstack(winnr)
-
- let curidx = stack.curidx
- let items = stack.items
-
- let newstack = items[0 : curidx - 1]
- let newstack += [{
- \ 'bufnr': bufnr('%'),
- \ 'from': getpos('.'),
- \ 'matchnr': 0,
- \ 'tagname': a:name,
- \ }]
-
- call settagstack(winnr, {
- \ 'length': len(newstack),
- \ 'items': newstack,
- \ })
-endfunction
-
" extracts the name and sect out of 'path/name.sect'
function! s:extract_sect_and_name_path(path) abort
let tail = fnamemodify(a:path, ':t')