patch 8.2.4727: unused code

Problem:    Unused code.
Solution:   Remove code and add #ifdefs. (Dominique Pellé, closes #10136)
diff --git a/src/errors.h b/src/errors.h
index 228a1d2..b95644a 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -1152,8 +1152,10 @@
 #endif
 EXTERN char e_ambiguous_use_of_user_defined_command[]
 	INIT(= N_("E464: Ambiguous use of user-defined command"));
+#ifdef FEAT_EVAL
 EXTERN char e_ambiguous_use_of_user_defined_command_str[]
 	INIT(= N_("E464: Ambiguous use of user-defined command: %s"));
+#endif
 EXTERN char e_winsize_requires_two_number_arguments[]
 	INIT(= N_("E465: :winsize requires two number arguments"));
 EXTERN char e_winpos_requires_two_number_arguments[]
@@ -1554,14 +1556,9 @@
 EXTERN char e_unknown_printer_font_str[]
 	INIT(= N_("E613: Unknown printer font: %s"));
 #endif
-#ifdef FEAT_BROWSE
-EXTERN char e_vim_selfile_cant_return_to_current_directory[]
-	INIT(= N_("E614: vim_SelFile: can't return to current directory"));
-EXTERN char e_vim_selfile_cant_get_current_directory[]
-	INIT(= N_("E615: vim_SelFile: can't get current directory"));
-EXTERN char e_vim_selfile_cant_get_font_str[]
-	INIT(= N_("E616: vim_SelFile: can't get font %s"));
-#endif
+// E614 unused
+// E615 unused
+// E616 unused
 #ifdef FEAT_GUI_GTK
 EXTERN char e_cannot_be_changed_in_gtk_GUI[]
 	INIT(= N_("E617: Cannot be changed in the GTK GUI"));
@@ -2809,8 +2806,7 @@
 	INIT(= N_("E1084: Cannot delete Vim9 script function %s"));
 EXTERN char e_not_callable_type_str[]
 	INIT(= N_("E1085: Not a callable type: %s"));
-EXTERN char e_function_reference_invalid[]
-	INIT(= N_("E1086: Function reference invalid"));
+// E1086 unused
 EXTERN char e_cannot_use_index_when_declaring_variable[]
 	INIT(= N_("E1087: Cannot use an index when declaring a variable"));
 EXTERN char e_script_cannot_import_itself[]
@@ -3115,16 +3111,20 @@
 	INIT(= N_("E1216: digraph_setlist() argument must be a list of lists with two items"));
 #endif
 #ifdef FEAT_EVAL
+# ifdef FEAT_JOB_CHANNEL
 EXTERN char e_chan_or_job_required_for_argument_nr[]
 	INIT(= N_("E1217: Channel or Job required for argument %d"));
 EXTERN char e_job_required_for_argument_nr[]
 	INIT(= N_("E1218: Job required for argument %d"));
+# endif
 EXTERN char e_float_or_number_required_for_argument_nr[]
 	INIT(= N_("E1219: Float or Number required for argument %d"));
 EXTERN char e_string_or_number_required_for_argument_nr[]
 	INIT(= N_("E1220: String or Number required for argument %d"));
+# ifdef FEAT_JOB_CHANNEL
 EXTERN char e_string_or_blob_required_for_argument_nr[]
 	INIT(= N_("E1221: String or Blob required for argument %d"));
+# endif
 EXTERN char e_string_or_list_required_for_argument_nr[]
 	INIT(= N_("E1222: String or List required for argument %d"));
 EXTERN char e_string_or_dict_required_for_argument_nr[]
@@ -3157,8 +3157,7 @@
 EXTERN char e_legacy_must_be_followed_by_command[]
 	INIT(= N_("E1234: legacy must be followed by a command"));
 #ifdef FEAT_EVAL
-EXTERN char e_function_reference_is_not_set[]
-	INIT(= N_("E1235: Function reference is not set"));
+// E1235 unused
 EXTERN char e_cannot_use_str_itself_it_is_imported[]
 	INIT(= N_("E1236: Cannot use %s itself, it is imported"));
 #endif
diff --git a/src/option.c b/src/option.c
index f636985..cfd6817 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4463,6 +4463,7 @@
     return (char_u *)NULL;
 }
 
+#if defined(FEAT_QUICKFIX) || defined(PROTO)
     int
 is_option_allocated(char *name)
 {
@@ -4470,6 +4471,7 @@
 
     return idx >= 0 && (options[idx].flags & P_ALLOCED);
 }
+#endif
 
 /*
  * Translate a string like "t_xx", "<t_xx>" or "<S-Tab>" to a key number.
@@ -7179,6 +7181,7 @@
     return buf->b_bkc_flags ? buf->b_bkc_flags : bkc_flags;
 }
 
+#if defined(FEAT_LINEBREAK) || defined(PROTO)
 /*
  * Get the local or global value of 'formatlistpat'.
  */
@@ -7189,6 +7192,7 @@
 	return p_flp;
     return buf->b_p_flp;
 }
