patch 8.1.1733: the man ftplugin leaves an empty buffer behind

Problem:    The man ftplugin leaves an empty buffer behind.
Solution:   Don't make new window and edit, use split. (Jason Franklin)
This commit is contained in:
Bram Moolenaar 2019-07-22 22:09:21 +02:00
parent f03e328348
commit e5e6950193
3 changed files with 43 additions and 12 deletions

View File

@ -1,7 +1,8 @@
" Vim filetype plugin file
" Language: man
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Last Change: 2019 Jan 22
" Last Change: 2019 Jul 22
" (fix by Jason Franklin)
" To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file.
@ -143,6 +144,8 @@ func <SID>GetPage(cmdmods, ...)
exec "let s:man_tag_col_".s:man_tag_depth." = ".col(".")
let s:man_tag_depth = s:man_tag_depth + 1
let open_cmd = 'edit'
" Use an existing "man" window if it exists, otherwise open a new one.
if &filetype != "man"
let thiswin = winnr()
@ -161,24 +164,22 @@ func <SID>GetPage(cmdmods, ...)
endif
if &filetype != "man"
if exists("g:ft_man_open_mode")
if g:ft_man_open_mode == "vert"
vnew
elseif g:ft_man_open_mode == "tab"
tabnew
if g:ft_man_open_mode == 'vert'
let open_cmd = 'vsplit'
elseif g:ft_man_open_mode == 'tab'
let open_cmd = 'tabedit'
else
new
let open_cmd = 'split'
endif
else
if a:cmdmods != ''
exe a:cmdmods . ' new'
else
new
endif
let open_cmd = a:cmdmods . ' split'
endif
setl nonu fdc=0
endif
endif
silent exec "edit $HOME/".page.".".sect."~"
silent execute open_cmd . " $HOME/" . page . '.' . sect . '~'
" Avoid warning for editing the dummy file twice
setl buftype=nofile noswapfile

View File

@ -46,6 +46,8 @@ function Test_g_ft_man_open_mode()
call assert_equal(2, tabpagenr('$'))
call assert_equal(2, tabpagenr())
q
unlet g:ft_man_open_mode
endfunction
function Test_nomodifiable()
@ -58,3 +60,29 @@ function Test_nomodifiable()
call assert_false(&l:modifiable)
q
endfunction
function Test_buffer_count_hidden()
%bw!
set hidden
call assert_equal(1, len(getbufinfo()))
let wincnt = winnr('$')
Man vim
if wincnt == winnr('$')
" Vim manual page cannot be found.
return
endif
call assert_equal(1, len(getbufinfo({'buflisted':1})))
call assert_equal(2, len(getbufinfo()))
q
Man vim
call assert_equal(1, len(getbufinfo({'buflisted':1})))
call assert_equal(2, len(getbufinfo()))
q
set hidden&
endfunction

View File

@ -777,6 +777,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1733,
/**/
1732,
/**/