diff --git a/src/buffer.c b/src/buffer.c
index 86dc886..ba20a61 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2364,6 +2364,7 @@
 #ifdef FEAT_COMPL_FUNC
     clear_string_option(&buf->b_p_cfu);
     clear_string_option(&buf->b_p_ofu);
+    clear_string_option(&buf->b_p_thsfu);
 #endif
 #ifdef FEAT_QUICKFIX
     clear_string_option(&buf->b_p_gp);
diff --git a/src/insexpand.c b/src/insexpand.c
index ee8263c..624146a 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -299,7 +299,11 @@
 							&& !curwin->w_p_spell
 #endif
 							)
-		 : (*curbuf->b_p_tsr == NUL && *p_tsr == NUL))
+		 : (*curbuf->b_p_tsr == NUL && *p_tsr == NUL
+#ifdef FEAT_COMPL_FUNC
+		     && *curbuf->b_p_thsfu == NUL
+#endif
+		   ))
     {
 	ctrl_x_mode = CTRL_X_NORMAL;
 	edit_submode = NULL;
@@ -2230,6 +2234,25 @@
 
 #ifdef FEAT_COMPL_FUNC
 /*
+ * Get the user-defined completion function name for completion 'type'
+ */
+    static char_u *
+get_complete_funcname(int type)
+{
+    switch (type)
+    {
+	case CTRL_X_FUNCTION:
+	    return curbuf->b_p_cfu;
+	case CTRL_X_OMNI:
+	    return curbuf->b_p_ofu;
+	case CTRL_X_THESAURUS:
+	    return curbuf->b_p_thsfu;
+	default:
+	    return (char_u *)"";
+    }
+}
+
+/*
  * Execute user defined complete function 'completefunc' or 'omnifunc', and
  * get matches in "matches".
  */
@@ -2246,7 +2269,7 @@
     typval_T	rettv;
     int		save_State = State;
 
-    funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
+    funcname = get_complete_funcname(type);
     if (*funcname == NUL)
 	return;
 
@@ -2721,6 +2744,21 @@
 #endif
 
 /*
+ * Returns TRUE when using a user-defined function for thesaurus completion.
+ */
+    static int
+thesaurus_func_complete(int type UNUSED)
+{
+#ifdef FEAT_COMPL_FUNC
+    return (type == CTRL_X_THESAURUS
+		&& curbuf->b_p_thsfu != NULL
+		&& *curbuf->b_p_thsfu != NUL);
+#else
+    return FALSE;
+#endif
+}
+
+/*
  * Get the next expansion(s), using "compl_pattern".
  * The search starts at position "ini" in curbuf and in the direction
  * compl_direction.
@@ -2906,7 +2944,12 @@
 
 	case CTRL_X_DICTIONARY:
 	case CTRL_X_THESAURUS:
-	    ins_compl_dictionaries(
+#ifdef FEAT_COMPL_FUNC
+	    if (thesaurus_func_complete(type))
+		expand_by_function(type, compl_pattern);
+	    else
+#endif
+		ins_compl_dictionaries(
 		    dict != NULL ? dict
 			 : (type == CTRL_X_THESAURUS
 			     ? (*curbuf->b_p_tsr == NUL
@@ -3760,7 +3803,9 @@
 	}
 
 	// Work out completion pattern and original text -- webb
-	if (ctrl_x_mode == CTRL_X_NORMAL || (ctrl_x_mode & CTRL_X_WANT_IDENT))
+	if (ctrl_x_mode == CTRL_X_NORMAL
+		|| (ctrl_x_mode & CTRL_X_WANT_IDENT
+		    && !thesaurus_func_complete(ctrl_x_mode)))
 	{
 	    if ((compl_cont_status & CONT_SOL)
 		    || ctrl_x_mode == CTRL_X_PATH_DEFINES)
@@ -3910,7 +3955,8 @@
 		compl_col = (int)(compl_xp.xp_pattern - compl_pattern);
 	    compl_length = curs_col - compl_col;
 	}
-	else if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
+	else if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI
+		|| thesaurus_func_complete(ctrl_x_mode))
 	{
 #ifdef FEAT_COMPL_FUNC
 	    // Call user defined function 'completefunc' with "a:findstart"
@@ -3923,8 +3969,7 @@
 
 	    // Call 'completefunc' or 'omnifunc' and get pattern length as a
 	    // string
-	    funcname = ctrl_x_mode == CTRL_X_FUNCTION
-					  ? curbuf->b_p_cfu : curbuf->b_p_ofu;
+	    funcname = get_complete_funcname(ctrl_x_mode);
 	    if (*funcname == NUL)
 	    {
 		semsg(_(e_notset), ctrl_x_mode == CTRL_X_FUNCTION
diff --git a/src/option.c b/src/option.c
index fe5ff43..385126e 100644
--- a/src/option.c
+++ b/src/option.c
@@ -5433,6 +5433,7 @@
 #ifdef FEAT_COMPL_FUNC
 	case PV_CFU:	return (char_u *)&(curbuf->b_p_cfu);
 	case PV_OFU:	return (char_u *)&(curbuf->b_p_ofu);
+	case PV_THSFU:	return (char_u *)&(curbuf->b_p_thsfu);
 #endif
 #ifdef FEAT_EVAL
 	case PV_TFU:	return (char_u *)&(curbuf->b_p_tfu);
@@ -5935,6 +5936,8 @@
 	    COPY_OPT_SCTX(buf, BV_CFU);
 	    buf->b_p_ofu = vim_strsave(p_ofu);
 	    COPY_OPT_SCTX(buf, BV_OFU);
+	    buf->b_p_thsfu = vim_strsave(p_thsfu);
+	    COPY_OPT_SCTX(buf, BV_THSFU);
 #endif
 #ifdef FEAT_EVAL
 	    buf->b_p_tfu = vim_strsave(p_tfu);
diff --git a/src/option.h b/src/option.h
index 48a3ec3..75c83d5 100644
--- a/src/option.h
+++ b/src/option.h
@@ -404,6 +404,7 @@
 #ifdef FEAT_COMPL_FUNC
 EXTERN char_u	*p_cfu;		// 'completefunc'
 EXTERN char_u	*p_ofu;		// 'omnifunc'
+EXTERN char_u	*p_thsfu;	// 'thesaurusfunc'
 #endif
 EXTERN int	p_ci;		// 'copyindent'
 #if defined(FEAT_GUI) && defined(MACOS_X)
@@ -1217,6 +1218,9 @@
 #endif
     , BV_TAGS
     , BV_TC
+#ifdef FEAT_COMPL_FUNC
+    , BV_THSFU
+#endif
     , BV_TS
     , BV_TW
     , BV_TX
diff --git a/src/optiondefs.h b/src/optiondefs.h
index ec89558..a7a3d0c 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -140,6 +140,9 @@
 #ifdef FEAT_EVAL
 # define PV_TFU		OPT_BUF(BV_TFU)
 #endif
+#ifdef FEAT_COMPL_FUNC
+# define PV_THSFU		OPT_BUF(BV_THSFU)
+#endif
 #define PV_TAGS		OPT_BOTH(OPT_BUF(BV_TAGS))
 #define PV_TC		OPT_BOTH(OPT_BUF(BV_TC))
 #define PV_TS		OPT_BUF(BV_TS)
@@ -2616,6 +2619,15 @@
     {"thesaurus",   "tsr",  P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
 			    (char_u *)&p_tsr, PV_TSR,
 			    {(char_u *)"", (char_u *)0L} SCTX_INIT},
+    {"thesaurusfunc", "tsrfu",  P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE,
+#ifdef FEAT_COMPL_FUNC
+			    (char_u *)&p_thsfu, PV_THSFU,
+			    {(char_u *)"", (char_u *)0L}
+#else
+			    (char_u *)NULL, PV_NONE,
+			    {(char_u *)0L, (char_u *)0L}
+#endif
+			    SCTX_INIT},
     {"tildeop",	    "top",  P_BOOL|P_VI_DEF|P_VIM,
 			    (char_u *)&p_to, PV_NONE,
 			    {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
diff --git a/src/optionstr.c b/src/optionstr.c
index ff13218..06a633b 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -271,6 +271,7 @@
 #ifdef FEAT_COMPL_FUNC
     check_string_option(&buf->b_p_cfu);
     check_string_option(&buf->b_p_ofu);
+    check_string_option(&buf->b_p_thsfu);
 #endif
 #ifdef FEAT_EVAL
     check_string_option(&buf->b_p_tfu);
diff --git a/src/structs.h b/src/structs.h
index 83a13a7..021206e 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2864,6 +2864,7 @@
 #ifdef FEAT_COMPL_FUNC
     char_u	*b_p_cfu;	// 'completefunc'
     char_u	*b_p_ofu;	// 'omnifunc'
+    char_u	*b_p_thsfu;	// 'thesaurusfunc'
 #endif
 #ifdef FEAT_EVAL
     char_u	*b_p_tfu;	// 'tagfunc'
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 6561edc..2cce85c 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -890,6 +890,48 @@
   bw!
 endfunc
 
+" Test 'thesaurusfunc'
+func MyThesaurus(findstart, base)
+  let mythesaurus = [
+        \ #{word: "happy",
+        \   synonyms: "cheerful,blissful,flying high,looking good,peppy"},
+        \ #{word: "kind",
+        \   synonyms: "amiable,bleeding-heart,heart in right place"}]
+  if a:findstart
+    " locate the start of the word
+    let line = getline('.')
+    let start = col('.') - 1
+    while start > 0 && line[start - 1] =~ '\a'
+      let start -= 1
+    endwhile
+    return start
+  else
+    " find strings matching with "a:base"
+    let res = []
+    for w in mythesaurus
+      if w.word =~ '^' . a:base
+        call add(res, w.word)
+        call extend(res, split(w.synonyms, ","))
+      endif
+    endfor
+    return res
+  endif
+endfunc
+
+func Test_thesaurus_func()
+  new
+  set thesaurus=
+  set thesaurusfunc=MyThesaurus
+  call setline(1, "an ki")
+  call cursor(1, 1)
+  call feedkeys("A\<c-x>\<c-t>\<c-n>\<cr>\<esc>", 'tnix')
+  call assert_equal(['an amiable', ''], getline(1, '$'))
+  set thesaurusfunc=NonExistingFunc
+  call assert_fails("normal $a\<C-X>\<C-T>", 'E117:')
+  set thesaurusfunc&
+  %bw!
+endfunc
+
 func Test_edit_CTRL_U()
   " Test 'completefunc'
   new
diff --git a/src/version.c b/src/version.c
index c5e9f25..00617b5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3520,
+/**/
     3519,
 /**/
     3518,