+#endif
 
 /*
  * Get the local or global value of the 'virtualedit' flags.
diff --git a/src/proto/search.pro b/src/proto/search.pro
index bdd9213..0548fca 100644
--- a/src/proto/search.pro
+++ b/src/proto/search.pro
@@ -42,5 +42,4 @@
 void f_matchfuzzypos(typval_T *argvars, typval_T *rettv);
 int fuzzy_match_str(char_u *str, char_u *pat);
 int fuzzymatches_to_strmatches(fuzmatch_str_T *fuzmatch, char_u ***matches, int	count, int funcsort);
-void fuzmatch_str_free(fuzmatch_str_T *fuzmatch, int count);
 /* vim: set ft=c : */
diff --git a/src/search.c b/src/search.c
index a66075f..6a52415 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1377,8 +1377,8 @@
 	     */
 	    if (*p == '+' || *p == '-' || VIM_ISDIGIT(*p))
 		spats[0].off.line = TRUE;
-	    else if ((options & SEARCH_OPT) &&
-					(*p == 'e' || *p == 's' || *p == 'b'))
+	    else if ((options & SEARCH_OPT)
+				      && (*p == 'e' || *p == 's' || *p == 'b'))
 	    {
 		if (*p == 'e')		// end
 		    spats[0].off.end = SEARCH_END;
@@ -1404,9 +1404,9 @@
 	    pat = p;			    // put pat after search command
 	}
 
-	if ((options & SEARCH_ECHO) && messaging() &&
-		!msg_silent &&
-		(!cmd_silent || !shortmess(SHM_SEARCHCOUNT)))
+	if ((options & SEARCH_ECHO) && messaging()
+		&& !msg_silent
+		&& (!cmd_silent || !shortmess(SHM_SEARCHCOUNT)))
 	{
 	    char_u	*trunc;
 	    char_u	off_buf[40];
@@ -2450,8 +2450,8 @@
 	/*
 	 * If FM_BLOCKSTOP given, stop at a '{' or '}' in column 0.
 	 */
-	if (pos.col == 0 && (flags & FM_BLOCKSTOP) &&
-					 (linep[0] == '{' || linep[0] == '}'))
+	if (pos.col == 0 && (flags & FM_BLOCKSTOP)
+				       && (linep[0] == '{' || linep[0] == '}'))
 	{
 	    if (linep[0] == findc && count == 0)	// match!
 		return &pos;
@@ -2653,8 +2653,8 @@
 			    pos.col -= 2;
 			    break;
 			}
-			else if (linep[pos.col - 2] == '\\' &&
-				    pos.col > 2 && linep[pos.col - 3] == '\'')
+			else if (linep[pos.col - 2] == '\\'
+				  && pos.col > 2 && linep[pos.col - 3] == '\'')
 			{
 			    pos.col -= 3;
 			    break;
@@ -2663,8 +2663,8 @@
 		}
 		else if (linep[pos.col + 1])	// forward search
 		{
-		    if (linep[pos.col + 1] == '\\' &&
-			    linep[pos.col + 2] && linep[pos.col + 3] == '\'')
+		    if (linep[pos.col + 1] == '\\'
+			   && linep[pos.col + 2] && linep[pos.col + 3] == '\'')
 		    {
 			pos.col += 3;
 			break;
@@ -3471,8 +3471,9 @@
 		    if (fullpathcmp(new_fname, files[i].name, TRUE, TRUE)
 								    & FPC_SAME)
 		    {
-			if (type != CHECK_PATH &&
-				action == ACTION_SHOW_ALL && files[i].matched)
+			if (type != CHECK_PATH
+				&& action == ACTION_SHOW_ALL
+				&& files[i].matched)
 			{
 			    msg_putchar('\n');	    // cursor below last one
 			    if (!got_int)	    // don't display if 'q'
@@ -4678,8 +4679,8 @@
 	rettv.v_type = VAR_UNKNOWN;
 	if (li->li_tv.v_type == VAR_STRING)	// list of strings
 	    itemstr = li->li_tv.vval.v_string;
-	else if (li->li_tv.v_type == VAR_DICT &&
-				(key != NULL || item_cb->cb_name != NULL))
+	else if (li->li_tv.v_type == VAR_DICT
+				  && (key != NULL || item_cb->cb_name != NULL))
 	{
 	    // For a dict, either use the specified key to lookup the string or
 	    // use the specified callback function to get the string.
@@ -4786,8 +4787,8 @@
 	    {
 		if (ptrs[i].score == SCORE_NONE)
 		    break;
-		if (ptrs[i].lmatchpos != NULL &&
-			list_append_list(l, ptrs[i].lmatchpos) == FAIL)
+		if (ptrs[i].lmatchpos != NULL
+			     && list_append_list(l, ptrs[i].lmatchpos) == FAIL)
 		    goto done;
 	    }
 
@@ -5050,16 +5051,3 @@
 
     return OK;
 }
-
-/*
- * Free a list of fuzzy string matches.
- */
-    void
-fuzmatch_str_free(fuzmatch_str_T *fuzmatch, int count)
-{
-    if (count <= 0 || fuzmatch == NULL)
-	return;
-    while (count--)
-	vim_free(fuzmatch[count].str);
-    vim_free(fuzmatch);
-}
diff --git a/src/version.c b/src/version.c
index 8b4f302..ff5f399 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4727,
+/**/
     4726,
 /**/
     4725,