diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim
index 048ebac..6e31162 100644
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -40,6 +40,9 @@
 endfunc
 
 func Test_global_vars()
+  let g:MY_GLOBAL_STRING = "Vim Editor"
+  let g:MY_GLOBAL_NUM = 345
+  let g:MY_GLOBAL_FLOAT = 3.14
   let test_dict = {'foo': 1, 'bar': 0, 'longvarible': 1000}
   let g:MY_GLOBAL_DICT = test_dict
   " store a really long list, so line wrapping will occur in viminfo file
@@ -59,6 +62,9 @@
   set viminfo='100,<50,s10,h,!,nviminfo
   wv! Xviminfo
 
+  unlet g:MY_GLOBAL_STRING
+  unlet g:MY_GLOBAL_NUM
+  unlet g:MY_GLOBAL_FLOAT
   unlet g:MY_GLOBAL_DICT
   unlet g:MY_GLOBAL_LIST
   unlet g:MY_GLOBAL_BLOB
@@ -68,6 +74,9 @@
   unlet g:MY_GLOBAL_NONE
 
   rv! Xviminfo
+  call assert_equal("Vim Editor", g:MY_GLOBAL_STRING)
+  call assert_equal(345, g:MY_GLOBAL_NUM)
+  call assert_equal(3.14, g:MY_GLOBAL_FLOAT)
   call assert_equal(test_dict, g:MY_GLOBAL_DICT)
   call assert_equal(test_list, g:MY_GLOBAL_LIST)
   call assert_equal(test_blob, g:MY_GLOBAL_BLOB)
@@ -221,6 +230,7 @@
     call add(l, 'something')
   endfor
   call setreg('d', l, 'l')
+  call setreg('e', "abc\<C-V>xyz")
   wviminfo Xviminfo
 
   call test_settime(10)
@@ -231,6 +241,7 @@
   call setreg('c', 'keep', 'l')
   call test_settime(30)
   call setreg('d', 'drop', 'l')
+  call setreg('e', 'drop')
   rviminfo Xviminfo
 
   call assert_equal("", getreg('a'))
@@ -241,6 +252,7 @@
   call assert_equal("V", getregtype('c'))
   call assert_equal(l, getreg('d', 1, 1))
   call assert_equal("V", getregtype('d'))
+  call assert_equal("abc\<C-V>xyz", getreg('e'))
 
   " Length around 440 switches to line continuation.
   let len = 434
@@ -514,12 +526,41 @@
   delmark B
 endfunc
 
+" Test for saving and restoring file marks in unloaded buffers
+func Test_viminfo_file_mark_unloaded_buf()
+  let save_viminfo = &viminfo
+  set viminfo&vim
+  call writefile(repeat(['vim'], 10), 'Xfile1')
+  %bwipe
+  edit! Xfile1
+  call setpos("'u", [0, 3, 1, 0])
+  call setpos("'v", [0, 5, 1, 0])
+  enew
+  wviminfo Xviminfo
+  %bwipe
+  edit Xfile1
+  rviminfo! Xviminfo
+  call assert_equal([0, 3, 1, 0], getpos("'u"))
+  call assert_equal([0, 5, 1, 0], getpos("'v"))
+  %bwipe
+  call delete('Xfile1')
+  call delete('Xviminfo')
+  let &viminfo = save_viminfo
+endfunc
+
 func Test_viminfo_oldfiles()
   let v:oldfiles = []
   let lines = [
 	\ '# comment line',
 	\ '*encoding=utf-8',
 	\ '',
+	\ ':h viminfo',
+	\ '?/session',
+	\ '=myvar',
+	\ '@123',
+	\ '',
+	\ "'E  2  0  /tmp/nothing",
+	\ '',
 	\ "> /tmp/file_one.txt",
 	\ "\t\"\t11\t0",
 	\ "",
@@ -531,9 +572,15 @@
 	\ "",
 	\ ]
   call writefile(lines, 'Xviminfo')
+  delmark E
   rviminfo! Xviminfo
   call delete('Xviminfo')
 
+  call assert_equal('h viminfo', histget(':'))
+  call assert_equal('session', histget('/'))
+  call assert_equal('myvar', histget('='))
+  call assert_equal('123', histget('@'))
+  call assert_equal(2, line("'E"))
   call assert_equal(['1: /tmp/file_one.txt', '2: /tmp/file_two.txt', '3: /tmp/another.txt'], filter(split(execute('oldfiles'), "\n"), {i, v -> v =~ '/tmp/'}))
   call assert_equal(['1: /tmp/file_one.txt', '2: /tmp/file_two.txt'], filter(split(execute('filter file_ oldfiles'), "\n"), {i, v -> v =~ '/tmp/'}))
   call assert_equal(['3: /tmp/another.txt'], filter(split(execute('filter /another/ oldfiles'), "\n"), {i, v -> v =~ '/tmp/'}))
@@ -543,4 +590,151 @@
   browse oldfiles
   call assert_equal("/tmp/another.txt", expand("%"))
   bwipe
