changeset 27213:42561e956a70 v8.2.4135

patch 8.2.4135: Vim9: ":scriptnames" shows unloaded imported autoload script Commit: https://github.com/vim/vim/commit/6079da7cfb10c798535224c92db7fedd3914cb71 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 18 14:16:59 2022 +0000 patch 8.2.4135: Vim9: ":scriptnames" shows unloaded imported autoload script Problem: Vim9: ":scriptnames" shows unloaded imported autoload script. Solution: Mark the unloaded script with "A". (closes https://github.com/vim/vim/issues/9552)
author Bram Moolenaar <Bram@vim.org>
date Tue, 18 Jan 2022 15:30:04 +0100
parents ceba1e0d0210
children c2954285f431
files runtime/doc/repeat.txt src/scriptfile.c src/testdir/test_vim9_import.vim src/version.c
diffstat 4 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -380,6 +380,9 @@ For writing a Vim script, see chapter 41
 :scr[iptnames]		List all sourced script names, in the order they were
 			first sourced.  The number is used for the script ID
 			|<SID>|.
+			For a script that was used with `import autoload` but
+			was not actually sourced yet an "A" is shown after the
+			script ID.
 			{not available when compiled without the |+eval|
 			feature}
 
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1648,16 +1648,22 @@ ex_scriptnames(exarg_T *eap)
     }
 
     for (i = 1; i <= script_items.ga_len && !got_int; ++i)
-	if (SCRIPT_ITEM(i)->sn_name != NULL)
+    {
+	scriptitem_T *si = SCRIPT_ITEM(i);
+
+	if (si->sn_name != NULL)
 	{
-	    home_replace(NULL, SCRIPT_ITEM(i)->sn_name,
-						    NameBuff, MAXPATHL, TRUE);
-	    vim_snprintf((char *)IObuff, IOSIZE, "%3d: %s", i, NameBuff);
+	    home_replace(NULL, si->sn_name, NameBuff, MAXPATHL, TRUE);
+	    vim_snprintf((char *)IObuff, IOSIZE, "%3d%s: %s",
+		    i,
+		    si->sn_state == SN_STATE_NOT_LOADED ? " A" : "",
+		    NameBuff);
 	    msg_putchar('\n');
 	    msg_outtrans(IObuff);
 	    out_flush();	    // output one line at a time
 	    ui_breakcheck();
 	}
+    }
 }
 
 # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1397,10 +1397,12 @@ def Test_autoload_mapping()
   CheckScriptSuccess(lines)
   assert_false(exists("g:toggle_loaded"))
   assert_false(exists("g:toggle_called"))
+  assert_match('\d A: \f*[/\\]toggle.vim', execute('scriptnames'))
 
   feedkeys("tt", 'xt')
   assert_equal('yes', g:toggle_loaded)
   assert_equal('yes', g:toggle_called)
+  assert_match('\d: \f*[/\\]toggle.vim', execute('scriptnames'))
 
   feedkeys("xx", 'xt')
   assert_equal('yes', g:doit_called)
--- 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 */
 /**/
+    4135,
+/**/
     4134,
 /**/
     4133,