diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 8d47a7e..7788c0b 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -824,6 +824,9 @@
 	CTRL-P		Search backwards for next matching keyword.  This
 			keyword replaces the previous matching keyword.
 
+
+Completing words in 'thesaurus'				*compl-thesaurus*
+
 							*i_CTRL-X_CTRL-T*
 CTRL-X CTRL-T		Works as CTRL-X CTRL-K, but in a special way.  It uses
 			the 'thesaurus' option instead of 'dictionary'.  If a
@@ -832,22 +835,6 @@
 			matches, even though they don't complete the word.
 			Thus a word can be completely replaced.
 
-			For an example, imagine the 'thesaurus' file has a
-			line like this: >
-				angry furious mad enraged
-<			Placing the cursor after the letters "ang" and typing
-			CTRL-X CTRL-T would complete the word "angry";
-			subsequent presses would change the word to "furious",
-			"mad" etc.
-			Other uses include translation between two languages,
-			or grouping API functions by keyword.
-
-			If the 'thesaurusfunc' option is set, then the user
-			specified function is invoked to get the list of
-			completion matches and the 'thesaurus' option is not
-			used. See |complete-functions| for an explanation of
-			how the function is invoked and what it should return.
-
 	CTRL-T	or
 	CTRL-N		Search forward for next matching keyword.  This
 			keyword replaces the previous matching keyword.
@@ -855,6 +842,61 @@
 	CTRL-P		Search backwards for next matching keyword.  This
 			keyword replaces the previous matching keyword.
 
+In the file used by the 'thesaurus' option each line in the file should
+contain words with similar meaning, separated by non-keyword characters (white
+space is preferred).  Maximum line length is 510 bytes.
+
+For an example, imagine the 'thesaurus' file has a line like this: >
+	angry furious mad enraged
+<Placing the cursor after the letters "ang" and typing CTRL-X CTRL-T would
+complete the word "angry"; subsequent presses would change the word to
+"furious", "mad" etc.
+
+Other uses include translation between two languages, or grouping API
+functions by keyword.
+
+An English word list was added to this github issue:
+https://github.com/vim/vim/issues/629#issuecomment-443293282
+Unpack thesaurus_pkg.zip, put the thesaurus.txt file somewhere, e.g.
+~/.vim/thesaurus/english.txt, and the 'thesaurus' option to this file name.
+
+					
+Completing keywords with 'thesaurusfunc'		*compl-thesaurusfunc*
+
+If the 'thesaurusfunc' option is set, then the user specified function is
+invoked to get the list of completion matches and the 'thesaurus' option is
+not used. See |complete-functions| for an explanation of how the function is
+invoked and what it should return.
+
+Here is an example that uses the "aiksaurus" command (provided by Magnus
+Groß): >
+
+	func Thesaur(findstart, base)
+	    if a:findstart
+		let line = getline('.')
+		let start = col('.') - 1
+		while start > 0 && line[start - 1] =~ '\a'
+		   let start -= 1
+		endwhile
+		return start
+	    else
+		let res = []
+		let h = ''
+		for l in split(system('aiksaurus '.shellescape(a:base)), '\n')
+		    if l[:3] == '=== '
+		    	let h = substitute(l[4:], ' =*$', '', '')
+		    elseif l[0] =~ '\a'
+			call extend(res, map(split(l, ', '), {_, val -> {'word': val, 'menu': '('.h.')'}}))
+		    endif
+		endfor
+		return res
+	    endif
+	endfunc
+
+	if has('patch-8.2.3520')
+	    set thesaurusfunc=Thesaur
+	endif
+
 
 Completing keywords in the current and included files	*compl-keyword*
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index aed0ad4..f884448 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -8027,35 +8027,28 @@
 'thesaurus' 'tsr'	string	(default "")
 			global or local to buffer |global-local|
 	List of file names, separated by commas, that are used to lookup words
-	for thesaurus completion commands |i_CTRL-X_CTRL-T|.
+	for thesaurus completion commands |i_CTRL-X_CTRL-T|.  See
+	|compl-thesaurus|.
 
-	Each line in the file should contain words with similar meaning,
-	separated by non-keyword characters (white space is preferred).
-	Maximum line length is 510 bytes.
-
-	An English word list was added to this github issue:
-	https://github.com/vim/vim/issues/629#issuecomment-443293282
-	Unpack thesaurus_pkg.zip, put the thesaurus.txt file somewhere, e.g.
-	~/.vim/thesaurus/english.txt, and the 'thesaurus' option to this file
-	name.
+	This option is not used if 'thesaurusfunc' is set, either for the
+	buffer or globally.
 
 	To include a comma in a file name precede it with a backslash.  Spaces
 	after a comma are ignored, otherwise spaces are included in the file
