changeset 20025:18043e7ab449 v8.2.0568

patch 8.2.0568: the man filetype plugin overwrites the unnamed register Commit: https://github.com/vim/vim/commit/55b0fb7001ae42a58c10ad93a9157113f77a43d2 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 13 14:58:37 2020 +0200 patch 8.2.0568: the man filetype plugin overwrites the unnamed register Problem: The man filetype plugin overwrites the unnamed register. Solution: Use the black hole register. (Jason Franklin)
author Bram Moolenaar <Bram@vim.org>
date Mon, 13 Apr 2020 15:00:03 +0200
parents bb6aa55d2e24
children 0017b6fea4b0
files runtime/ftplugin/man.vim src/testdir/test_man.vim src/version.c
diffstat 3 files changed, 26 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	man
 " Maintainer:	SungHyun Nam <goweol@gmail.com>
-" Last Change: 	2020 Apr 6
+" Last Change: 	2020 Apr 13
 
 " To make the ":Man" command available before editing a manual page, source
 " this script from your startup vimrc file.
@@ -188,7 +188,7 @@ func <SID>GetPage(cmdmods, ...)
   setl buftype=nofile noswapfile
 
   setl fdc=0 ma nofen nonu nornu
-  silent exec "norm! 1GdG"
+  %delete _
   let unsetwidth = 0
   if empty($MANWIDTH)
     let $MANWIDTH = winwidth(0)
@@ -213,10 +213,10 @@ func <SID>GetPage(cmdmods, ...)
   endif
   " Remove blank lines from top and bottom.
   while line('$') > 1 && getline(1) =~ '^\s*$'
-    silent keepj norm! ggdd
+    1delete _
   endwhile
   while line('$') > 1 && getline('$') =~ '^\s*$'
-    silent keepj norm! Gdd
+    $delete _
   endwhile
   1
   setl ft=man nomod
--- a/src/testdir/test_man.vim
+++ b/src/testdir/test_man.vim
@@ -1,3 +1,5 @@
+" Test specifically for the Man filetype plugin.
+
 runtime ftplugin/man.vim
 
 func Test_g_ft_man_open_mode()
@@ -111,3 +113,21 @@ func Test_local_options()
   %bw!
   set foldcolumn& number&
 endfunc
+
+" Check that the unnamed register is not overwritten.
+func Test_keep_unnamed_register()
+  %bw!
+
+  let @" = '---'
+
+  let wincnt = winnr('$')
+  Man vim
+  if wincnt == winnr('$')
+    " Vim manual page cannot be found.
+    return
+  endif
+
+  call assert_equal('---', @")
+
+  %bw!
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    568,
+/**/
     567,
 /**/
     566,