diff --git a/src/evalvars.c b/src/evalvars.c
index ca7e7e8..d86d6eb 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -3382,22 +3382,20 @@
     }
     else
     {
-	if (in_vim9script() && SCRIPT_ID_VALID(current_sctx.sc_sid)
-		&& SCRIPT_ITEM(current_sctx.sc_sid)->sn_autoload_prefix != NULL
-		&& is_export)
-	{
-	    scriptitem_T *si = SCRIPT_ITEM(current_sctx.sc_sid);
-	    size_t	 len = STRLEN(name) + STRLEN(si->sn_autoload_prefix) + 1;
+	scriptitem_T *si;
 
+	if (in_vim9script() && is_export
+		&& SCRIPT_ID_VALID(current_sctx.sc_sid)
+		&& (si = SCRIPT_ITEM(current_sctx.sc_sid))
+						   ->sn_autoload_prefix != NULL)
+	{
 	    // In a vim9 autoload script an exported variable is put in the
 	    // global namespace with the autoload prefix.
 	    var_in_autoload = TRUE;
-	    varname = alloc(len);
+	    varname = concat_str(si->sn_autoload_prefix, name);
 	    if (varname == NULL)
 		goto failed;
 	    name_tofree = varname;
-	    vim_snprintf((char *)varname, len, "%s%s",
-						 si->sn_autoload_prefix, name);
 	    ht = &globvarht;
 	}
 	else
@@ -4631,6 +4629,40 @@
 }
 
 /*
+ * When a callback refers to an autoload import, change the function name to
+ * the "path#name" form.  Uses the current script context.
+ * Only works when the name is allocated.
+ */
+    void
+expand_autload_callback(callback_T *cb)
+{
+    char_u	*p;
+    imported_T	*import;
+
+    if (!in_vim9script() || cb->cb_name == NULL || !cb->cb_free_name)
+	return;
+    p = vim_strchr(cb->cb_name, '.');
+    if (p == NULL)
+	return;
+    import = find_imported(cb->cb_name, p - cb->cb_name, FALSE, NULL);
+    if (import != NULL && SCRIPT_ID_VALID(import->imp_sid))
+    {
+	scriptitem_T *si = SCRIPT_ITEM(import->imp_sid);
+
+	if (si->sn_autoload_prefix != NULL)
+	{
+	    char_u *name = concat_str(si->sn_autoload_prefix, p + 1);
+
+	    if (name != NULL)
+	    {
+		vim_free(cb->cb_name);
+		cb->cb_name = name;
+	    }
+	}
+    }
+}
+
+/*
  * Unref/free "callback" returned by get_callback() or set_callback().
  */
     void
diff --git a/src/option.c b/src/option.c
index ff53968..2ec6ed5 100644
--- a/src/option.c
+++ b/src/option.c
@@ -7238,6 +7238,11 @@
     free_callback(optcb);
     set_callback(optcb, &cb);
     free_tv(tv);
+
+    // when using Vim9 style "import.funcname" it needs to be expanded to
+    // "import#funcname".
+    expand_autload_callback(optcb);
+
     return OK;
 #else
     return FAIL;
diff --git a/src/proto/evalvars.pro b/src/proto/evalvars.pro
index 487f88b..df4fb16 100644
--- a/src/proto/evalvars.pro
+++ b/src/proto/evalvars.pro
@@ -103,5 +103,6 @@
 void put_callback(callback_T *cb, typval_T *tv);
 void set_callback(callback_T *dest, callback_T *src);
 void copy_callback(callback_T *dest, callback_T *src);
+void expand_autload_callback(callback_T *cb);
 void free_callback(callback_T *callback);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index bacba2e..6e61d07 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -609,7 +609,7 @@
   nunmap <F3>
 enddef
 
-def Test_use_import_in_completion()
+def Test_use_import_in_command_completion()
   var lines =<< trim END
       vim9script
       export def Complete(..._): list<string>
@@ -632,6 +632,47 @@
   delete('Xscript.vim')
 enddef
 
+def Test_use_autoload_import_in_insert_completion()
+  mkdir('Xdir/autoload', 'p')
+  var save_rtp = &rtp
+  exe 'set rtp^=' .. getcwd() .. '/Xdir'
+
+  var lines =<< trim END
+      vim9script
+      export def ThesaurusFunc(findbase: bool, _): any
+        if findbase
+          return 1
+        endif
+        return [
+          'check',
+          'experiment',
+          'test',
+          'verification'
+          ]
+      enddef
+      g:completion_loaded = 'yes'
+  END
+  writefile(lines, 'Xdir/autoload/completion.vim')
+
+  new
+  lines =<< trim END
+      vim9script
+      g:completion_loaded = 'no'
+      import autoload 'completion.vim'
+      set thesaurusfunc=completion.ThesaurusFunc
+      assert_equal('no', g:completion_loaded)
+      feedkeys("i\<C-X>\<C-T>\<C-N>\<Esc>", 'xt')
+      assert_equal('experiment', getline(1))
+      assert_equal('yes', g:completion_loaded)
+  END
+  CheckScriptSuccess(lines)
+
+  set thesaurusfunc=
+  bwipe!
+  delete('Xdir', 'rf')
+  &rtp = save_rtp
+enddef
+
 def Test_export_fails()
   CheckScriptFailure(['export var some = 123'], 'E1042:')
   CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:')
diff --git a/src/userfunc.c b/src/userfunc.c
index 223535f..7341878 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3262,7 +3262,7 @@
     typval_T	rettv;
     varnumber_T	retval;
 
-    if (call_callback(callback, 0, &rettv, argcount, argvars) == FAIL)
+    if (call_callback(callback, -1, &rettv, argcount, argvars) == FAIL)
 	return -2;
 
     retval = tv_get_number_chk(&rettv, NULL);
diff --git a/src/version.c b/src/version.c
index 4bf32fe..07c28ae 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4171,
+/**/
     4170,
 /**/
     4169,