-	name.  See |option-backslash| about using backslashes.
-	The use of |:set+=| and |:set-=| is preferred when adding or removing
-	directories from the list.  This avoids problems when a future version
-	uses another default.
-	Backticks cannot be used in this option for security reasons.
+	name.  See |option-backslash| about using backslashes.  The use of
+	|:set+=| and |:set-=| is preferred when adding or removing directories
+	from the list.  This avoids problems when a future version uses
+	another default.  Backticks cannot be used in this option for security
+	reasons.
 
 						*'thesaurusfunc'* *tsrfu'*
 'thesaurusfunc' 'tsrfu'	string	(default: empty)
-			local to buffer
+			global or local to buffer |global-local|
 			{not available when compiled without the |+eval|
 			feature}
 	This option specifies a function to be used for thesaurus completion
-	with CTRL-X CTRL-T. |i_CTRL-X_CTRL-T|
-	See |complete-functions| for an explanation of how the function is
-	invoked and what it should return.
+	with CTRL-X CTRL-T. |i_CTRL-X_CTRL-T| See |compl-thesaurusfunc|.
+
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
diff --git a/src/insexpand.c b/src/insexpand.c
index bcaa3fd..6d5e556 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -301,7 +301,7 @@
 							)
 		 : (*curbuf->b_p_tsr == NUL && *p_tsr == NUL
 #ifdef FEAT_COMPL_FUNC
-		     && *curbuf->b_p_tsrfu == NUL
+		     && *curbuf->b_p_tsrfu == NUL && *p_tsrfu == NUL
 #endif
 		   ))
     {
@@ -2246,7 +2246,7 @@
 	case CTRL_X_OMNI:
 	    return curbuf->b_p_ofu;
 	case CTRL_X_THESAURUS:
-	    return curbuf->b_p_tsrfu;
+	    return *curbuf->b_p_tsrfu == NUL ? p_tsrfu : curbuf->b_p_tsrfu;
 	default:
 	    return (char_u *)"";
     }
