Greetings,

I have noticed and fixed a small bug with the man.vim plugin.  To
reproduce:

1. vim --clean
2. :set hidden
3. :runtime ftplugin/man.vim
4. :ls
5. :Man vim
6. :q
7. :Man vim
8. :ls

Notice now that there is an additional listed buffer created for no
reason.  I have written an automated test for this issue that currently
fails. The test is attached.

Notice in the changes to the test script that I added "unlet
g:ft_man_open_mode" to the first test.  This variable was polluting the
later tests so that they wouldn't run properly (they would always see
this as "tab" unless it was reset).

The patch that fixes these problems is also attached.

Essentially, my change avoids running ":new" without an argument which
will create a superfluous, empty buffer.

All existing tests continue to pass.

Thanks,
Jason Franklin

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20bf9aaaf5ed0f5263e59134172aa7fe683e2257.camel%40elitemail.org.
For more options, visit https://groups.google.com/d/optout.
diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim
index 87773ed27..f858bcf27 100644
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	man
 " Maintainer:	SungHyun Nam <gow...@gmail.com>
-" Last Change: 	2019 Jan 22
+" Last Change: 	2019 Jun 19
 
 " To make the ":Man" command available before editing a manual page, source
 " this script from your startup vimrc file.
@@ -143,6 +143,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 +163,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
 
diff --git a/src/testdir/test_man.vim b/src/testdir/test_man.vim
index 1485ec321..b1cb982a1 100644
--- a/src/testdir/test_man.vim
+++ b/src/testdir/test_man.vim
@@ -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

Raspunde prin e-mail lui