changeset 23886:eef0cffbdb94 v8.2.2485

patch 8.2.2485: when sourcing a script again the script version isn't reset Commit: https://github.com/vim/vim/commit/0123cc1e1422003704cc6941916dd75e61fb7976 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 7 17:17:58 2021 +0100 patch 8.2.2485: when sourcing a script again the script version isn't reset Problem: When sourcing a script again the script version isn't reset. Solution: Set sn_version to one when sourcing a script again. Clear sn_save_cpo properly. (closes #7608)
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Feb 2021 17:30:04 +0100
parents 8ea16fd1a3ba
children ee748fa7dcf5
files src/scriptfile.c src/testdir/test_vim9_script.vim src/version.c
diffstat 3 files changed, 20 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1319,6 +1319,9 @@ do_source(
 	    }
 	// imports can be redefined once
 	mark_imports_for_reload(sid);
+
+	// reset version, "vim9script" may have been added or removed.
+	si->sn_version = 1;
     }
     else
     {
@@ -1457,7 +1460,7 @@ almosttheend:
     if (si->sn_save_cpo != NULL)
     {
 	set_option_value((char_u *)"cpo", 0L, si->sn_save_cpo, 0);
-	CLEAR_POINTER(si->sn_save_cpo);
+	VIM_CLEAR(si->sn_save_cpo);
     }
 
     restore_funccal();
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2207,7 +2207,7 @@ def Test_while_loop()
   assert_equal('1_3_', result)
 
   var s = ''
-  while s == 'x' #{comment
+  while s == 'x' #{comment}
   endwhile
 enddef
 
@@ -3155,6 +3155,19 @@ def Test_restoring_cpo()
   delete('Xsourced')
   delete('Xclose')
   delete('Xdone')
+
+  writefile(['vim9script'], 'XanotherScript')
+  set cpo=aABceFsMny>
+  edit XanotherScript
+  so %
+  assert_equal('aABceFsMny>', &cpo)
+  :1del
+  w
+  so %
+  assert_equal('aABceFsMny>', &cpo)
+
+  delete('XanotherScript')
+  set cpo&vim
 enddef
 
 
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2485,
+/**/
     2484,
 /**/
     2483,