@@ -2750,9 +2750,8 @@
 thesaurus_func_complete(int type UNUSED)
 {
 #ifdef FEAT_COMPL_FUNC
-    return (type == CTRL_X_THESAURUS
-		&& curbuf->b_p_tsrfu != NULL
-		&& *curbuf->b_p_tsrfu != NUL);
+    return type == CTRL_X_THESAURUS
+		&& (*curbuf->b_p_tsrfu != NUL || *p_tsrfu != NUL);
 #else
     return FALSE;
 #endif
diff --git a/src/option.c b/src/option.c
index 7d86ccf..e8afa7c 100644
--- a/src/option.c
+++ b/src/option.c
@@ -5131,6 +5131,11 @@
 	case PV_TSR:
 	    clear_string_option(&buf->b_p_tsr);
 	    break;
+#ifdef FEAT_COMPL_FUNC
+	case PV_TSRFU:
+	    clear_string_option(&buf->b_p_tsrfu);
+	    break;
+#endif
 	case PV_FP:
 	    clear_string_option(&buf->b_p_fp);
 	    break;
@@ -5225,6 +5230,9 @@
 #endif
 	    case PV_DICT: return (char_u *)&(curbuf->b_p_dict);
 	    case PV_TSR:  return (char_u *)&(curbuf->b_p_tsr);
+#ifdef FEAT_COMPL_FUNC
+	    case PV_TSRFU: return (char_u *)&(curbuf->b_p_tsrfu);
+#endif
 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
 	    case PV_BEXPR: return (char_u *)&(curbuf->b_p_bexpr);
 #endif
@@ -5305,6 +5313,10 @@
 				    ? (char_u *)&(curbuf->b_p_dict) : p->var;
 	case PV_TSR:	return *curbuf->b_p_tsr != NUL
 				    ? (char_u *)&(curbuf->b_p_tsr) : p->var;
+#ifdef FEAT_COMPL_FUNC
+	case PV_TSRFU:	return *curbuf->b_p_tsrfu != NUL
+				    ? (char_u *)&(curbuf->b_p_tsrfu) : p->var;
+#endif
 	case PV_FP:	return *curbuf->b_p_fp != NUL
 				    ? (char_u *)&(curbuf->b_p_fp) : p->var;
 #ifdef FEAT_QUICKFIX
@@ -5433,7 +5445,6 @@
 #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_tsrfu);
 #endif
 #ifdef FEAT_EVAL
 	case PV_TFU:	return (char_u *)&(curbuf->b_p_tfu);
@@ -5936,8 +5947,6 @@
 	    COPY_OPT_SCTX(buf, BV_CFU);
 	    buf->b_p_ofu = vim_strsave(p_ofu);
 	    COPY_OPT_SCTX(buf, BV_OFU);
-	    buf->b_p_tsrfu = vim_strsave(p_thsfu);
-	    COPY_OPT_SCTX(buf, BV_THSFU);
 #endif
 #ifdef FEAT_EVAL
 	    buf->b_p_tfu = vim_strsave(p_tfu);
@@ -6080,6 +6089,9 @@
 #endif
 	    buf->b_p_dict = empty_option;
 	    buf->b_p_tsr = empty_option;
+#ifdef FEAT_COMPL_FUNC
+	    buf->b_p_tsrfu = empty_option;
+#endif
 #ifdef FEAT_TEXTOBJ
 	    buf->b_p_qe = vim_strsave(p_qe);
 	    COPY_OPT_SCTX(buf, BV_QE);
diff --git a/src/option.h b/src/option.h
index 89cec94..21ee569 100644
--- a/src/option.h
+++ b/src/option.h
@@ -404,7 +404,7 @@
 #ifdef FEAT_COMPL_FUNC
 EXTERN char_u	*p_cfu;		// 'completefunc'
 EXTERN char_u	*p_ofu;		// 'omnifunc'
-EXTERN char_u	*p_thsfu;	// 'thesaurusfunc'
+EXTERN char_u	*p_tsrfu;	// 'thesaurusfunc'
 #endif
 EXTERN int	p_ci;		// 'copyindent'
 #if defined(FEAT_GUI) && defined(MACOS_X)
@@ -1222,7 +1222,7 @@
     , BV_TAGS
     , BV_TC
 #ifdef FEAT_COMPL_FUNC
-    , BV_THSFU
+    , BV_TSRFU
 #endif
     , BV_TS
     , BV_TW
diff --git a/src/optiondefs.h b/src/optiondefs.h
index 042f055..d85c233 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -141,7 +141,7 @@
 # define PV_TFU		OPT_BUF(BV_TFU)
 #endif
 #ifdef FEAT_COMPL_FUNC
-# define PV_THSFU		OPT_BUF(BV_THSFU)
+# define PV_TSRFU	OPT_BOTH(OPT_BUF(BV_TSRFU))
 #endif
 #define PV_TAGS		OPT_BOTH(OPT_BUF(BV_TAGS))
 #define PV_TC		OPT_BOTH(OPT_BUF(BV_TC))
@@ -2634,7 +2634,7 @@
 			    {(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 *)&p_tsrfu, PV_TSRFU,
 			    {(char_u *)"", (char_u *)0L}
 #else
 			    (char_u *)NULL, PV_NONE,
diff --git a/src/structs.h b/src/structs.h
index bd468a9..114135a 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2864,7 +2864,6 @@
 #ifdef FEAT_COMPL_FUNC
     char_u	*b_p_cfu;	// 'completefunc'
     char_u	*b_p_ofu;	// 'omnifunc'
-    char_u	*b_p_tsrfu;	// 'thesaurusfunc'
 #endif
 #ifdef FEAT_EVAL
     char_u	*b_p_tfu;	// 'tagfunc'
@@ -2967,6 +2966,9 @@
     unsigned	b_tc_flags;     // flags for 'tagcase'
     char_u	*b_p_dict;	// 'dictionary' local value
     char_u	*b_p_tsr;	// 'thesaurus' local value
+#ifdef FEAT_COMPL_FUNC
+    char_u	*b_p_tsrfu;	// 'thesaurusfunc' local value
+#endif
     long	b_p_ul;		// 'undolevels' local value
 #ifdef FEAT_PERSISTENT_UNDO
     int		b_p_udf;	// 'undofile'
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 2cce85c..8e4254b 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -920,16 +920,24 @@
 
 func Test_thesaurus_func()
   new
-  set thesaurus=
-  set thesaurusfunc=MyThesaurus
+  set thesaurus=notused
+  set thesaurusfunc=NotUsed
+  setlocal 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, '$'))
+
+  setlocal thesaurusfunc=NonExistingFunc
+  call assert_fails("normal $a\<C-X>\<C-T>", 'E117:')
+
+  setlocal thesaurusfunc=
   set thesaurusfunc=NonExistingFunc
   call assert_fails("normal $a\<C-X>\<C-T>", 'E117:')
-  set thesaurusfunc&
   %bw!
+
+  set thesaurusfunc=
+  set thesaurus=
 endfunc
 
 func Test_edit_CTRL_U()
diff --git a/src/version.c b/src/version.c
index 3013dfc..b1fc4dc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3528,
+/**/
     3527,
 /**/
     3526,
