aboutsummaryrefslogtreecommitdiff
path: root/runtime/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/autoload')
-rw-r--r--runtime/autoload/man.vim27
1 files changed, 23 insertions, 4 deletions
diff --git a/runtime/autoload/man.vim b/runtime/autoload/man.vim
index 5c44e8c98a..563180c79b 100644
--- a/runtime/autoload/man.vim
+++ b/runtime/autoload/man.vim
@@ -50,11 +50,11 @@ function! man#open_page(count, count1, mods, ...) abort
return
endtry
call s:push_tag()
- let bufname = fnameescape('man://'.name.(empty(sect)?'':'('.sect.')'))
+ let bufname = 'man://'.name.(empty(sect)?'':'('.sect.')')
if a:mods !~# 'tab' && s:find_man()
- noautocmd execute 'silent edit' bufname
+ noautocmd execute 'silent edit' fnameescape(bufname)
else
- noautocmd execute 'silent' a:mods 'split' bufname
+ noautocmd execute 'silent' a:mods 'split' fnameescape(bufname)
endif
let b:man_sect = sect
call s:read_page(path)
@@ -81,7 +81,7 @@ function! s:read_page(path) abort
let cmd = 'env MANPAGER=cat'.(empty($MANWIDTH) ? ' MANWIDTH='.winwidth(0) : '')
let cmd .= ' '.s:man_cmd.' '.shellescape(a:path)
silent put =system(cmd)
- " remove all the backspaced text
+ " Remove all backspaced characters.
execute 'silent keeppatterns keepjumps %substitute,.\b,,e'.(&gdefault?'':'g')
while getline(1) =~# '^\s*$'
silent keepjumps 1delete _
@@ -259,3 +259,22 @@ function! s:format_candidate(path, sect) abort
return name.'('.sect.')'
endif
endfunction
+
+function! man#init_pager() abort
+ " Remove all backspaced characters.
+ execute 'silent keeppatterns keepjumps %substitute,.\b,,e'.(&gdefault?'':'g')
+ if getline(1) =~# '^\s*$'
+ silent keepjumps 1delete _
+ else
+ keepjumps 1
+ endif
+ " This is not perfect. See `man glDrawArraysInstanced`. Since the title is
+ " all caps it is impossible to tell what the original capitilization was.
+ let ref = tolower(matchstr(getline(1), '^\S\+'))
+ try
+ let b:man_sect = man#extract_sect_and_name_ref(ref)[0]
+ catch
+ let b:man_sect = ''
+ endtry
+ execute 'silent file man://'.fnameescape(ref)
+endfunction