]> granicus.if.org Git - vim/commitdiff
patch 8.1.1733: the man ftplugin leaves an empty buffer behind v8.1.1733
authorBram Moolenaar <Bram@vim.org>
Mon, 22 Jul 2019 20:09:21 +0000 (22:09 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 22 Jul 2019 20:09:21 +0000 (22:09 +0200)
Problem:    The man ftplugin leaves an empty buffer behind.
Solution:   Don't make new window and edit, use split. (Jason Franklin)

runtime/ftplugin/man.vim
src/testdir/test_man.vim
src/version.c

index 87773ed2792cc3703bae4f8611816947646c810d..fb3f7f90a1a3455112c2df339d217b19f3e22cb9 100644 (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
 
index 1485ec3219e9a5b45f815c31a8e91c5bc9030879..b1cb982a17534378538e6a6ebfa2395e78f9accf 100644 (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
index cdff0d349befcf756c2e50e666cfdb01ffa8004a..e544975d18caa2997befd6fb47ae6ca20369b46c 100644 (file)
@@ -777,6 +777,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1733,
 /**/
     1732,
 /**/