]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1850: Vim9: wrong line number where options set v9.0.1850
authorLemonBoy <thatlemon@gmail.com>
Sat, 2 Sep 2023 19:52:05 +0000 (21:52 +0200)
committerChristian Brabandt <cb@256bit.org>
Sat, 2 Sep 2023 19:52:05 +0000 (21:52 +0200)
Problem:  Vim9: wrong line number where options set
Solution: Set source line number earlier

closes: #13006
closes: #13013

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
src/testdir/test_vim9_script.vim
src/version.c
src/vim9execute.c

index 338167e7b2b8eef3e019807919d1d5788399505b..656185adad045bf9a25e2d27a913cdd1a5f50b17 100644 (file)
@@ -4332,6 +4332,23 @@ def Test_option_set()
   set foldlevel&
 enddef
 
+def Test_option_set_line_number()
+  var lines =<< trim END
+      vim9script
+      # line2
+      # line3
+      def F()
+          # line5
+          &foldlevel = -128
+      enddef
+      F()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  var res = execute('verbose set foldlevel')
+  assert_match('  foldlevel.*Last set from .*XScriptSuccess\d\+ line 6', res)
+enddef
+
 def Test_option_modifier()
   # legacy script allows for white space
   var lines =<< trim END
index c94a450d0aab559f6108e38517c718645ecbd63f..517e0504e9c50af38de9c8f4288f64f971a325e7 100644 (file)
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1850,
 /**/
     1849,
 /**/
index 2fbce780f789468051d23c4d8da1ea31b86c6c24..c29873c89cd7cf8231a1cc944b7ca427c8df986f 100644 (file)
@@ -3836,6 +3836,7 @@ exec_instructions(ectx_T *ectx)
                    char_u      *tofree = NULL;
 
                    --ectx->ec_stack.ga_len;
+                   SOURCING_LNUM = iptr->isn_lnum;
                    tv = STACK_TV_BOT(0);
                    if (tv->v_type == VAR_STRING)
                    {
@@ -3845,7 +3846,6 @@ exec_instructions(ectx_T *ectx)
                    }
                    else if (iptr->isn_type == ISN_STOREFUNCOPT)
                    {
-                       SOURCING_LNUM = iptr->isn_lnum;
                        // If the option can be set to a function reference or
                        // a lambda and the passed value is a function
                        // reference, then convert it to the name (string) of