+  delmark E
+endfunc
+
+" Test for storing and restoring buffer list in 'viminfo'
+func Test_viminfo_bufferlist()
+  " If there are arguments, then :rviminfo doesn't read the buffer list.
+  " Need to delete all the arguments for :rviminfo to work.
+  %argdelete
+
+  edit Xfile1
+  edit Xfile2
+  set viminfo-=%
+  wviminfo Xviminfo
+  %bwipe
+  rviminfo Xviminfo
+  call assert_equal(1, len(getbufinfo()))
+
+  edit Xfile1
+  edit Xfile2
+  set viminfo^=%
+  wviminfo Xviminfo
+  %bwipe
+  rviminfo Xviminfo
+  let l = getbufinfo()
+  call assert_equal(3, len(l))
+  call assert_equal('Xfile1', bufname(l[1].bufnr))
+  call assert_equal('Xfile2', bufname(l[2].bufnr))
+
+  call delete('Xviminfo')
+  %bwipe
+  set viminfo-=%
+endfunc
+
+" Test for errors in a viminfo file
+func Test_viminfo_error()
+  " Non-existing viminfo files
+  call assert_fails('rviminfo xyz', 'E195:')
+
+  " Illegal starting character
+  call writefile(["a 123"], 'Xviminfo')
+  call assert_fails('rv Xviminfo', 'E575:')
+
+  " Illegal register name in the viminfo file
+  call writefile(['"@	LINE	0'], 'Xviminfo')
+  call assert_fails('rv Xviminfo', 'E577:')
+
+  " Invalid file mark line
+  call writefile(['>', '@'], 'Xviminfo')
+  call assert_fails('rv Xviminfo', 'E576:')
+
+  " Too many errors in viminfo file
+  call writefile(repeat(["a 123"], 15), 'Xviminfo')
+  call assert_fails('rv Xviminfo', 'E136:')
+
+  call writefile(['>'] + repeat(['@'], 10), 'Xviminfo')
+  call assert_fails('rv Xviminfo', 'E136:')
+
+  call writefile(repeat(['"@'], 15), 'Xviminfo')
+  call assert_fails('rv Xviminfo', 'E136:')
+
+  call delete('Xviminfo')
+endfunc
+
+" Test for saving and restoring last substitute string in viminfo
+func Test_viminfo_lastsub()
+  enew
+  call append(0, "blue blue blue")
+  call cursor(1, 1)
+  s/blue/green/
+  wviminfo Xviminfo
+  s/blue/yellow/
+  rviminfo! Xviminfo
+  &
+  call assert_equal("green yellow green", getline(1))
+  enew!
+  call delete('Xviminfo')
+endfunc
+
+" Test saving and restoring the register values using the older method
+func Test_viminfo_registers_old()
+  let lines = [
+	\ '# Viminfo version',
+	\ '|1,1',
+	\ '',
+	\ '*encoding=utf-8',
+	\ '',
+	\ '# Registers:',
+	\ '""0 CHAR  0',
+	\ '	Vim',
+	\ '"a  CHAR  0',
+	\ '	red',
+	\ '"m@ CHAR  0',
+	\ "	:echo 'Hello'\<CR>",
+	\ "",
+	\ ]
+  call writefile(lines, 'Xviminfo')
+  let @a = 'one'
+  let @b = 'two'
+  let @m = 'three'
+  let @" = 'four'
+  let @t = ":echo 'Unix'\<CR>"
+  silent! normal @t
+  rviminfo! Xviminfo
+  call assert_equal('red', getreg('a'))
+  call assert_equal('two', getreg('b'))
+  call assert_equal(":echo 'Hello'\<CR>", getreg('m'))
+  call assert_equal('Vim', getreg('"'))
+  call assert_equal("\nHello", execute('normal @@'))
+  call delete('Xviminfo')
+  let @" = ''
+endfunc
+
+" Test for saving and restoring large number of lines in a register
+func Test_viminfo_large_register()
+  let save_viminfo = &viminfo
+  set viminfo&vim
+  set viminfo-=<50
+  set viminfo+=<200
+  let lines = ['"r	CHAR	0']
+  call extend(lines, repeat(["\tsun is rising"], 200))
+  call writefile(lines, 'Xviminfo')
+  let @r = ''
+  rviminfo! Xviminfo
+  call assert_equal(join(repeat(["sun is rising"], 200), "\n"), @r)
+  call delete('Xviminfo')
+  let &viminfo = save_viminfo
+endfunc
+
+" Test for setting 'viminfofile' to NONE
+func Test_viminfofile_none()
+  set viminfofile=NONE
+  wviminfo Xviminfo
+  call assert_false(filereadable('Xviminfo'))
+  call writefile([''], 'Xviminfo')
+  call assert_fails('rviminfo Xviminfo', 'E195:')
+  call delete('Xviminfo')
+endfunc
+
+" Test for an unwritable 'viminfo' file
+func Test_viminfo_readonly()
+  if !has('unix')
+      return
+  endif
+  call writefile([''], 'Xviminfo')
+  call setfperm('Xviminfo', 'r-x------')
+  call assert_fails('wviminfo Xviminfo', 'E137:')
+  call delete('Xviminfo')
 endfunc
diff --git a/src/version.c b/src/version.c
index ee1525d..f77ecc6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2111,
+/**/
     2110,
 /**/
     2109,
