Просмотр исходного кода

Keep the alternate file when opening a file from the MRU window and MRU_Use_Current_Window is set to 1

Yegappan Lakshmanan 4 лет назад
Родитель
Сommit
9e85b70943
2 измененных файлов с 76 добавлено и 3 удалено
  1. 7 3
      plugin/mru.vim
  2. 69 0
      test/unit_tests.vim

+ 7 - 3
plugin/mru.vim

@@ -474,14 +474,18 @@ func! s:MRU_Window_Edit_File(fname, multi, edit_type, open_type) abort
 	  exe 'sview ' . esc_fname
 	endif
       else
+	let mod = ''
+	if g:MRU_Use_Current_Window
+	  let mod = 'keepalt '
+	endif
 	if a:edit_type ==# 'edit'
 	  if bufexists(esc_fname)
-	    exe 'buffer ' . esc_fname
+	    exe mod . 'buffer ' . esc_fname
 	  else
-	    exe 'edit ' . esc_fname
+	    exe mod . 'edit ' . esc_fname
 	  endif
 	else
-	  exe 'view ' . esc_fname
+	  exe mod . 'view ' . esc_fname
 	endif
       endif
     endif

+ 69 - 0
test/unit_tests.vim

@@ -1593,6 +1593,75 @@ func Test_54()
   call LogResult(test_name, 'pass')
 endfunc
 
+" ==========================================================================
+" Test55
+" Editing a file selected from the MRU window should set the current file to
+" be the alternate file.
+" ==========================================================================
+func Test_55()
+  let test_name = 'test55'
+  %bw!
+  new
+  edit file1.txt
+  edit file2.txt
+  MRU
+  call search('file3.txt')
+  exe "normal \<Enter>"
+  if fnamemodify(@%, ':p:t') !=# 'file3.txt'
+        \ || fnamemodify(@#, ':p:t') !=# 'file2.txt'
+    call LogResult(test_name, 'FAIL')
+    return
+  endif
+  %bw!
+  call LogResult(test_name, 'pass')
+endfunc
+
+" ==========================================================================
+" Test56
+" With MRU_Use_Current_Window set to 1, editing a file from the MRU list
+" should not change the alternate file.
+" ==========================================================================
+func Test_56()
+  let test_name = 'test56'
+  let g:MRU_Use_Current_Window = 1
+  new
+  edit file3.txt
+  edit file1.txt
+  edit file2.txt
+  MRU
+  call search('file3.txt')
+  exe "normal \<Enter>"
+  if fnamemodify(@%, ':p:t') !=# 'file3.txt'
+        \ || fnamemodify(@#, ':p:t') !=# 'file2.txt'
+    call LogResult(test_name, 'FAIL (1)')
+    return
+  endif
+  " try viewing a file
+  MRU
+  call search('file1.txt')
+  normal v
+  if fnamemodify(@%, ':p:t') !=# 'file1.txt'
+        \ || fnamemodify(@#, ':p:t') !=# 'file3.txt'
+        \ || !&readonly
+    call LogResult(test_name, 'FAIL (2)')
+    return
+  endif
+  " try opening a wiped out buffer
+  bw file2.txt
+  MRU
+  call search('file2.txt')
+  exe "normal \<Enter>"
+  if fnamemodify(@%, ':p:t') !=# 'file2.txt'
+        \ || fnamemodify(@#, ':p:t') !=# 'file1.txt'
+        \ || &readonly
+    call LogResult(test_name, 'FAIL (3)')
+    return
+  endif
+  let g:MRU_Use_Current_Window = 0
+  %bw!
+  call LogResult(test_name, 'pass')
+endfunc
+
 " ==========================================================================
 
 " Create the files used by the tests