diff src/testdir/test_filechanged.vim @ 27635:6ca2d8f4cd32 v8.2.4343

patch 8.2.4343: when reloading not all properties are detected Commit: https://github.com/vim/vim/commit/8196e94a8b72ed8618605cb66615571313097d78 Author: Rob Pilling <robpilling@gmail.com> Date: Fri Feb 11 15:12:10 2022 +0000 patch 8.2.4343: when reloading not all properties are detected Problem: When reloading not all properties are detected. Solution: Add the "edit" value to v:fcs_choice. (Rob Pilling, closes https://github.com/vim/vim/issues/9579)
author Bram Moolenaar <Bram@vim.org>
date Fri, 11 Feb 2022 16:15:03 +0100
parents 1725bb56178a
children 9bc9970e72eb
line wrap: on
line diff
--- a/src/testdir/test_filechanged.vim
+++ b/src/testdir/test_filechanged.vim
@@ -91,6 +91,100 @@ func Test_FileChangedShell_reload()
   call delete('Xchanged_r')
 endfunc
 
+func Test_FileChangedShell_edit()
+  CheckUnix
+
+  new Xchanged_r
+  call setline(1, 'reload this')
+  set fileformat=unix
+  write
+
+  " File format changed, reload (content only, no 'ff' etc)
+  augroup testreload
+    au!
+    au FileChangedShell Xchanged_r let g:reason = v:fcs_reason | let v:fcs_choice = 'reload'
+  augroup END
+  call assert_equal(&fileformat, 'unix')
+  call writefile(["line1\r", "line2\r"], 'Xchanged_r')
+  let g:reason = ''
+  checktime
+  call assert_equal('changed', g:reason)
+  call assert_equal(&fileformat, 'unix')
+  call assert_equal("line1\r", getline(1))
+  call assert_equal("line2\r", getline(2))
+  %s/\r
+  write
+
+  " File format changed, reload with 'ff', etc
+  augroup testreload
+    au!
+    au FileChangedShell Xchanged_r let g:reason = v:fcs_reason | let v:fcs_choice = 'edit'
+  augroup END
+  call assert_equal(&fileformat, 'unix')
+  call writefile(["line1\r", "line2\r"], 'Xchanged_r')
+  let g:reason = ''
+  checktime
+  call assert_equal('changed', g:reason)
+  call assert_equal(&fileformat, 'dos')
+  call assert_equal('line1', getline(1))
+  call assert_equal('line2', getline(2))
+  set fileformat=unix
+  write
+
+  au! testreload
+  bwipe!
+  call delete(undofile('Xchanged_r'))
+  call delete('Xchanged_r')
+endfunc
+
+func Test_FileChangedShell_edit_dialog()
+  CheckNotGui
+
+  new Xchanged_r
+  call setline(1, 'reload this')
+  set fileformat=unix
+  write
+
+  " File format changed, reload (content only) via prompt
+  augroup testreload
+    au!
+    au FileChangedShell Xchanged_r let g:reason = v:fcs_reason | let v:fcs_choice = 'ask'
+  augroup END
+  call assert_equal(&fileformat, 'unix')
+  call writefile(["line1\r", "line2\r"], 'Xchanged_r')
+  let g:reason = ''
+  call feedkeys('L', 'L') " load file content only
+  checktime
+  call assert_equal('changed', g:reason)
+  call assert_equal(&fileformat, 'unix')
+  call assert_equal("line1\r", getline(1))
+  call assert_equal("line2\r", getline(2))
+  %s/\r
+  write
+
+  " File format changed, reload (file and options) via prompt
+  augroup testreload
+    au!
+    au FileChangedShell Xchanged_r let g:reason = v:fcs_reason | let v:fcs_choice = 'ask'
+  augroup END
+  call assert_equal(&fileformat, 'unix')
+  call writefile(["line1\r", "line2\r"], 'Xchanged_r')
+  let g:reason = ''
+  call feedkeys('a', 'L') " load file content and options
+  checktime
+  call assert_equal('changed', g:reason)
+  call assert_equal(&fileformat, 'dos')
+  call assert_equal("line1", getline(1))
+  call assert_equal("line2", getline(2))
+  set fileformat=unix
+  write
+
+  au! testreload
+  bwipe!
+  call delete(undofile('Xchanged_r'))
+  call delete('Xchanged_r')
+endfunc
+
 func Test_file_changed_dialog()
   CheckUnix
   CheckNotGui