To: vim_dev@googlegroups.com Subject: Patch 8.2.3957 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.3957 Problem: Error messages are spread out. Solution: Move more errors to errors.h. Files: src/errors.h, src/globals.h, src/arglist.c, src/bufwrite.c, src/evalvars.c, src/ex_cmds2.c, src/ex_docmd.c src/ex_eval.c, src/help.c, src/scriptfile.c, src/usercmd.c, src/userfunc.c, src/vim9cmds.c, src/vim9compile.c *** ../vim-8.2.3956/src/errors.h 2021-12-31 15:09:23.334140877 +0000 --- src/errors.h 2021-12-31 17:22:05.248678533 +0000 *************** *** 266,272 **** INIT(= N_("E121: Undefined variable: %s")); EXTERN char e_undefined_variable_char_str[] INIT(= N_("E121: Undefined variable: %c:%s")); ! EXTERN char e_function_str_already_exists_add_excl_to_replace[] INIT(= N_("E122: Function %s already exists, add ! to replace it")); EXTERN char e_undefined_function_str[] INIT(= N_("E123: Undefined function: %s")); --- 266,272 ---- INIT(= N_("E121: Undefined variable: %s")); EXTERN char e_undefined_variable_char_str[] INIT(= N_("E121: Undefined variable: %c:%s")); ! EXTERN char e_function_str_already_exists_add_bang_to_replace[] INIT(= N_("E122: Function %s already exists, add ! to replace it")); EXTERN char e_undefined_function_str[] INIT(= N_("E123: Undefined function: %s")); *************** *** 328,334 **** INIT(= N_("E150: Not a directory: %s")); EXTERN char e_no_match_str[] INIT(= N_("E151: No match: %s")); ! EXTERN char e_cannot_open_str_for_writing[] INIT(= N_("E152: Cannot open %s for writing")); EXTERN char e_unable_to_open_str_for_reading[] INIT(= N_("E153: Unable to open %s for reading")); --- 328,334 ---- INIT(= N_("E150: Not a directory: %s")); EXTERN char e_no_match_str[] INIT(= N_("E151: No match: %s")); ! EXTERN char e_cannot_open_str_for_writing_1[] INIT(= N_("E152: Cannot open %s for writing")); EXTERN char e_unable_to_open_str_for_reading[] INIT(= N_("E153: Unable to open %s for reading")); *************** *** 350,358 **** EXTERN char e_breakpoint_not_found_str[] INIT(= N_("E161: Breakpoint not found: %s")); #endif ! EXTERN char e_no_such_user_defined_command_str[] INIT(= N_("E184: No such user-defined command: %s")); #ifndef FEAT_DIGRAPHS EXTERN char e_no_digraphs_version[] INIT(= N_("E196: No digraphs in this version")); --- 350,419 ---- EXTERN char e_breakpoint_not_found_str[] INIT(= N_("E161: Breakpoint not found: %s")); #endif ! EXTERN char e_no_write_since_last_change_for_buffer_str[] ! INIT(= N_("E162: No write since last change for buffer \"%s\"")); ! EXTERN char e_there_is_only_one_file_to_edit[] ! INIT(= N_("E163: There is only one file to edit")); ! EXTERN char e_cannot_go_before_first_file[] ! INIT(= N_("E164: Cannot go before first file")); ! EXTERN char e_cannot_go_beyond_last_file[] ! INIT(= N_("E165: Cannot go beyond last file")); ! EXTERN char e_cant_open_linked_file_for_writing[] ! INIT(= N_("E166: Can't open linked file for writing")); ! EXTERN char e_scriptencoding_used_outside_of_sourced_file[] ! INIT(= N_("E167: :scriptencoding used outside of a sourced file")); ! EXTERN char e_finish_used_outside_of_sourced_file[] ! INIT(= N_("E168: :finish used outside of a sourced file")); ! EXTERN char e_command_too_recursive[] ! INIT(= N_("E169: Command too recursive")); ! EXTERN char e_missing_endwhile[] ! INIT(= N_("E170: Missing :endwhile")); ! EXTERN char e_missing_endfor[] ! INIT(= N_("E170: Missing :endfor")); ! EXTERN char e_missing_endif[] ! INIT(= N_("E171: Missing :endif")); ! EXTERN char e_missing_marker[] ! INIT(= N_("E172: Missing marker")); ! EXTERN char e_nr_more_file_to_edit[] ! INIT(= N_("E173: %d more file to edit")); ! EXTERN char e_nr_more_files_to_edit[] ! INIT(= N_("E173: %d more files to edit")); ! EXTERN char e_command_already_exists_add_bang_to_replace_it_str[] ! INIT(= N_("E174: Command already exists: add ! to replace it: %s")); ! EXTERN char e_no_attribute_specified[] ! INIT(= N_("E175: No attribute specified")); ! EXTERN char e_invalid_number_of_arguments[] ! INIT(= N_("E176: Invalid number of arguments")); ! EXTERN char e_count_cannot_be_specified_twice[] ! INIT(= N_("E177: Count cannot be specified twice")); ! EXTERN char e_invalid_default_value_for_count[] ! INIT(= N_("E178: Invalid default value for count")); ! EXTERN char e_argument_required_for_str[] ! INIT(= N_("E179: argument required for %s")); ! EXTERN char e_invalid_complete_value_str[] ! INIT(= N_("E180: Invalid complete value: %s")); ! EXTERN char e_invalid_attribute_str[] ! INIT(= N_("E181: Invalid attribute: %s")); ! EXTERN char e_invalid_command_name[] ! INIT(= N_("E182: Invalid command name")); ! EXTERN char e_user_defined_commands_must_start_with_an_uppercase_letter[] ! INIT(= N_("E183: User defined commands must start with an uppercase letter")); EXTERN char e_no_such_user_defined_command_str[] INIT(= N_("E184: No such user-defined command: %s")); + EXTERN char e_cannot_find_color_scheme_str[] + INIT(= N_("E185: Cannot find color scheme '%s'")); + EXTERN char e_no_previous_directory[] + INIT(= N_("E186: No previous directory")); + EXTERN char e_directory_unknown[] + INIT(= N_("E187: Directory unknown")); + EXTERN char e_obtaining_window_position_not_implemented_for_this_platform[] + INIT(= N_("E188: Obtaining window position not implemented for this platform")); + EXTERN char e_str_exists_add_bang_to_override[] + INIT(= N_("E189: \"%s\" exists (add ! to override)")); + EXTERN char e_cannot_open_str_for_writing_2[] + INIT(= N_("E190: Cannot open \"%s\" for writing")); + + #ifndef FEAT_DIGRAPHS EXTERN char e_no_digraphs_version[] INIT(= N_("E196: No digraphs in this version")); *** ../vim-8.2.3956/src/globals.h 2021-12-31 15:09:23.334140877 +0000 --- src/globals.h 2021-12-31 16:59:16.482821086 +0000 *************** *** 1606,1619 **** EXTERN char e_abort[] INIT(= N_("E470: Command aborted")); EXTERN char e_argreq[] INIT(= N_("E471: Argument required")); #ifdef FEAT_EVAL - EXTERN char e_endif[] INIT(= N_("E171: Missing :endif")); EXTERN char e_catch[] INIT(= N_("E603: :catch without :try")); EXTERN char e_finally[] INIT(= N_("E606: :finally without :try")); EXTERN char e_finally_dup[] INIT(= N_("E607: multiple :finally")); EXTERN char e_endtry[] INIT(= N_("E600: Missing :endtry")); EXTERN char e_no_endtry[] INIT(= N_("E602: :endtry without :try")); - EXTERN char e_endwhile[] INIT(= N_("E170: Missing :endwhile")); - EXTERN char e_endfor[] INIT(= N_("E170: Missing :endfor")); EXTERN char e_while[] INIT(= N_("E588: :endwhile without :while")); EXTERN char e_for[] INIT(= N_("E588: :endfor without :for")); #endif --- 1606,1616 ---- *** ../vim-8.2.3956/src/arglist.c 2021-12-24 20:27:58.029861532 +0000 --- src/arglist.c 2021-12-31 16:48:24.652130572 +0000 *************** *** 673,683 **** if (argn < 0 || argn >= ARGCOUNT) { if (ARGCOUNT <= 1) ! emsg(_("E163: There is only one file to edit")); else if (argn < 0) ! emsg(_("E164: Cannot go before first file")); else ! emsg(_("E165: Cannot go beyond last file")); } else { --- 673,683 ---- if (argn < 0 || argn >= ARGCOUNT) { if (ARGCOUNT <= 1) ! emsg(_(e_there_is_only_one_file_to_edit)); else if (argn < 0) ! emsg(_(e_cannot_go_before_first_file)); else ! emsg(_(e_cannot_go_beyond_last_file)); } else { *** ../vim-8.2.3956/src/bufwrite.c 2021-12-05 21:46:31.172891155 +0000 --- src/bufwrite.c 2021-12-31 16:49:30.263991776 +0000 *************** *** 1821,1827 **** || (mch_lstat((char *)fname, &st) == 0 && (st.st_dev != st_old.st_dev || st.st_ino != st_old.st_ino))) ! errmsg = (char_u *)_("E166: Can't open linked file for writing"); else #endif { --- 1821,1828 ---- || (mch_lstat((char *)fname, &st) == 0 && (st.st_dev != st_old.st_dev || st.st_ino != st_old.st_ino))) ! errmsg = ! (char_u *)_(e_cant_open_linked_file_for_writing); else #endif { *** ../vim-8.2.3956/src/evalvars.c 2021-12-24 21:36:08.428028943 +0000 --- src/evalvars.c 2021-12-31 17:01:19.126585813 +0000 *************** *** 638,644 **** marker = dot; else { ! emsg(_("E172: Missing marker")); return NULL; } } --- 638,644 ---- marker = dot; else { ! emsg(_(e_missing_marker)); return NULL; } } *** ../vim-8.2.3956/src/ex_cmds2.c 2021-11-12 11:25:06.291264320 +0000 --- src/ex_cmds2.c 2021-12-31 16:45:12.648552025 +0000 *************** *** 367,373 **** buf->b_fname) : #endif ! semsg(_("E162: No write since last change for buffer \"%s\""), buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname)) { save = no_wait_return; --- 367,373 ---- buf->b_fname) : #endif ! semsg(_(e_no_write_since_last_change_for_buffer_str), buf_spname(buf) != NULL ? buf_spname(buf) : buf->b_fname)) { save = no_wait_return; *** ../vim-8.2.3956/src/ex_docmd.c 2021-12-30 13:45:53.678853155 +0000 --- src/ex_docmd.c 2021-12-31 17:20:57.640792804 +0000 *************** *** 677,683 **** #endif ) { ! emsg(_("E169: Command too recursive")); #ifdef FEAT_EVAL // When converting to an exception, we do not include the command name // since this is not an error of the specific command. --- 677,683 ---- #endif ) { ! emsg(_(e_command_too_recursive)); #ifdef FEAT_EVAL // When converting to an exception, we do not include the command name // since this is not an error of the specific command. *************** *** 1214,1224 **** if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY) emsg(_(e_endtry)); else if (cstack.cs_flags[cstack.cs_idx] & CSF_WHILE) ! emsg(_(e_endwhile)); else if (cstack.cs_flags[cstack.cs_idx] & CSF_FOR) ! emsg(_(e_endfor)); else ! emsg(_(e_endif)); } /* --- 1214,1224 ---- if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY) emsg(_(e_endtry)); else if (cstack.cs_flags[cstack.cs_idx] & CSF_WHILE) ! emsg(_(e_missing_endwhile)); else if (cstack.cs_flags[cstack.cs_idx] & CSF_FOR) ! emsg(_(e_missing_endfor)); else ! emsg(_(e_missing_endif)); } /* *************** *** 5561,5568 **** return FAIL; } #endif ! semsg(NGETTEXT("E173: %d more file to edit", ! "E173: %d more files to edit", n), n); quitmore = 2; // next try to quit is allowed } return FAIL; --- 5561,5568 ---- return FAIL; } #endif ! semsg(NGETTEXT(e_nr_more_file_to_edit, ! e_nr_more_files_to_edit , n), n); quitmore = 2; // next try to quit is allowed } return FAIL; *************** *** 5609,5615 **** #endif } else if (load_colors(eap->arg) == FAIL) ! semsg(_("E185: Cannot find color scheme '%s'"), eap->arg); #ifdef FEAT_VTP else if (has_vtp_working()) --- 5609,5615 ---- #endif } else if (load_colors(eap->arg) == FAIL) ! semsg(_(e_cannot_find_color_scheme_str), eap->arg); #ifdef FEAT_VTP else if (has_vtp_working()) *************** *** 7377,7383 **** pdir = get_prevdir(scope); if (pdir == NULL) { ! emsg(_("E186: No previous directory")); return FALSE; } new_dir = pdir; --- 7377,7383 ---- pdir = get_prevdir(scope); if (pdir == NULL) { ! emsg(_(e_no_previous_directory)); return FALSE; } new_dir = pdir; *************** *** 7510,7516 **** msg((char *)NameBuff); } else ! emsg(_("E187: Unknown")); } /* --- 7510,7516 ---- msg((char *)NameBuff); } else ! emsg(_(e_directory_unknown)); } /* *************** *** 7716,7722 **** } else # endif ! emsg(_("E188: Obtaining window position not implemented for this platform")); } else { --- 7716,7722 ---- } else # endif ! emsg(_(e_obtaining_window_position_not_implemented_for_this_platform)); } else { *************** *** 8303,8314 **** #endif if (!forceit && *mode != 'a' && vim_fexists(fname)) { ! semsg(_("E189: \"%s\" exists (add ! to override)"), fname); return NULL; } if ((fd = mch_fopen((char *)fname, mode)) == NULL) ! semsg(_("E190: Cannot open \"%s\" for writing"), fname); return fd; } --- 8303,8314 ---- #endif if (!forceit && *mode != 'a' && vim_fexists(fname)) { ! semsg(_(e_str_exists_add_bang_to_override), fname); return NULL; } if ((fd = mch_fopen((char *)fname, mode)) == NULL) ! semsg(_(e_cannot_open_str_for_writing_2), fname); return fd; } *** ../vim-8.2.3956/src/ex_eval.c 2021-11-23 14:52:03.029446451 +0000 --- src/ex_eval.c 2021-12-31 16:59:50.446755715 +0000 *************** *** 1413,1419 **** if (!(fl & (CSF_WHILE | CSF_FOR))) { if (!(fl & CSF_TRY)) ! eap->errmsg = _(e_endif); else if (fl & CSF_FINALLY) eap->errmsg = _(e_endtry); // Try to find the matching ":while" and report what's missing. --- 1413,1419 ---- if (!(fl & (CSF_WHILE | CSF_FOR))) { if (!(fl & CSF_TRY)) ! eap->errmsg = _(e_missing_endif); else if (fl & CSF_FINALLY) eap->errmsg = _(e_endtry); // Try to find the matching ":while" and report what's missing. *************** *** 2484,2493 **** get_end_emsg(cstack_T *cstack) { if (cstack->cs_flags[cstack->cs_idx] & CSF_WHILE) ! return _(e_endwhile); if (cstack->cs_flags[cstack->cs_idx] & CSF_FOR) ! return _(e_endfor); ! return _(e_endif); } --- 2484,2493 ---- get_end_emsg(cstack_T *cstack) { if (cstack->cs_flags[cstack->cs_idx] & CSF_WHILE) ! return _(e_missing_endwhile); if (cstack->cs_flags[cstack->cs_idx] & CSF_FOR) ! return _(e_missing_endfor); ! return _(e_missing_endif); } *** ../vim-8.2.3956/src/help.c 2021-12-31 15:09:23.334140877 +0000 --- src/help.c 2021-12-31 17:21:50.476703540 +0000 *************** *** 995,1001 **** if (fd_tags == NULL) { if (!ignore_writeerr) ! semsg(_(e_cannot_open_str_for_writing), NameBuff); FreeWild(filecount, files); return; } --- 995,1001 ---- if (fd_tags == NULL) { if (!ignore_writeerr) ! semsg(_(e_cannot_open_str_for_writing_1), NameBuff); FreeWild(filecount, files); return; } *** ../vim-8.2.3956/src/scriptfile.c 2021-12-27 17:21:38.020449109 +0000 --- src/scriptfile.c 2021-12-31 16:50:48.091829878 +0000 *************** *** 1919,1925 **** if (!getline_equal(eap->getline, eap->cookie, getsourceline)) { ! emsg(_("E167: :scriptencoding used outside of a sourced file")); return; } --- 1919,1925 ---- if (!getline_equal(eap->getline, eap->cookie, getsourceline)) { ! emsg(_(e_scriptencoding_used_outside_of_sourced_file)); return; } *************** *** 1983,1989 **** if (getline_equal(eap->getline, eap->cookie, getsourceline)) do_finish(eap, FALSE); else ! emsg(_("E168: :finish used outside of a sourced file")); } /* --- 1983,1989 ---- if (getline_equal(eap->getline, eap->cookie, getsourceline)) do_finish(eap, FALSE); else ! emsg(_(e_finish_used_outside_of_sourced_file)); } /* *** ../vim-8.2.3956/src/usercmd.c 2021-12-10 21:46:05.035979827 +0000 --- src/usercmd.c 2021-12-31 17:11:27.405716339 +0000 *************** *** 678,684 **** if (command_complete[i].expand == 0) { ! semsg(_("E180: Invalid complete value: %s"), value); return FAIL; } --- 678,684 ---- if (command_complete[i].expand == 0) { ! semsg(_(e_invalid_complete_value_str), value); return FAIL; } *************** *** 726,732 **** if (len == 0) { ! emsg(_("E175: No attribute specified")); return FAIL; } --- 726,732 ---- if (len == 0) { ! emsg(_(e_no_attribute_specified)); return FAIL; } *************** *** 781,787 **** else { wrong_nargs: ! emsg(_("E176: Invalid number of arguments")); return FAIL; } } --- 781,787 ---- else { wrong_nargs: ! emsg(_(e_invalid_number_of_arguments)); return FAIL; } } *************** *** 796,802 **** if (*def >= 0) { two_count: ! emsg(_("E177: Count cannot be specified twice")); return FAIL; } --- 796,802 ---- if (*def >= 0) { two_count: ! emsg(_(e_count_cannot_be_specified_twice)); return FAIL; } *************** *** 806,812 **** if (p != val + vallen || vallen == 0) { invalid_count: ! emsg(_("E178: Invalid default value for count")); return FAIL; } } --- 806,812 ---- if (p != val + vallen || vallen == 0) { invalid_count: ! emsg(_(e_invalid_default_value_for_count)); return FAIL; } } *************** *** 840,846 **** { if (val == NULL) { ! emsg(_("E179: argument required for -complete")); return FAIL; } --- 840,846 ---- { if (val == NULL) { ! semsg(_(e_argument_required_for_str), "-complete"); return FAIL; } *************** *** 853,859 **** *argt |= EX_RANGE; if (val == NULL) { ! emsg(_("E179: argument required for -addr")); return FAIL; } if (parse_addr_type_arg(val, (int)vallen, addr_type_arg) == FAIL) --- 853,859 ---- *argt |= EX_RANGE; if (val == NULL) { ! semsg(_(e_argument_required_for_str), "-addr"); return FAIL; } if (parse_addr_type_arg(val, (int)vallen, addr_type_arg) == FAIL) *************** *** 865,871 **** { char_u ch = attr[len]; attr[len] = '\0'; ! semsg(_("E181: Invalid attribute: %s"), attr); attr[len] = ch; return FAIL; } --- 865,871 ---- { char_u ch = attr[len]; attr[len] = '\0'; ! semsg(_(e_invalid_attribute_str), attr); attr[len] = ch; return FAIL; } *************** *** 945,951 **** #endif ) { ! semsg(_("E174: Command already exists: add ! to replace it: %s"), name); goto fail; } --- 945,951 ---- #endif ) { ! semsg(_(e_command_already_exists_add_bang_to_replace_it_str), name); goto fail; } *************** *** 1085,1091 **** ++p; if (!ends_excmd2(eap->arg, p) && !VIM_ISWHITE(*p)) { ! emsg(_("E182: Invalid command name")); return; } end = p; --- 1085,1091 ---- ++p; if (!ends_excmd2(eap->arg, p) && !VIM_ISWHITE(*p)) { ! emsg(_(e_invalid_command_name)); return; } end = p; *************** *** 1097,1103 **** if (!has_attr && ends_excmd2(eap->arg, p)) uc_list(name, end - name); else if (!ASCII_ISUPPER(*name)) ! emsg(_("E183: User defined commands must start with an uppercase letter")); else if ((name_len == 1 && *name == 'X') || (name_len <= 4 && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0)) --- 1097,1103 ---- if (!has_attr && ends_excmd2(eap->arg, p)) uc_list(name, end - name); else if (!ASCII_ISUPPER(*name)) ! emsg(_(e_user_defined_commands_must_start_with_an_uppercase_letter)); else if ((name_len == 1 && *name == 'X') || (name_len <= 4 && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0)) *** ../vim-8.2.3956/src/userfunc.c 2021-12-30 13:28:56.812073798 +0000 --- src/userfunc.c 2021-12-31 17:05:47.366200353 +0000 *************** *** 2360,2366 **** if (fp != NULL) { // TODO: handle ! to overwrite ! semsg(_(e_function_str_already_exists_add_excl_to_replace), global); return FAIL; } --- 2360,2366 ---- if (fp != NULL) { // TODO: handle ! to overwrite ! semsg(_(e_function_str_already_exists_add_bang_to_replace), global); return FAIL; } *************** *** 4380,4386 **** if (fudi.fd_dict != NULL && fudi.fd_newkey == NULL) emsg(_(e_funcdict)); else if (name != NULL && find_func(name, is_global, NULL) != NULL) ! emsg_funcname(e_function_str_already_exists_add_excl_to_replace, name); } if (!eap->skip && did_emsg) --- 4380,4386 ---- if (fudi.fd_dict != NULL && fudi.fd_newkey == NULL) emsg(_(e_funcdict)); else if (name != NULL && find_func(name, is_global, NULL) != NULL) ! emsg_funcname(e_function_str_already_exists_add_bang_to_replace, name); } if (!eap->skip && did_emsg) *************** *** 4438,4444 **** if (vim9script) emsg_funcname(e_name_already_defined_str, name); else ! emsg_funcname(e_function_str_already_exists_add_excl_to_replace, name); goto erret; } if (fp->uf_calls > 0) --- 4438,4444 ---- if (vim9script) emsg_funcname(e_name_already_defined_str, name); else ! emsg_funcname(e_function_str_already_exists_add_bang_to_replace, name); goto erret; } if (fp->uf_calls > 0) *** ../vim-8.2.3956/src/vim9cmds.c 2021-12-27 17:21:38.024449102 +0000 --- src/vim9cmds.c 2021-12-31 16:59:53.674749498 +0000 *************** *** 1520,1530 **** if (scope == NULL) emsg(_(e_no_endtry)); else if (scope->se_type == WHILE_SCOPE) ! emsg(_(e_endwhile)); else if (scope->se_type == FOR_SCOPE) ! emsg(_(e_endfor)); else ! emsg(_(e_endif)); return NULL; } --- 1520,1530 ---- if (scope == NULL) emsg(_(e_no_endtry)); else if (scope->se_type == WHILE_SCOPE) ! emsg(_(e_missing_endwhile)); else if (scope->se_type == FOR_SCOPE) ! emsg(_(e_missing_endfor)); else ! emsg(_(e_missing_endif)); return NULL; } *** ../vim-8.2.3956/src/vim9compile.c 2021-12-31 14:06:41.409853997 +0000 --- src/vim9compile.c 2021-12-31 16:59:57.054743021 +0000 *************** *** 3109,3119 **** if (cctx.ctx_scope != NULL) { if (cctx.ctx_scope->se_type == IF_SCOPE) ! emsg(_(e_endif)); else if (cctx.ctx_scope->se_type == WHILE_SCOPE) ! emsg(_(e_endwhile)); else if (cctx.ctx_scope->se_type == FOR_SCOPE) ! emsg(_(e_endfor)); else emsg(_(e_missing_rcurly)); goto erret; --- 3109,3119 ---- if (cctx.ctx_scope != NULL) { if (cctx.ctx_scope->se_type == IF_SCOPE) ! emsg(_(e_missing_endif)); else if (cctx.ctx_scope->se_type == WHILE_SCOPE) ! emsg(_(e_missing_endwhile)); else if (cctx.ctx_scope->se_type == FOR_SCOPE) ! emsg(_(e_missing_endfor)); else emsg(_(e_missing_rcurly)); goto erret; *** ../vim-8.2.3956/src/version.c 2021-12-31 15:21:49.661260891 +0000 --- src/version.c 2021-12-31 17:24:50.848396127 +0000 *************** *** 751,752 **** --- 751,754 ---- { /* Add new patch number below this line */ + /**/ + 3957, /**/ -- Apathy Error: Don't bother striking any key. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///