/* vi:set ts=8 sts=4 sw=4 noet:
 *
 * VIM - Vi IMproved	by Bram Moolenaar
 *
 * Do ":help uganda"  in Vim to read copying and usage conditions.
 * Do ":help credits" in Vim to see a list of people who contributed.
 */

/*
 * Definition of error messages, sorted on error number.
 */

EXTERN char e_interrupted[]
	INIT(= N_("Interrupted"));

EXTERN char e_backslash_should_be_followed_by[]
	INIT(= N_("E10: \\ should be followed by /, ? or &"));
#ifdef FEAT_CMDWIN
EXTERN char e_invalid_in_cmdline_window[]
	INIT(= N_("E11: Invalid in command-line window; <CR> executes, CTRL-C quits"));
#endif
EXTERN char e_command_not_allowed_from_vimrc_in_current_dir_or_tag_search[]
	INIT(= N_("E12: Command not allowed from exrc/vimrc in current dir or tag search"));
EXTERN char e_file_exists[]
	INIT(= N_("E13: File exists (add ! to override)"));
// E14 unused
#ifdef FEAT_EVAL
EXTERN char e_invalid_expression_str[]
	INIT(= N_("E15: Invalid expression: \"%s\""));
#endif
EXTERN char e_invalid_range[]
	INIT(= N_("E16: Invalid range"));
#if defined(UNIX) || defined(FEAT_SYN_HL) \
	    || defined(FEAT_SPELL) || defined(FEAT_EVAL)
EXTERN char e_str_is_directory[]
	INIT(= N_("E17: \"%s\" is a directory"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_unexpected_characters_in_let[]
	INIT(= N_("E18: Unexpected characters in :let"));
EXTERN char e_unexpected_characters_in_assignment[]
	INIT(= N_("E18: Unexpected characters in assignment"));
#endif
EXTERN char e_mark_has_invalid_line_number[]
	INIT(= N_("E19: Mark has invalid line number"));
EXTERN char e_mark_not_set[]
	INIT(= N_("E20: Mark not set"));
EXTERN char e_cannot_make_changes_modifiable_is_off[]
	INIT(= N_("E21: Cannot make changes, 'modifiable' is off"));
EXTERN char e_scripts_nested_too_deep[]
	INIT(= N_("E22: Scripts nested too deep"));
EXTERN char e_no_alternate_file[]
	INIT(= N_("E23: No alternate file"));
EXTERN char e_no_such_abbreviation[]
	INIT(= N_("E24: No such abbreviation"));
#if !defined(FEAT_GUI) || defined(VIMDLL)
EXTERN char e_gui_cannot_be_used_not_enabled_at_compile_time[]
	INIT(= N_("E25: GUI cannot be used: Not enabled at compile time"));
#endif
#ifndef FEAT_RIGHTLEFT
EXTERN char e_hebrew_cannot_be_used_not_enabled_at_compile_time[]
	INIT(= N_("E26: Hebrew cannot be used: Not enabled at compile time\n"));
#endif
EXTERN char e_farsi_support_has_been_removed[]
	INIT(= N_("E27: Farsi support has been removed\n"));
#if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_SYN_HL)
EXTERN char e_no_such_highlight_group_name_str[]
	INIT(= N_("E28: No such highlight group name: %s"));
#endif
EXTERN char e_no_inserted_text_yet[]
	INIT(= N_("E29: No inserted text yet"));
EXTERN char e_no_previous_command_line[]
	INIT(= N_("E30: No previous command line"));
EXTERN char e_no_such_mapping[]
	INIT(= N_("E31: No such mapping"));
EXTERN char e_no_file_name[]
	INIT(= N_("E32: No file name"));
EXTERN char e_no_previous_substitute_regular_expression[]
	INIT(= N_("E33: No previous substitute regular expression"));
EXTERN char e_no_previous_command[]
	INIT(= N_("E34: No previous command"));
EXTERN char e_no_previous_regular_expression[]
	INIT(= N_("E35: No previous regular expression"));
EXTERN char e_not_enough_room[]
	INIT(= N_("E36: Not enough room"));
EXTERN char e_no_write_since_last_change[]
	INIT(= N_("E37: No write since last change"));
EXTERN char e_no_write_since_last_change_add_bang_to_override[]
	INIT(= N_("E37: No write since last change (add ! to override)"));
EXTERN char e_null_argument[]
	INIT(= N_("E38: Null argument"));
#if defined(FEAT_DIGRAPHS) || defined(FEAT_TIMERS) || defined(FEAT_EVAL)
EXTERN char e_number_expected[]
	INIT(= N_("E39: Number expected"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_cant_open_errorfile_str[]
	INIT(= N_("E40: Can't open errorfile %s"));
#endif
EXTERN char e_out_of_memory[]
	INIT(= N_("E41: Out of memory!"));
#ifdef FEAT_QUICKFIX
EXTERN char e_no_errors[]
	INIT(= N_("E42: No Errors"));
#endif
EXTERN char e_damaged_match_string[]
	INIT(= N_("E43: Damaged match string"));
EXTERN char e_corrupted_regexp_program[]
	INIT(= N_("E44: Corrupted regexp program"));
EXTERN char e_readonly_option_is_set_add_bang_to_override[]
	INIT(= N_("E45: 'readonly' option is set (add ! to override)"));
#ifdef FEAT_EVAL
EXTERN char e_cannot_change_readonly_variable[]
	INIT(= N_("E46: Cannot change read-only variable"));
EXTERN char e_cannot_change_readonly_variable_str[]
	INIT(= N_("E46: Cannot change read-only variable \"%s\""));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_error_while_reading_errorfile[]
	INIT(= N_("E47: Error while reading errorfile"));
#endif
#ifdef HAVE_SANDBOX
EXTERN char e_not_allowed_in_sandbox[]
	INIT(= N_("E48: Not allowed in sandbox"));
#endif
EXTERN char e_invalid_scroll_size[]
	INIT(= N_("E49: Invalid scroll size"));
#ifdef FEAT_SYN_HL
EXTERN char e_too_many_z[]
	INIT(= N_("E50: Too many \\z("));
#endif
EXTERN char e_too_many_str_open[]
	INIT(= N_("E51: Too many %s("));
#ifdef FEAT_SYN_HL
EXTERN char e_unmatched_z[]
	INIT(= N_("E52: Unmatched \\z("));
#endif
EXTERN char e_unmatched_str_percent_open[]
	INIT(= N_("E53: Unmatched %s%%("));
EXTERN char e_unmatched_str_open[]
	INIT(= N_("E54: Unmatched %s("));
EXTERN char e_unmatched_str_close[]
	INIT(= N_("E55: Unmatched %s)"));
// E56 unused
// E57 unused
// E58 unused
EXTERN char e_invalid_character_after_str_at[]
	INIT(= N_("E59: invalid character after %s@"));
EXTERN char e_too_many_complex_str_curly[]
	INIT(= N_("E60: Too many complex %s{...}s"));
EXTERN char e_nested_str[]
	INIT(= N_("E61: Nested %s*"));
EXTERN char e_nested_str_chr[]
	INIT(= N_("E62: Nested %s%c"));
EXTERN char e_invalid_use_of_underscore[]
	INIT(= N_("E63: invalid use of \\_"));
EXTERN char e_str_chr_follows_nothing[]
	INIT(= N_("E64: %s%c follows nothing"));
EXTERN char e_illegal_back_reference[]
	INIT(= N_("E65: Illegal back reference"));
#ifdef FEAT_SYN_HL
EXTERN char e_z_not_allowed_here[]
	INIT(= N_("E66: \\z( not allowed here"));
EXTERN char e_z1_z9_not_allowed_here[]
	INIT(= N_("E67: \\z1 - \\z9 not allowed here"));
#endif
EXTERN char e_invalid_character_after_bsl_z[]
	INIT(= N_("E68: Invalid character after \\z"));
EXTERN char e_missing_sb_after_str[]
	INIT(= N_("E69: Missing ] after %s%%["));
EXTERN char e_empty_str_brackets[]
	INIT(= N_("E70: Empty %s%%[]"));
EXTERN char e_invalid_character_after_str[]
	INIT(= N_("E71: Invalid character after %s%%"));
EXTERN char e_close_error_on_swap_file[]
	INIT(= N_("E72: Close error on swap file"));
EXTERN char e_tag_stack_empty[]
	INIT(= N_("E73: tag stack empty"));
EXTERN char e_command_too_complex[]
	INIT(= N_("E74: Command too complex"));
EXTERN char e_name_too_long[]
	INIT(= N_("E75: Name too long"));
EXTERN char e_too_many_brackets[]
	INIT(= N_("E76: Too many ["));
EXTERN char e_too_many_file_names[]
	INIT(= N_("E77: Too many file names"));
EXTERN char e_unknown_mark[]
	INIT(= N_("E78: Unknown mark"));
EXTERN char e_cannot_expand_wildcards[]
	INIT(= N_("E79: Cannot expand wildcards"));
EXTERN char e_error_while_writing[]
	INIT(= N_("E80: Error while writing"));
#ifdef FEAT_EVAL
EXTERN char e_using_sid_not_in_script_context[]
	INIT(= N_("E81: Using <SID> not in a script context"));
#endif
EXTERN char e_cannot_allocate_any_buffer_exiting[]
	INIT(= N_("E82: Cannot allocate any buffer, exiting..."));
EXTERN char e_cannot_allocate_buffer_using_other_one[]
	INIT(= N_("E83: Cannot allocate buffer, using other one..."));
EXTERN char e_no_modified_buffer_found[]
	INIT(= N_("E84: No modified buffer found"));
EXTERN char e_there_is_no_listed_buffer[]
	INIT(= N_("E85: There is no listed buffer"));
EXTERN char e_buffer_nr_does_not_exist[]
	INIT(= N_("E86: Buffer %ld does not exist"));
EXTERN char e_cannot_go_beyond_last_buffer[]
	INIT(= N_("E87: Cannot go beyond last buffer"));
EXTERN char e_cannot_go_before_first_buffer[]
	INIT(= N_("E88: Cannot go before first buffer"));
EXTERN char e_no_write_since_last_change_for_buffer_nr_add_bang_to_override[]
	INIT(= N_("E89: No write since last change for buffer %d (add ! to override)"));
EXTERN char e_cannot_unload_last_buffer[]
	INIT(= N_("E90: Cannot unload last buffer"));
EXTERN char e_shell_option_is_empty[]
	INIT(= N_("E91: 'shell' option is empty"));
EXTERN char e_buffer_nr_not_found[]
	INIT(= N_("E92: Buffer %d not found"));
EXTERN char e_more_than_one_match_for_str[]
	INIT(= N_("E93: More than one match for %s"));
EXTERN char e_no_matching_buffer_for_str[]
	INIT(= N_("E94: No matching buffer for %s"));
EXTERN char e_buffer_with_this_name_already_exists[]
	INIT(= N_("E95: Buffer with this name already exists"));
#if defined(FEAT_DIFF)
EXTERN char e_cannot_diff_more_than_nr_buffers[]
	INIT(= N_("E96: Cannot diff more than %d buffers"));
EXTERN char e_cannot_create_diffs[]
	INIT(= N_("E97: Cannot create diffs"));
EXTERN char e_cannot_read_diff_output[]
	INIT(= N_("E98: Cannot read diff output"));
EXTERN char e_current_buffer_is_not_in_diff_mode[]
	INIT(= N_("E99: Current buffer is not in diff mode"));
EXTERN char e_no_other_buffer_in_diff_mode[]
	INIT(= N_("E100: No other buffer in diff mode"));
EXTERN char e_more_than_two_buffers_in_diff_mode_dont_know_which_one_to_use[]
	INIT(= N_("E101: More than two buffers in diff mode, don't know which one to use"));
EXTERN char e_cant_find_buffer_str[]
	INIT(= N_("E102: Can't find buffer \"%s\""));
EXTERN char e_buffer_str_is_not_in_diff_mode[]
	INIT(= N_("E103: Buffer \"%s\" is not in diff mode"));
#endif
#ifdef FEAT_DIGRAPHS
EXTERN char e_escape_not_allowed_in_digraph[]
	INIT(= N_("E104: Escape not allowed in digraph"));
#endif
#ifdef FEAT_KEYMAP
EXTERN char e_using_loadkeymap_not_in_sourced_file[]
	INIT(= N_("E105: Using :loadkeymap not in a sourced file"));
#endif
// E106 unused
#ifdef FEAT_EVAL
EXTERN char e_missing_parenthesis_str[]
	INIT(= N_("E107: Missing parentheses: %s"));
EXTERN char e_no_such_variable_str[]
	INIT(= N_("E108: No such variable: \"%s\""));
EXTERN char e_missing_colon_after_questionmark[]
	INIT(= N_("E109: Missing ':' after '?'"));
EXTERN char e_missing_closing_paren[]
	INIT(= N_("E110: Missing ')'"));
EXTERN char e_missing_closing_square_brace[]
	INIT(= N_("E111: Missing ']'"));
EXTERN char e_option_name_missing_str[]
	INIT(= N_("E112: Option name missing: %s"));
EXTERN char e_unknown_option_str[]
	INIT(= N_("E113: Unknown option: %s"));
EXTERN char e_missing_double_quote_str[]
	INIT(= N_("E114: Missing double quote: %s"));
EXTERN char e_missing_single_quote_str[]
	INIT(= N_("E115: Missing single quote: %s"));
EXTERN char e_invalid_arguments_for_function_str[]
	INIT(= N_("E116: Invalid arguments for function %s"));
EXTERN char e_unknown_function_str[]
	INIT(= N_("E117: Unknown function: %s"));
EXTERN char e_too_many_arguments_for_function_str[]
	INIT(= N_("E118: Too many arguments for function: %s"));
EXTERN char e_not_enough_arguments_for_function_str[]
	INIT(= N_("E119: Not enough arguments for function: %s"));
EXTERN char e_using_sid_not_in_script_context_str[]
	INIT(= N_("E120: Using <SID> not in a script context: %s"));
EXTERN char e_undefined_variable_str[]
	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"));
EXTERN char e_missing_paren_str[]
	INIT(= N_("E124: Missing '(': %s"));
EXTERN char e_illegal_argument_str[]
	INIT(= N_("E125: Illegal argument: %s"));
EXTERN char e_missing_endfunction[]
	INIT(= N_("E126: Missing :endfunction"));
EXTERN char e_cannot_redefine_function_str_it_is_in_use[]
	INIT(= N_("E127: Cannot redefine function %s: It is in use"));
EXTERN char e_function_name_must_start_with_capital_or_s_str[]
	INIT(= N_("E128: Function name must start with a capital or \"s:\": %s"));
EXTERN char e_function_name_required[]
	INIT(= N_("E129: Function name required"));
// E130 unused
EXTERN char e_cannot_delete_function_str_it_is_in_use[]
	INIT(= N_("E131: Cannot delete function %s: It is in use"));
EXTERN char e_function_call_depth_is_higher_than_macfuncdepth[]
	INIT(= N_("E132: Function call depth is higher than 'maxfuncdepth'"));
EXTERN char e_return_not_inside_function[]
	INIT(= N_("E133: :return not inside a function"));
#endif
EXTERN char e_cannot_move_range_of_lines_into_itself[]
	INIT(= N_("E134: Cannot move a range of lines into itself"));
EXTERN char e_filter_autocommands_must_not_change_current_buffer[]
	INIT(= N_("E135: *Filter* Autocommands must not change current buffer"));
#if defined(FEAT_VIMINFO)
EXTERN char e_viminfo_too_many_errors_skipping_rest_of_file[]
	INIT(= N_("E136: viminfo: Too many errors, skipping rest of file"));
EXTERN char e_viminfo_file_is_not_writable_str[]
	INIT(= N_("E137: Viminfo file is not writable: %s"));
EXTERN char e_cant_write_viminfo_file_str[]
	INIT(= N_("E138: Can't write viminfo file %s!"));
#endif
EXTERN char e_file_is_loaded_in_another_buffer[]
	INIT(= N_("E139: File is loaded in another buffer"));
EXTERN char e_use_bang_to_write_partial_buffer[]
	INIT(= N_("E140: Use ! to write partial buffer"));
EXTERN char e_no_file_name_for_buffer_nr[]
	INIT(= N_("E141: No file name for buffer %ld"));
EXTERN char e_file_not_written_writing_is_disabled_by_write_option[]
	INIT(= N_("E142: File not written: Writing is disabled by 'write' option"));
EXTERN char e_autocommands_unexpectedly_deleted_new_buffer_str[]
	INIT(= N_("E143: Autocommands unexpectedly deleted new buffer %s"));
EXTERN char e_non_numeric_argument_to_z[]
	INIT(= N_("E144: non-numeric argument to :z"));
EXTERN char e_shell_commands_and_some_functionality_not_allowed_in_rvim[]
	INIT(= N_("E145: Shell commands and some functionality not allowed in rvim"));
EXTERN char e_regular_expressions_cant_be_delimited_by_letters[]
	INIT(= N_("E146: Regular expressions can't be delimited by letters"));
EXTERN char e_cannot_do_global_recursive_with_range[]
	INIT(= N_("E147: Cannot do :global recursive with a range"));
EXTERN char e_regular_expression_missing_from_global[]
	INIT(= N_("E148: Regular expression missing from :global"));
EXTERN char e_sorry_no_help_for_str[]
	INIT(= N_("E149: Sorry, no help for %s"));
EXTERN char e_not_a_directory_str[]
	INIT(= N_("E150: Not a directory: %s"));
EXTERN char e_no_match_str_1[]
	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"));
EXTERN char e_duplicate_tag_str_in_file_str_str[]
	INIT(= N_("E154: Duplicate tag \"%s\" in file %s/%s"));
#ifdef FEAT_SIGNS
EXTERN char e_unknown_sign_str[]
	INIT(= N_("E155: Unknown sign: %s"));
EXTERN char e_missing_sign_name[]
	INIT(= N_("E156: Missing sign name"));
EXTERN char e_invalid_sign_id_nr[]
	INIT(= N_("E157: Invalid sign ID: %d"));
#endif
#if defined(FEAT_SIGNS) || defined(FEAT_EVAL)
EXTERN char e_invalid_buffer_name_str[]
	INIT(= N_("E158: Invalid buffer name: %s"));
#endif
#ifdef FEAT_SIGNS
EXTERN char e_missing_sign_number[]
	INIT(= N_("E159: Missing sign number"));
EXTERN char e_unknown_sign_command_str[]
	INIT(= N_("E160: Unknown sign command: %s"));
#endif
#ifdef FEAT_EVAL
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"));
#ifdef FEAT_EVAL
EXTERN char e_finish_used_outside_of_sourced_file[]
	INIT(= N_("E168: :finish used outside of a sourced file"));
#endif
EXTERN char e_command_too_recursive[]
	INIT(= N_("E169: Command too recursive"));
#ifdef FEAT_EVAL
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"));
#endif
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_address_type_value_str[]
	INIT(= N_("E180: Invalid address type 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"));
EXTERN char e_argument_must_be_letter_or_forward_backward_quote[]
	INIT(= N_("E191: Argument must be a letter or forward/backward quote"));
EXTERN char e_recursive_use_of_normal_too_deep[]
	INIT(= N_("E192: Recursive use of :normal too deep"));
#ifdef FEAT_EVAL
EXTERN char e_str_not_inside_function[]
	INIT(= N_("E193: %s not inside a function"));
#endif
EXTERN char e_no_alternate_file_name_to_substitute_for_hash[]
	INIT(= N_("E194: No alternate file name to substitute for '#'"));
#ifdef FEAT_VIMINFO
EXTERN char e_cannot_open_viminfo_file_for_reading[]
	INIT(= N_("E195: Cannot open viminfo file for reading"));
#endif
#ifndef FEAT_DIGRAPHS
EXTERN char e_no_digraphs_version[]
	INIT(= N_("E196: No digraphs in this version"));
#endif
EXTERN char e_cannot_set_language_to_str[]
	INIT(= N_("E197: Cannot set language to \"%s\""));
// E198 unused
#ifdef FEAT_CMDWIN
EXTERN char e_active_window_or_buffer_deleted[]
	INIT(= N_("E199: Active window or buffer deleted"));
#endif
EXTERN char e_readpre_autocommands_made_file_unreadable[]
	INIT(= N_("E200: *ReadPre autocommands made the file unreadable"));
EXTERN char e_readpre_autocommands_must_not_change_current_buffer[]
	INIT(= N_("E201: *ReadPre autocommands must not change current buffer"));
#ifdef FEAT_EVAL
EXTERN char e_conversion_mad_file_unreadable[]
	INIT(= N_("E202: Conversion made file unreadable!"));
#endif
EXTERN char e_autocommands_deleted_or_unloaded_buffer_to_be_written[]
	INIT(= N_("E203: Autocommands deleted or unloaded buffer to be written"));
EXTERN char e_autocommands_changed_number_of_lines_in_unexpected_way[]
	INIT(= N_("E204: Autocommand changed number of lines in unexpected way"));
EXTERN char e_patchmode_cant_save_original_file[]
	INIT(= N_("E205: Patchmode: can't save original file"));
EXTERN char e_patchmode_cant_touch_empty_original_file[]
	INIT(= N_("E206: patchmode: can't touch empty original file"));
EXTERN char e_cant_delete_backup_file[]
	INIT(= N_("E207: Can't delete backup file"));
EXTERN char e_error_writing_to_str[]
	INIT(= N_("E208: Error writing to \"%s\""));
EXTERN char e_error_closing_str[]
	INIT(= N_("E209: Error closing \"%s\""));
EXTERN char e_error_reading_str[]
	INIT(= N_("E210: Error reading \"%s\""));
EXTERN char e_file_str_no_longer_available[]
	INIT(= N_("E211: File \"%s\" no longer available"));
EXTERN char e_cant_open_file_for_writing[]
	INIT(= N_("E212: Can't open file for writing"));
EXTERN char e_cannot_convert_add_bang_to_write_without_conversion[]
	INIT(= N_("E213: Cannot convert (add ! to write without conversion)"));
#ifdef FEAT_EVAL
EXTERN char e_cant_find_temp_file_for_writing[]
	INIT(= N_("E214: Can't find temp file for writing"));
#endif
EXTERN char e_illegal_character_after_star_str[]
	INIT(= N_("E215: Illegal character after *: %s"));
EXTERN char e_no_such_event_str[]
	INIT(= N_("E216: No such event: %s"));
EXTERN char e_no_such_group_or_event_str[]
	INIT(= N_("E216: No such group or event: %s"));
EXTERN char e_cant_execute_autocommands_for_all_events[]
	INIT(= N_("E217: Can't execute autocommands for ALL events"));
EXTERN char e_autocommand_nesting_too_deep[]
	INIT(= N_("E218: autocommand nesting too deep"));
EXTERN char e_missing_open_curly[]
	INIT(= N_("E219: Missing {."));
EXTERN char e_missing_close_curly[]
	INIT(= N_("E220: Missing }."));
#ifdef FEAT_EVAL
EXTERN char e_marker_cannot_start_with_lower_case_letter[]
	INIT(= N_("E221: Marker cannot start with lower case letter"));
#endif
EXTERN char e_add_to_internal_buffer_that_was_already_read_from[]
	INIT(= N_("E222: Add to internal buffer that was already read from"));
EXTERN char e_recursive_mapping[]
	INIT(= N_("E223: recursive mapping"));
EXTERN char e_global_abbreviation_already_exists_for_str[]
	INIT(= N_("E224: global abbreviation already exists for %s"));
EXTERN char e_global_mapping_already_exists_for_str[]
	INIT(= N_("E225: global mapping already exists for %s"));
EXTERN char e_abbreviation_already_exists_for_str[]
	INIT(= N_("E226: abbreviation already exists for %s"));
EXTERN char e_mapping_already_exists_for_str[]
	INIT(= N_("E227: mapping already exists for %s"));
EXTERN char e_makemap_illegal_mode[]
	INIT(= N_("E228: makemap: Illegal mode"));
#ifdef FEAT_GUI
EXTERN char e_cannot_start_the_GUI[]
	INIT(= N_("E229: Cannot start the GUI"));
EXTERN char e_cannot_read_from_str[]
	INIT(= N_("E230: Cannot read from \"%s\""));
EXTERN char e_guifontwide_invalid[]
	INIT(= N_("E231: 'guifontwide' invalid"));
#ifdef FEAT_BEVAL_GUI
EXTERN char e_cannot_create_ballooneval_with_both_message_and_callback[]
	INIT(= N_("E232: Cannot create BalloonEval with both message and callback"));
#endif
# if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
EXTERN char e_cannot_open_display[]
	INIT(= N_("E233: cannot open display"));
# endif
# if defined(FEAT_XFONTSET)
EXTERN char e_unknown_fontset_str[]
	INIT(= N_("E234: Unknown fontset: %s"));
# endif
# if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) \
	|| defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_HAIKU)
EXTERN char e_unknown_font_str[]
	INIT(= N_("E235: Unknown font: %s"));
# endif
# if defined(FEAT_GUI_X11) && !defined(FEAT_GUI_GTK)
EXTERN char e_font_str_is_not_fixed_width[]
	INIT(= N_("E236: Font \"%s\" is not fixed-width"));
# endif
#endif
#ifdef MSWIN
EXTERN char e_printer_selection_failed[]
	INIT(= N_("E237: Printer selection failed"));
EXTERN char e_print_error_str[]
	INIT(= N_("E238: Print error: %s"));
#endif
#ifdef FEAT_SIGNS
EXTERN char e_invalid_sign_text_str[]
	INIT(= N_("E239: Invalid sign text: %s"));
#endif
#if defined(FEAT_CLIENTSERVER) && defined(FEAT_X11)
EXTERN char e_no_connection_to_x_server[]
	INIT(= N_("E240: No connection to the X server"));
#endif
#ifdef FEAT_CLIENTSERVER
EXTERN char e_unable_to_send_to_str[]
	INIT(= N_("E241: Unable to send to %s"));
#endif
EXTERN char e_cant_split_window_while_closing_another[]
	INIT(= N_("E242: Can't split a window while closing another"));
#if defined(FEAT_GUI_MSWIN) && !defined(FEAT_OLE)
EXTERN char e_argument_not_supported_str_use_ole_version[]
	INIT(= N_("E243: Argument not supported: \"-%s\"; Use the OLE version."));
#endif
#ifdef MSWIN
EXTERN char e_illegal_str_name_str_in_font_name_str[]
	INIT(= N_("E244: Illegal %s name \"%s\" in font name \"%s\""));
EXTERN char e_illegal_char_nr_in_font_name_str[]
	INIT(= N_("E245: Illegal char '%c' in font name \"%s\""));
#endif
EXTERN char e_filechangedshell_autocommand_deleted_buffer[]
	INIT(= N_("E246: FileChangedShell autocommand deleted buffer"));
#ifdef FEAT_CLIENTSERVER
EXTERN char e_no_registered_server_named_str[]
	INIT(= N_("E247: no registered server named \"%s\""));
EXTERN char e_failed_to_send_command_to_destination_program[]
	INIT(= N_("E248: Failed to send command to the destination program"));
#endif
EXTERN char e_window_layout_changed_unexpectedly[]
	INIT(= N_("E249: window layout changed unexpectedly"));
#ifdef FEAT_XFONTSET
EXTERN char e_fonts_for_the_following_charsets_are_missing_in_fontset[]
	INIT(= N_("E250: Fonts for the following charsets are missing in fontset %s:"));
#endif
#ifdef FEAT_CLIENTSERVER
EXTERN char e_vim_instance_registry_property_is_badly_formed_deleted[]
	INIT(= N_("E251: VIM instance registry property is badly formed.  Deleted!"));
#endif
#ifdef FEAT_GUI_X11
EXTERN char e_fontsent_name_str_font_str_is_not_fixed_width[]
	INIT(= N_("E252: Fontset name: %s - Font '%s' is not fixed-width"));
EXTERN char e_fontset_name_str[]
	INIT(= N_("E253: Fontset name: %s"));
#endif
#if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
EXTERN char e_cannot_allocate_color_str[]
	INIT(= N_("E254: Cannot allocate color %s"));
#endif
#if defined(FEAT_SIGN_ICONS) && !defined(FEAT_GUI_GTK)
EXTERN char e_couldnt_read_in_sign_data[]
	INIT(= N_("E255: Couldn't read in sign data"));
#endif
// E256 unused
#ifdef FEAT_CSCOPE
EXTERN char e_cstag_tag_not_founc[]
	INIT(= N_("E257: cstag: tag not found"));
#endif
#ifdef FEAT_CLIENTSERVER
EXTERN char e_unable_to_send_to_client[]
	INIT(= N_("E258: Unable to send to client"));
#endif
#ifdef FEAT_CSCOPE
EXTERN char e_no_matches_found_for_cscope_query_str_of_str[]
	INIT(= N_("E259: no matches found for cscope query %s of %s"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_missing_name_after_method[]
	INIT(= N_("E260: Missing name after ->"));
#endif
#ifdef FEAT_CSCOPE
EXTERN char e_cscope_connection_str_not_founc[]
	INIT(= N_("E261: cscope connection %s not found"));
EXTERN char e_error_reading_cscope_connection_nr[]
	INIT(= N_("E262: error reading cscope connection %d"));
#endif
#if defined(DYNAMIC_PYTHON) || defined(DYNAMIC_PYTHON3)
EXTERN char e_sorry_this_command_is_disabled_python_library_could_not_be_found[]
	INIT(= N_("E263: Sorry, this command is disabled, the Python library could not be loaded."));
#endif
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
EXTERN char e_python_error_initialising_io_object[]
	INIT(= N_("E264: Python: Error initialising I/O objects"));
#endif
#ifdef FEAT_RUBY
EXTERN char e_dollar_must_be_an_instance_of_string[]
	INIT(= N_("E265: $_ must be an instance of String"));
#endif
#ifdef DYNAMIC_RUBY
EXTERN char e_sorry_this_command_is_disabled_the_ruby_library_could_not_be_loaded[]
	INIT(= N_("E266: Sorry, this command is disabled, the Ruby library could not be loaded."));
#endif
#ifdef FEAT_RUBY
EXTERN char e_unexpected_return[]
	INIT(= N_("E267: unexpected return"));
EXTERN char e_unexpected_next[]
	INIT(= N_("E268: unexpected next"));
EXTERN char e_unexpected_break[]
	INIT(= N_("E269: unexpected break"));
EXTERN char e_unexpected_redo[]
	INIT(= N_("E270: unexpected redo"));
EXTERN char e_retry_outside_of_rescue_clause[]
	INIT(= N_("E271: retry outside of rescue clause"));
EXTERN char e_unhandled_exception[]
	INIT(= N_("E272: unhandled exception"));
EXTERN char e_unknown_longjmp_status_nr[]
	INIT(= N_("E273: unknown longjmp status %d"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_no_white_space_allowed_before_parenthesis[]
	INIT(= N_("E274: No white space allowed before parenthesis"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char e_cannot_add_text_property_to_unloaded_buffer[]
	INIT(= N_("E275: Cannot add text property to unloaded buffer"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_function_as_method_str[]
	INIT(= N_("E276: Cannot use function as a method: %s"));
#endif
#ifdef FEAT_CLIENTSERVER
EXTERN char e_unable_to_read_server_reply[]
	INIT(= N_("E277: Unable to read a server reply"));
#endif
// E278 unused
#if defined(FEAT_TERMINAL) && !defined(UNIX) && !defined(MSWIN)
EXTERN char e_sorry_plusplusshell_not_supported_on_this_system[]
	INIT(= N_("E279: Sorry, ++shell is not supported on this system"));
#endif
#ifdef FEAT_TCL
EXTERN char e_tcl_fatal_error_reflist_corrupt_please_report_this[]
	INIT(= N_("E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim.org"));
#endif
// E281 unused
EXTERN char e_cannot_read_from_str_2[]
	INIT(= N_("E282: Cannot read from \"%s\""));
EXTERN char e_no_marks_matching_str[]
	INIT(= N_("E283: No marks matching \"%s\""));
#ifdef FEAT_XIM
# ifndef FEAT_GUI_GTK
EXTERN char e_cannot_set_ic_values[]
	INIT(= N_("E284: Cannot set IC values"));
# endif
# ifdef FEAT_GUI_X11
EXTERN char e_failed_to_create_input_context[]
	INIT(= N_("E285: Failed to create input context"));
EXTERN char e_failed_to_open_input_method[]
	INIT(= N_("E286: Failed to open input method"));
EXTERN char e_warning_could_not_set_destroy_callback_to_im[]
	INIT(= N_("E287: Warning: Could not set destroy callback to IM"));
EXTERN char e_input_method_doesnt_support_any_style[]
	INIT(= N_("E288: input method doesn't support any style"));
EXTERN char e_input_method_doesnt_support_my_preedit_type[]
	INIT(= N_("E289: input method doesn't support my preedit type"));
# endif
#endif
#ifdef FEAT_SEARCH_EXTRA
EXTERN char e_list_or_number_required[]
	INIT(= N_("E290: List or number required"));
#endif
// E291 unused
EXTERN char e_invalid_count_for_del_bytes_nr[]
	INIT(= N_("E292: Invalid count for del_bytes(): %ld"));
EXTERN char e_block_was_not_locked[]
	INIT(= N_("E293: block was not locked"));
EXTERN char e_seek_error_in_swap_file_read[]
	INIT(= N_("E294: Seek error in swap file read"));
EXTERN char e_read_error_in_swap_file[]
	INIT(= N_("E295: Read error in swap file"));
EXTERN char e_seek_error_in_swap_file_write[]
	INIT(= N_("E296: Seek error in swap file write"));
EXTERN char e_write_error_in_swap_file[]
	INIT(= N_("E297: Write error in swap file"));
EXTERN char e_didnt_get_block_nr_zero[]
	INIT(= N_("E298: Didn't get block nr 0?"));
EXTERN char e_didnt_get_block_nr_one[]
	INIT(= N_("E298: Didn't get block nr 1?"));
EXTERN char e_didnt_get_block_nr_two[]
	INIT(= N_("E298: Didn't get block nr 2?"));
#ifdef FEAT_PERL
EXTERN char e_perl_evaluation_forbidden_in_sandbox_without_safe_module[]
	INIT(= N_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
#endif
EXTERN char e_swap_file_already_exists_symlink_attack[]
	INIT(= N_("E300: Swap file already exists (symlink attack?)"));
EXTERN char e_oops_lost_the_swap_file[]
	INIT(= N_("E301: Oops, lost the swap file!!!"));
EXTERN char e_could_not_rename_swap_file[]
	INIT(= N_("E302: Could not rename swap file"));
EXTERN char e_unable_to_open_swap_file_for_str_recovery_impossible[]
	INIT(= N_("E303: Unable to open swap file for \"%s\", recovery impossible"));
EXTERN char e_ml_upd_block0_didnt_get_block_zero[]
	INIT(= N_("E304: ml_upd_block0(): Didn't get block 0??"));
EXTERN char e_no_swap_file_found_for_str[]
	INIT(= N_("E305: No swap file found for %s"));
EXTERN char e_cannot_open_str[]
	INIT(= N_("E306: Cannot open %s"));
EXTERN char e_str_does_not_look_like_vim_swap_file[]
	INIT(= N_("E307: %s does not look like a Vim swap file"));
EXTERN char e_warning_original_file_may_have_been_changed[]
	INIT(= N_("E308: Warning: Original file may have been changed"));
EXTERN char e_unable_to_read_block_one_from_str[]
	INIT(= N_("E309: Unable to read block 1 from %s"));
EXTERN char e_block_one_id_wrong_str_not_swp_file[]
	INIT(= N_("E310: Block 1 ID wrong (%s not a .swp file?)"));
EXTERN char e_recovery_interrupted[]
	INIT(= N_("E311: Recovery Interrupted"));
EXTERN char e_errors_detected_while_recovering_look_for_lines_starting_with_questions[]
	INIT(= N_("E312: Errors detected while recovering; look for lines starting with ???"));
EXTERN char e_cannot_preserve_there_is_no_swap_file[]
	INIT(= N_("E313: Cannot preserve, there is no swap file"));
EXTERN char e_preserve_failed[]
	INIT(= N_("E314: Preserve failed"));
EXTERN char e_ml_get_invalid_lnum_nr[]
	INIT(= N_("E315: ml_get: invalid lnum: %ld"));
EXTERN char e_ml_get_cannot_find_line_nr_in_buffer_nr_str[]
	INIT(= N_("E316: ml_get: cannot find line %ld in buffer %d %s"));
EXTERN char e_pointer_block_id_wrong[]
	INIT(= N_("E317: pointer block id wrong"));
EXTERN char e_pointer_block_id_wrong_two[]
	INIT(= N_("E317: pointer block id wrong 2"));
EXTERN char e_pointer_block_id_wrong_three[]
	INIT(= N_("E317: pointer block id wrong 3"));
EXTERN char e_pointer_block_id_wrong_four[]
	INIT(= N_("E317: pointer block id wrong 4"));
EXTERN char e_updated_too_many_blocks[]
	INIT(= N_("E318: Updated too many blocks?"));
EXTERN char e_sorry_command_is_not_available_in_this_version[]
	INIT(= N_("E319: Sorry, the command is not available in this version"));
EXTERN char e_cannot_find_line_nr[]
	INIT(= N_("E320: Cannot find line %ld"));
EXTERN char e_could_not_reload_str[]
	INIT(= N_("E321: Could not reload \"%s\""));
EXTERN char e_line_number_out_of_range_nr_past_the_end[]
	INIT(= N_("E322: line number out of range: %ld past the end"));
EXTERN char e_line_count_wrong_in_block_nr[]
	INIT(= N_("E323: line count wrong in block %ld"));
#ifdef FEAT_POSTSCRIPT
EXTERN char e_cant_open_postscript_output_file[]
	INIT(= N_("E324: Can't open PostScript output file"));
#endif
EXTERN char e_attention[]
	INIT(= N_("E325: ATTENTION"));
EXTERN char e_too_many_swap_files_found[]
	INIT(= N_("E326: Too many swap files found"));
#ifdef FEAT_MENU
EXTERN char_u e_part_of_menu_item_path_is_not_sub_menu[]
	INIT(= N_("E327: Part of menu-item path is not sub-menu"));
EXTERN char e_menu_only_exists_in_another_mode[]
	INIT(= N_("E328: Menu only exists in another mode"));
EXTERN char_u e_no_menu_str[]
	INIT(= N_("E329: No menu \"%s\""));
EXTERN char e_menu_path_must_not_lead_to_sub_menu[]
	INIT(= N_("E330: Menu path must not lead to a sub-menu"));
EXTERN char e_must_not_add_menu_items_directly_to_menu_bar[]
	INIT(= N_("E331: Must not add menu items directly to menu bar"));
EXTERN char e_separator_cannot_be_part_of_menu_path[]
	INIT(= N_("E332: Separator cannot be part of a menu path"));
EXTERN char e_menu_path_must_lead_to_menu_item[]
	INIT(= N_("E333: Menu path must lead to a menu item"));
EXTERN char e_menu_not_found_str[]
	INIT(= N_("E334: Menu not found: %s"));
EXTERN char e_menu_not_defined_for_str_mode[]
	INIT(= N_("E335: Menu not defined for %s mode"));
EXTERN char e_menu_path_must_lead_to_sub_menu[]
	INIT(= N_("E336: Menu path must lead to a sub-menu"));
EXTERN char e_menu_not_found_check_menu_names[]
	INIT(= N_("E337: Menu not found - check menu names"));
#endif
#ifdef FEAT_BROWSE
EXTERN char e_sorry_no_file_browser_in_console_mode[]
	INIT(= N_("E338: Sorry, no file browser in console mode"));
#endif
EXTERN char e_pattern_too_long[]
	INIT(= N_("E339: Pattern too long"));
// E340 unused
EXTERN char e_internal_error_lalloc_zero[]
	INIT(= N_("E341: Internal error: lalloc(0, )"));
EXTERN char e_out_of_memory_allocating_nr_bytes[]
	INIT(= N_("E342: Out of memory!  (allocating %lu bytes)"));
#ifdef FEAT_PATH_EXTRA
EXTERN char e_invalid_path_number_must_be_at_end_of_path_or_be_followed_by_str[]
	INIT(= N_("E343: Invalid path: '**[number]' must be at the end of the path or be followed by '%s'."));
#endif
#ifdef FEAT_SEARCHPATH
EXTERN char e_cant_find_directory_str_in_cdpath[]
	INIT(= N_("E344: Can't find directory \"%s\" in cdpath"));
EXTERN char e_cant_find_file_str_in_path[]
	INIT(= N_("E345: Can't find file \"%s\" in path"));
EXTERN char e_no_more_directory_str_found_in_cdpath[]
	INIT(= N_("E346: No more directory \"%s\" found in cdpath"));
EXTERN char e_no_more_file_str_found_in_path[]
	INIT(= N_("E347: No more file \"%s\" found in path"));
#endif
EXTERN char e_no_string_under_cursor[]
	INIT(= N_("E348: No string under cursor"));
EXTERN char e_no_identifier_under_cursor[]
	INIT(= N_("E349: No identifier under cursor"));
#ifdef FEAT_FOLDING
EXTERN char e_cannot_create_fold_with_current_foldmethod[]
	INIT(= N_("E350: Cannot create fold with current 'foldmethod'"));
EXTERN char e_cannot_delete_fold_with_current_foldmethod[]
	INIT(= N_("E351: Cannot delete fold with current 'foldmethod'"));
EXTERN char e_cannot_erase_folds_with_current_foldmethod[]
	INIT(= N_("E352: Cannot erase folds with current 'foldmethod'"));
#endif
EXTERN char e_nothing_in_register_str[]
	INIT(= N_("E353: Nothing in register %s"));
EXTERN char e_invalid_register_name_str[]
	INIT(= N_("E354: Invalid register name: '%s'"));
EXTERN char e_unknown_option_str_2[]
	INIT(= N_("E355: Unknown option: %s"));
EXTERN char e_get_varp_error[]
	INIT(= N_("E356: get_varp ERROR"));
#ifdef FEAT_LANGMAP
EXTERN char e_langmap_matching_character_missing_for_str[]
	INIT(= N_("E357: 'langmap': Matching character missing for %s"));
EXTERN char e_langmap_extra_characters_after_semicolon_str[]
	INIT(= N_("E358: 'langmap': Extra characters after semicolon: %s"));
#endif
#if defined(AMIGA) || defined(MACOS_X) || defined(MSWIN)  \
	|| defined(UNIX) || defined(VMS)
EXTERN char e_screen_mode_setting_not_supported[]
	INIT(= N_("E359: Screen mode setting not supported"));
#endif
#ifdef AMIGA
EXTERN char e_cannot_execute_shell_with_f_option[]
	INIT(= N_("E360: Cannot execute shell with -f option"));
#endif
// E361 unused
#if defined(FEAT_EVAL) && defined(FEAT_FLOAT)
EXTERN char e_using_boolean_value_as_float[]
	INIT(= N_("E362: Using a boolean value as a Float"));
#endif
EXTERN char e_pattern_uses_more_memory_than_maxmempattern[]
	INIT(= N_("E363: pattern uses more memory than 'maxmempattern'"));
#ifdef FEAT_LIBCALL
EXTERN char e_library_call_failed_for_str[]
	INIT(= N_("E364: Library call failed for \"%s()\""));
#endif
#ifdef FEAT_POSTSCRIPT
EXTERN char e_failed_to_print_postscript_file[]
	INIT(= N_("E365: Failed to print PostScript file"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char e_not_allowed_to_enter_popup_window[]
	INIT(= N_("E366: Not allowed to enter a popup window"));
#endif
EXTERN char e_no_such_group_str[]
	INIT(= N_("E367: No such group: \"%s\""));
#ifdef FEAT_LIBCALL
EXTERN char e_got_sig_str_in_libcall[]
	INIT(= N_("E368: got SIG%s in libcall()"));
#endif
EXTERN char e_invalid_item_in_str_brackets[]
	INIT(= N_("E369: invalid item in %s%%[]"));
#ifdef USING_LOAD_LIBRARY
EXTERN char e_could_not_load_library_str_str[]
	INIT(= N_("E370: Could not load library %s: %s"));
#endif
#ifdef FEAT_GUI_MSWIN
EXTERN char e_command_not_found[]
	INIT(= N_("E371: Command not found"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_too_many_chr_in_format_string[]
	INIT(= N_("E372: Too many %%%c in format string"));
EXTERN char e_unexpected_chr_in_format_str[]
	INIT(= N_("E373: Unexpected %%%c in format string"));
EXTERN char e_missing_rsb_in_format_string[]
	INIT(= N_("E374: Missing ] in format string"));
EXTERN char e_unsupported_chr_in_format_string[]
	INIT(= N_("E375: Unsupported %%%c in format string"));
EXTERN char e_invalid_chr_in_format_string_prefix[]
	INIT(= N_("E376: Invalid %%%c in format string prefix"));
EXTERN char e_invalid_chr_in_format_string[]
	INIT(= N_("E377: Invalid %%%c in format string"));
EXTERN char e_errorformat_contains_no_pattern[]
	INIT(= N_("E378: 'errorformat' contains no pattern"));
EXTERN char e_missing_or_empty_directory_name[]
	INIT(= N_("E379: Missing or empty directory name"));
EXTERN char e_at_bottom_of_quickfix_stack[]
	INIT(= N_("E380: At bottom of quickfix stack"));
EXTERN char e_at_top_of_quickfix_stack[]
	INIT(= N_("E381: At top of quickfix stack"));
EXTERN char e_cannot_write_buftype_option_is_set[]
	INIT(= N_("E382: Cannot write, 'buftype' option is set"));
#endif
EXTERN char e_invalid_search_string_str[]
	INIT(= N_("E383: Invalid search string: %s"));
EXTERN char e_search_hit_top_without_match_for_str[]
	INIT(= N_("E384: search hit TOP without match for: %s"));
EXTERN char e_search_hit_bottom_without_match_for_str[]
	INIT(= N_("E385: search hit BOTTOM without match for: %s"));
EXTERN char e_expected_question_or_slash_after_semicolon[]
	INIT(= N_("E386: Expected '?' or '/'  after ';'"));
#ifdef FEAT_FIND_ID
EXTERN char e_match_is_on_current_line[]
	INIT(= N_("E387: Match is on current line"));
EXTERN char e_couldnt_find_definition[]
	INIT(= N_("E388: Couldn't find definition"));
EXTERN char e_couldnt_find_pattern[]
	INIT(= N_("E389: Couldn't find pattern"));
#endif
#ifdef FEAT_SYN_HL
EXTERN char e_illegal_argument_str_2[]
	INIT(= N_("E390: Illegal argument: %s"));
EXTERN char e_no_such_syntax_cluster_1[]
	INIT(= N_("E391: No such syntax cluster: %s"));
EXTERN char e_no_such_syntax_cluster_2[]
	INIT(= N_("E392: No such syntax cluster: %s"));
EXTERN char e_groupthere_not_accepted_here[]
	INIT(= N_("E393: group[t]here not accepted here"));
EXTERN char e_didnt_find_region_item_for_str[]
	INIT(= N_("E394: Didn't find region item for %s"));
EXTERN char e_contains_argument_not_accepted_here[]
	INIT(= N_("E395: contains argument not accepted here"));
// E396 unused
EXTERN char e_filename_required[]
	INIT(= N_("E397: Filename required"));
EXTERN char e_missing_equal_str[]
	INIT(= N_("E398: Missing '=': %s"));
EXTERN char e_not_enough_arguments_syntax_region_str[]
	INIT(= N_("E399: Not enough arguments: syntax region %s"));
EXTERN char e_no_cluster_specified[]
	INIT(= N_("E400: No cluster specified"));
EXTERN char e_pattern_delimiter_not_found_str[]
	INIT(= N_("E401: Pattern delimiter not found: %s"));
EXTERN char e_garbage_after_pattern_str[]
	INIT(= N_("E402: Garbage after pattern: %s"));
EXTERN char e_syntax_sync_line_continuations_pattern_specified_twice[]
	INIT(= N_("E403: syntax sync: line continuations pattern specified twice"));
EXTERN char e_illegal_arguments_str[]
	INIT(= N_("E404: Illegal arguments: %s"));
EXTERN char e_missing_equal_sign_str[]
	INIT(= N_("E405: Missing equal sign: %s"));
EXTERN char e_empty_argument_str[]
	INIT(= N_("E406: Empty argument: %s"));
EXTERN char e_str_not_allowed_here[]
	INIT(= N_("E407: %s not allowed here"));
EXTERN char e_str_must_be_first_in_contains_list[]
	INIT(= N_("E408: %s must be first in contains list"));
EXTERN char e_unknown_group_name_str[]
	INIT(= N_("E409: Unknown group name: %s"));
EXTERN char e_invalid_syntax_subcommand_str[]
	INIT(= N_("E410: Invalid :syntax subcommand: %s"));
#endif
EXTERN char e_highlight_group_name_not_found_str[]
	INIT(= N_("E411: highlight group not found: %s"));
EXTERN char e_not_enough_arguments_highlight_link_str[]
	INIT(= N_("E412: Not enough arguments: \":highlight link %s\""));
EXTERN char e_too_many_arguments_highlight_link_str[]
	INIT(= N_("E413: Too many arguments: \":highlight link %s\""));
EXTERN char e_group_has_settings_highlight_link_ignored[]
	INIT(= N_("E414: group has settings, highlight link ignored"));
EXTERN char e_unexpected_equal_sign_str[]
	INIT(= N_("E415: unexpected equal sign: %s"));
EXTERN char e_missing_equal_sign_str_2[]
	INIT(= N_("E416: missing equal sign: %s"));
EXTERN char e_missing_argument_str[]
	INIT(= N_("E417: missing argument: %s"));
EXTERN char e_illegal_value_str[]
	INIT(= N_("E418: Illegal value: %s"));
EXTERN char e_fg_color_unknown[]
	INIT(= N_("E419: FG color unknown"));
EXTERN char e_bg_color_unknown[]
	INIT(= N_("E420: BG color unknown"));
EXTERN char e_color_name_or_number_not_recognized[]
	INIT(= N_("E421: Color name or number not recognized: %s"));
EXTERN char e_terminal_code_too_long_str[]
	INIT(= N_("E422: terminal code too long: %s"));
EXTERN char e_illegal_argument_str_3[]
	INIT(= N_("E423: Illegal argument: %s"));
EXTERN char e_too_many_different_highlighting_attributes_in_use[]
	INIT(= N_("E424: Too many different highlighting attributes in use"));
EXTERN char e_cannot_go_before_first_matching_tag[]
	INIT(= N_("E425: Cannot go before first matching tag"));
EXTERN char e_tag_not_found_str[]
	INIT(= N_("E426: tag not found: %s"));
EXTERN char e_there_is_only_one_matching_tag[]
	INIT(= N_("E427: There is only one matching tag"));
EXTERN char e_cannot_go_beyond_last_matching_tag[]
	INIT(= N_("E428: Cannot go beyond last matching tag"));
EXTERN char e_file_str_does_not_exist[]
	INIT(= N_("E429: File \"%s\" does not exist"));
#ifdef FEAT_EMACS_TAGS
EXTERN char e_tag_file_path_truncated_for_str[]
	INIT(= N_("E430: Tag file path truncated for %s\n"));
#endif
EXTERN char e_format_error_in_tags_file_str[]
	INIT(= N_("E431: Format error in tags file \"%s\""));
EXTERN char e_tags_file_not_sorted_str[]
	INIT(= N_("E432: Tags file not sorted: %s"));
EXTERN char e_no_tags_file[]
	INIT(= N_("E433: No tags file"));
EXTERN char e_canot_find_tag_pattern[]
	INIT(= N_("E434: Can't find tag pattern"));
EXTERN char e_couldnt_find_tag_just_guessing[]
	INIT(= N_("E435: Couldn't find tag, just guessing!"));
EXTERN char e_no_str_entry_in_termcap[]
	INIT(= N_("E436: No \"%s\" entry in termcap"));
EXTERN char e_terminal_capability_cm_required[]
	INIT(= N_("E437: terminal capability \"cm\" required"));
EXTERN char e_u_undo_line_numbers_wrong[]
	INIT(= N_("E438: u_undo: line numbers wrong"));
EXTERN char e_undo_list_corrupt[]
	INIT(= N_("E439: undo list corrupt"));
EXTERN char e_undo_line_missing[]
	INIT(= N_("E440: undo line missing"));
#ifdef FEAT_QUICKFIX
EXTERN char e_there_is_no_preview_window[]
	INIT(= N_("E441: There is no preview window"));
#endif
EXTERN char e_cant_split_topleft_and_botright_at_the_same_time[]
	INIT(= N_("E442: Can't split topleft and botright at the same time"));
EXTERN char e_cannot_rotate_when_another_window_is_split[]
	INIT(= N_("E443: Cannot rotate when another window is split"));
EXTERN char e_cannot_close_last_window[]
	INIT(= N_("E444: Cannot close last window"));
EXTERN char e_other_window_contains_changes[]
	INIT(= N_("E445: Other window contains changes"));
#ifdef FEAT_SEARCHPATH
EXTERN char e_no_file_name_under_cursor[]
	INIT(= N_("E446: No file name under cursor"));
EXTERN char e_cant_find_file_str_in_path_2[]
	INIT(= N_("E447: Can't find file \"%s\" in path"));
#endif
#ifdef USING_LOAD_LIBRARY
EXTERN char e_could_not_load_library_function_str[]
	INIT(= N_("E448: Could not load library function %s"));
#endif
#ifdef FEAT_CLIENTSERVER
EXTERN char e_invalid_expression_received[]
	INIT(= N_("E449: Invalid expression received"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char e_buffer_number_text_or_list_required[]
	INIT(= N_("E450: buffer number, text or a list required"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_expected_right_curly_str[]
	INIT(= N_("E451: Expected }: %s"));
EXTERN char e_double_semicolon_in_list_of_variables[]
	INIT(= N_("E452: Double ; in list of variables"));
#endif
EXTERN char e_ul_color_unknown[]
	INIT(= N_("E453: UL color unknown"));
#ifdef FEAT_EVAL
EXTERN char e_function_list_was_modified[]
	INIT(= N_("E454: function list was modified"));
#endif
#ifdef FEAT_POSTSCRIPT
EXTERN char e_error_writing_to_postscript_output_file[]
	INIT(= N_("E455: Error writing to PostScript output file"));
EXTERN char e_cant_open_file_str_2[]
	INIT(= N_("E456: Can't open file \"%s\""));
EXTERN char e_cant_find_postscript_resource_file_str_ps[]
	INIT(= N_("E456: Can't find PostScript resource file \"%s.ps\""));
EXTERN char e_cant_read_postscript_resource_file_str[]
	INIT(= N_("E457: Can't read PostScript resource file \"%s\""));
#endif
#ifdef FEAT_GUI_X11
EXTERN char e_cannot_allocate_colormap_entry_some_colors_may_be_incorrect[]
	INIT(= N_("E458: Cannot allocate colormap entry, some colors may be incorrect"));
#endif
#if defined(UNIX) || defined(FEAT_SESSION)
EXTERN char e_cannot_go_back_to_previous_directory[]
	INIT(= N_("E459: Cannot go back to previous directory"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_entries_missing_in_mapset_dict_argument[]
	INIT(= N_("E460: entries missing in mapset() dict argument"));
EXTERN char e_illegal_variable_name_str[]
	INIT(= N_("E461: Illegal variable name: %s"));
#endif
EXTERN char e_could_not_prepare_for_reloading_str[]
	INIT(= N_("E462: Could not prepare for reloading \"%s\""));
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_region_is_guarded_cannot_modify[]
	INIT(= N_("E463: Region is guarded, cannot modify"));
#endif
EXTERN char e_ambiguous_use_of_user_defined_command[]
	INIT(= N_("E464: Ambiguous use of user-defined command"));
EXTERN char e_ambiguous_use_of_user_defined_command_str[]
	INIT(= N_("E464: Ambiguous use of user-defined command: %s"));
EXTERN char e_winsize_requires_two_number_arguments[]
	INIT(= N_("E465: :winsize requires two number arguments"));
EXTERN char e_winpos_requires_two_number_arguments[]
	INIT(= N_("E466: :winpos requires two number arguments"));
#ifdef FEAT_EVAL
EXTERN char e_custom_completion_requires_function_argument[]
	INIT(= N_("E467: Custom completion requires a function argument"));
#endif
EXTERN char e_completion_argument_only_allowed_for_custom_completion[]
	INIT(= N_("E468: Completion argument only allowed for custom completion"));
#ifdef FEAT_CSCOPE
EXTERN char e_invalid_cscopequickfix_flag_chr_for_chr[]
	INIT(= N_("E469: invalid cscopequickfix flag %c for %c"));
#endif
EXTERN char e_command_aborted[]
	INIT(= N_("E470: Command aborted"));
EXTERN char e_argument_required[]
	INIT(= N_("E471: Argument required"));
EXTERN char e_command_failed[]
	INIT(= N_("E472: Command failed"));
EXTERN char e_internal_error_in_regexp[]
	INIT(= N_("E473: Internal error in regexp"));
EXTERN char e_invalid_argument[]
	INIT(= N_("E474: Invalid argument"));
EXTERN char e_invalid_argument_str[]
	INIT(= N_("E475: Invalid argument: %s"));
EXTERN char e_invalid_value_for_argument_str[]
	INIT(= N_("E475: Invalid value for argument %s"));
#if defined(FEAT_JOB_CHANNEL) || defined(FEAT_PROP_POPUP)
EXTERN char e_invalid_value_for_argument_str_str[]
	INIT(= N_("E475: Invalid value for argument %s: %s"));
#endif
EXTERN char e_invalid_command[]
	INIT(= N_("E476: Invalid command"));
#ifdef FEAT_EVAL
EXTERN char e_invalid_command_str[]
	INIT(= N_("E476: Invalid command: %s"));
#endif
EXTERN char e_no_bang_allowed[]
	INIT(= N_("E477: No ! allowed"));
EXTERN char e_dont_panic[]
	INIT(= N_("E478: Don't panic!"));
EXTERN char e_no_match[]
	INIT(= N_("E479: No match"));
EXTERN char e_no_match_str_2[]
	INIT(= N_("E480: No match: %s"));
EXTERN char e_no_range_allowed[]
	INIT(= N_("E481: No range allowed"));
EXTERN char e_cant_create_file_str[]
	INIT(= N_("E482: Can't create file %s"));
EXTERN char e_cant_get_temp_file_name[]
	INIT(= N_("E483: Can't get temp file name"));
EXTERN char e_cant_open_file_str[]
	INIT(= N_("E484: Can't open file %s"));
EXTERN char e_cant_read_file_str[]
	INIT(= N_("E485: Can't read file %s"));
EXTERN char e_pattern_not_found[]
	INIT(= N_("E486: Pattern not found"));
EXTERN char e_pattern_not_found_str[]
	INIT(= N_("E486: Pattern not found: %s"));
EXTERN char e_argument_must_be_positive[]
	INIT(= N_("E487: Argument must be positive"));
EXTERN char e_trailing_characters[]
	INIT(= N_("E488: Trailing characters"));
EXTERN char e_trailing_characters_str[]
	INIT(= N_("E488: Trailing characters: %s"));
EXTERN char e_no_call_stack_to_substitute_for_stack[]
	INIT(= N_("E489: no call stack to substitute for \"<stack>\""));
#ifdef FEAT_FOLDING
EXTERN char e_no_fold_found[]
	INIT(= N_("E490: No fold found"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_json_decode_error_at_str[]
	INIT(= N_("E491: json decode error at '%s'"));
#endif
EXTERN char e_not_an_editor_command[]
	INIT(= N_("E492: Not an editor command"));
EXTERN char e_backwards_range_given[]
	INIT(= N_("E493: Backwards range given"));
EXTERN char e_use_w_or_w_gt_gt[]
	INIT(= N_("E494: Use w or w>>"));
EXTERN char e_no_autocommand_file_name_to_substitute_for_afile[]
	INIT(= N_("E495: no autocommand file name to substitute for \"<afile>\""));
EXTERN char e_no_autocommand_buffer_name_to_substitute_for_abuf[]
	INIT(= N_("E496: no autocommand buffer number to substitute for \"<abuf>\""));
EXTERN char e_no_autocommand_match_name_to_substitute_for_amatch[]
	INIT(= N_("E497: no autocommand match name to substitute for \"<amatch>\""));
EXTERN char e_no_source_file_name_to_substitute_for_sfile[]
	INIT(= N_("E498: no :source file name to substitute for \"<sfile>\""));
EXTERN char e_empty_file_name_for_percent_or_hash_only_works_with_ph[]
	// xgettext:no-c-format
	INIT(= N_("E499: Empty file name for '%' or '#', only works with \":p:h\""));
EXTERN char e_evaluates_to_an_empty_string[]
	INIT(= N_("E500: Evaluates to an empty string"));
EXTERN char e_at_end_of_file[]
	INIT(= N_("E501: At end-of-file"));
	// E502
EXTERN char e_is_a_directory[]
	INIT(= N_("is a directory"));
	// E503
EXTERN char e_is_not_file_or_writable_device[]
	INIT(= N_("is not a file or writable device"));
EXTERN char e_str_is_not_file_or_writable_device[]
	INIT(= N_("E503: \"%s\" is not a file or writable device"));
	// E504
EXTERN char e_is_read_only_cannot_override_W_in_cpoptions[]
	INIT(= N_("is read-only (cannot override: \"W\" in 'cpoptions')"));
	// E505
EXTERN char e_is_read_only_add_bang_to_override[]
	INIT(= N_("is read-only (add ! to override)"));
EXTERN char e_str_is_read_only_add_bang_to_override[]
	INIT(= N_("E505: \"%s\" is read-only (add ! to override)"));
EXTERN char e_canot_write_to_backup_file_add_bang_to_override[]
	INIT(= N_("E506: Can't write to backup file (add ! to override)"));
EXTERN char e_close_error_for_backup_file_add_bang_to_write_anyway[]
	INIT(= N_("E507: Close error for backup file (add ! to write anyway)"));
EXTERN char e_cant_read_file_for_backup_add_bang_to_write_anyway[]
	INIT(= N_("E508: Can't read file for backup (add ! to write anyway)"));
EXTERN char e_cannot_create_backup_file_add_bang_to_write_anyway[]
	INIT(= N_("E509: Cannot create backup file (add ! to override)"));
EXTERN char e_cant_make_backup_file_add_bang_to_write_anyway[]
	INIT(= N_("E510: Can't make backup file (add ! to write anyway)"));
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_netbeans_already_connected[]
	INIT(= N_("E511: netbeans already connected"));
#endif
EXTERN char e_close_failed[]
	INIT(= N_("E512: Close failed"));
EXTERN char e_write_error_conversion_failed_make_fenc_empty_to_override[]
	INIT(= N_("E513: write error, conversion failed (make 'fenc' empty to override)"));
EXTERN char e_write_error_conversion_failed_in_line_nr_make_fenc_empty_to_override[]
	INIT(= N_("E513: write error, conversion failed in line %ld (make 'fenc' empty to override)"));
EXTERN char e_write_error_file_system_full[]
	INIT(= N_("E514: write error (file system full?)"));
EXTERN char e_no_buffers_were_unloaded[]
	INIT(= N_("E515: No buffers were unloaded"));
EXTERN char e_no_buffers_were_deleted[]
	INIT(= N_("E516: No buffers were deleted"));
EXTERN char e_no_buffers_were_wiped_out[]
	INIT(= N_("E517: No buffers were wiped out"));
EXTERN char e_unknown_option[]
	INIT(= N_("E518: Unknown option"));
EXTERN char e_option_not_supported[]
	INIT(= N_("E519: Option not supported"));
EXTERN char e_not_allowed_in_modeline[]
	INIT(= N_("E520: Not allowed in a modeline"));
EXTERN char e_number_required_after_equal[]
	INIT(= N_("E521: Number required after ="));
EXTERN char e_number_required_after_str_equal_str[]
	INIT(= N_("E521: Number required: &%s = '%s'"));
EXTERN char e_not_found_in_termcap[]
	INIT(= N_("E522: Not found in termcap"));
EXTERN char e_not_allowed_here[]
	INIT(= N_("E523: Not allowed here"));
EXTERN char e_missing_colon[]
	INIT(= N_("E524: Missing colon"));
EXTERN char e_zero_length_string[]
	INIT(= N_("E525: Zero length string"));
#ifdef FEAT_VIMINFO
EXTERN char e_missing_number_after_angle_str_angle[]
	INIT(= N_("E526: Missing number after <%s>"));
EXTERN char e_missing_comma[]
	INIT(= N_("E527: Missing comma"));
EXTERN char e_must_specify_a_value[]
	INIT(= N_("E528: Must specify a ' value"));
#endif
EXTERN char e_cannot_set_term_to_empty_string[]
	INIT(= N_("E529: Cannot set 'term' to empty string"));
#ifdef FEAT_GUI
EXTERN char e_cannot_change_term_in_GUI[]
	INIT(= N_("E530: Cannot change 'term' in the GUI"));
EXTERN char e_use_gui_to_start_GUI[]
	INIT(= N_("E531: Use \":gui\" to start the GUI"));
#endif
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_highlighting_color_name_too_long_in_defineAnnoType[]
	INIT(= N_("E532: highlighting color name too long in defineAnnoType"));
#endif
#ifdef FEAT_GUI
EXTERN char e_cant_select_wide_font[]
	INIT(= N_("E533: can't select wide font"));
EXTERN char e_invalid_wide_font[]
	INIT(= N_("E534: Invalid wide font"));
#endif
EXTERN char e_illegal_character_after_chr[]
	INIT(= N_("E535: Illegal character after <%c>"));
#ifdef FEAT_FOLDING
EXTERN char e_comma_required[]
	INIT(= N_("E536: comma required"));
EXTERN char e_commentstring_must_be_empty_or_contain_str[]
	INIT(= N_("E537: 'commentstring' must be empty or contain %s"));
#endif
EXTERN char e_pattern_found_in_every_line_str[]
	INIT(= N_("E538: Pattern found in every line: %s"));
EXTERN char e_illegal_character_str[]
	INIT(= N_("E539: Illegal character <%s>"));
#ifdef FEAT_STL_OPT
EXTERN char e_unclosed_expression_sequence[]
	INIT(= N_("E540: Unclosed expression sequence"));
// E541 unused
EXTERN char e_unbalanced_groups[]
	INIT(= N_("E542: unbalanced groups"));
#endif
#ifdef MSWIN
EXTERN char e_not_valid_codepage[]
	INIT(= N_("E543: Not a valid codepage"));
#endif
#ifdef FEAT_KEYMAP
EXTERN char e_keymap_file_not_found[]
	INIT(= N_("E544: Keymap file not found"));
#endif
#ifdef CURSOR_SHAPE
EXTERN char e_missing_colon_2[]
	INIT(= N_("E545: Missing colon"));
EXTERN char e_illegal_mode[]
	INIT(= N_("E546: Illegal mode"));
#endif
#ifdef FEAT_MOUSESHAPE
EXTERN char e_illegal_mouseshape[]
	INIT(= N_("E547: Illegal mouseshape"));
#endif
EXTERN char e_digit_expected[]
	INIT(= N_("E548: digit expected"));
EXTERN char e_illegal_percentage[]
	INIT(= N_("E549: Illegal percentage"));
#ifdef FEAT_PRINTER
EXTERN char e_missing_colon_3[]
	INIT(= N_("E550: Missing colon"));
EXTERN char e_illegal_component[]
	INIT(= N_("E551: Illegal component"));
EXTERN char e_digit_expected_2[]
	INIT(= N_("E552: digit expected"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_no_more_items[]
	INIT(= N_("E553: No more items"));
#endif
EXTERN char e_syntax_error_in_str_curlies[]
	INIT(= N_("E554: Syntax error in %s{...}"));
EXTERN char e_at_bottom_of_tag_stack[]
	INIT(= N_("E555: at bottom of tag stack"));
EXTERN char e_at_top_of_tag_stack[]
	INIT(= N_("E556: at top of tag stack"));
EXTERN char e_cannot_open_termcap_file[]
	INIT(= N_("E557: Cannot open termcap file"));
EXTERN char e_terminal_entry_not_found_in_terminfo[]
	INIT(= N_("E558: Terminal entry not found in terminfo"));
#if defined(HAVE_TGETENT) && !defined(TERMINFO)
EXTERN char e_terminal_entry_not_found_in_termcap[]
	INIT(= N_("E559: Terminal entry not found in termcap"));
#endif
#ifdef FEAT_CSCOPE
EXTERN char e_usage_cscope_str[]
	INIT(= N_("E560: Usage: cs[cope] %s"));
EXTERN char e_unknown_cscope_search_type[]
	INIT(= N_("E561: unknown cscope search type"));
EXTERN char e_usage_cstag_ident[]
	INIT(= N_("E562: Usage: cstag <ident>"));
EXTERN char e_stat_str_error_nr[]
	INIT(= N_("E563: stat(%s) error: %d"));
EXTERN char e_str_is_not_directory_or_valid_cscope_database[]
	INIT(= N_("E564: %s is not a directory or a valid cscope database"));
#endif
EXTERN char e_not_allowed_to_change_text_or_change_window[]
	INIT(= N_("E565: Not allowed to change text or change window"));
#ifdef FEAT_CSCOPE
EXTERN char e_could_not_create_cscope_pipes[]
	INIT(= N_("E566: Could not create cscope pipes"));
EXTERN char e_no_cscope_connections[]
	INIT(= N_("E567: no cscope connections"));
EXTERN char e_duplicate_cscope_database_not_added[]
	INIT(= N_("E568: duplicate cscope database not added"));
// E569 unused
EXTERN char e_fatal_error_in_cs_manage_matches[]
	INIT(= N_("E570: fatal error in cs_manage_matches"));
#endif
#ifdef DYNAMIC_TCL
EXTERN char e_sorry_this_command_is_disabled_tcl_library_could_not_be_loaded[]
	INIT(= N_("E571: Sorry, this command is disabled: the Tcl library could not be loaded."));
#endif
#ifdef FEAT_TCL
EXTERN char e_exit_code_nr[]
	INIT(= N_("E572: exit code %d"));
#endif
#ifdef FEAT_CLIENTSERVER
EXTERN char e_invalid_server_id_used_str[]
	INIT(= N_("E573: Invalid server id used: %s"));
#endif
#ifdef FEAT_VIMINFO
EXTERN char e_unknown_register_type_nr[]
	INIT(= N_("E574: Unknown register type %d"));
	// E575
EXTERN char e_illegal_starting_char[]
	INIT(= N_("Illegal starting char"));
	// E576
EXTERN char e_nonr_missing_gt[]
	INIT(= N_("Missing '>'"));
	// E577
EXTERN char e_illegal_register_name[]
	INIT(= N_("Illegal register name"));
#endif
EXTERN char e_not_allowed_to_change_text_here[]
	INIT(= N_("E578: Not allowed to change text here"));
#ifdef FEAT_EVAL
EXTERN char e_if_nesting_too_deep[]
	INIT(= N_("E579: :if nesting too deep"));
EXTERN char e_block_nesting_too_deep[]
	INIT(= N_("E579: block nesting too deep"));
EXTERN char e_endif_without_if[]
	INIT(= N_("E580: :endif without :if"));
EXTERN char e_else_without_if[]
	INIT(= N_("E581: :else without :if"));
EXTERN char e_elseif_without_if[]
	INIT(= N_("E582: :elseif without :if"));
EXTERN char e_multiple_else[]
	INIT(= N_("E583: multiple :else"));
EXTERN char e_elseif_after_else[]
	INIT(= N_("E584: :elseif after :else"));
EXTERN char e_while_for_nesting_too_deep[]
	INIT(= N_("E585: :while/:for nesting too deep"));
EXTERN char e_continue_without_while_or_for[]
	INIT(= N_("E586: :continue without :while or :for"));
EXTERN char e_break_without_while_or_for[]
	INIT(= N_("E587: :break without :while or :for"));
EXTERN char e_endwhile_without_while[]
	INIT(= N_("E588: :endwhile without :while"));
EXTERN char e_endfor_without_for[]
	INIT(= N_("E588: :endfor without :for"));
#endif
EXTERN char e_backupext_and_patchmode_are_equal[]
	INIT(= N_("E589: 'backupext' and 'patchmode' are equal"));
#ifdef FEAT_QUICKFIX
EXTERN char e_preview_window_already_exists[]
	INIT(= N_("E590: A preview window already exists"));
#endif
EXTERN char e_winheight_cannot_be_smaller_than_winminheight[]
	INIT(= N_("E591: 'winheight' cannot be smaller than 'winminheight'"));
EXTERN char e_winwidth_cannot_be_smaller_than_winminwidth[]
	INIT(= N_("E592: 'winwidth' cannot be smaller than 'winminwidth'"));
EXTERN char e_need_at_least_nr_lines[]
	INIT(= N_("E593: Need at least %d lines"));
EXTERN char e_need_at_least_nr_columns[]
	INIT(= N_("E594: Need at least %d columns"));
#ifdef FEAT_LINEBREAK
EXTERN char e_showbreak_contains_unprintable_or_wide_character[]
	INIT(= N_("E595: 'showbreak' contains unprintable or wide character"));
#endif
#ifdef FEAT_GUI
EXTERN char e_invalid_fonts[]
	INIT(= N_("E596: Invalid font(s)"));
# ifdef FEAT_XFONTSET
EXTERN char e_cant_select_fontset[]
	INIT(= N_("E597: can't select fontset"));
EXTERN char e_invalid_fontset[]
	INIT(= N_("E598: Invalid fontset"));
# endif
#endif
#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
EXTERN char e_value_of_imactivatekey_is_invalid[]
	INIT(= N_("E599: Value of 'imactivatekey' is invalid"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_missing_endtry[]
	INIT(= N_("E600: Missing :endtry"));
EXTERN char e_try_nesting_too_deep[]
	INIT(= N_("E601: :try nesting too deep"));
EXTERN char e_endtry_without_try[]
	INIT(= N_("E602: :endtry without :try"));
EXTERN char e_catch_without_try[]
	INIT(= N_("E603: :catch without :try"));
EXTERN char e_catch_after_finally[]
	INIT(= N_("E604: :catch after :finally"));
EXTERN char e_exception_not_caught_str[]
	INIT(= N_("E605: Exception not caught: %s"));
EXTERN char e_finally_without_try[]
	INIT(= N_("E606: :finally without :try"));
EXTERN char e_multiple_finally[]
	INIT(= N_("E607: multiple :finally"));
EXTERN char e_cannot_throw_exceptions_with_vim_prefix[]
	INIT(= N_("E608: Cannot :throw exceptions with 'Vim' prefix"));
#endif
#ifdef FEAT_CSCOPE
EXTERN char e_cscope_error_str[]
	INIT(= N_("E609: Cscope error: %s"));
#endif
EXTERN char e_no_argument_to_delete[]
	INIT(= N_("E610: No argument to delete"));
#ifdef FEAT_EVAL
EXTERN char e_using_special_as_number[]
	INIT(= N_("E611: Using a Special as a Number"));
#endif
#ifdef FEAT_SIGNS
EXTERN char e_too_many_signs_defined[]
	INIT(= N_("E612: Too many signs defined"));
#endif
#if defined(MSWIN) && defined(FEAT_PRINTER)
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
#ifdef FEAT_GUI_GTK
EXTERN char e_cannot_be_changed_in_gtk_GUI[]
	INIT(= N_("E617: Cannot be changed in the GTK GUI"));
#endif
#ifdef FEAT_POSTSCRIPT
EXTERN char e_file_str_is_not_postscript_resource_file[]
	INIT(= N_("E618: file \"%s\" is not a PostScript resource file"));
EXTERN char e_file_str_is_not_supported_postscript_resource_file[]
	INIT(= N_("E619: file \"%s\" is not a supported PostScript resource file"));
EXTERN char e_unable_to_convert_to_print_encoding_str[]
	INIT(= N_("E620: Unable to convert to print encoding \"%s\""));
EXTERN char e_str_resource_file_has_wrong_version[]
	INIT(= N_("E621: \"%s\" resource file has wrong version"));
#endif
#ifdef FEAT_CSCOPE
EXTERN char e_could_not_fork_for_cscope[]
	INIT(= N_("E622: Could not fork for cscope"));
# ifndef UNIX
EXTERN char e_could_not_spawn_cscope_process[]
	INIT(= N_("E623: Could not spawn cscope process"));
# endif
#endif
#if defined(FEAT_PRINTER) && defined(FEAT_POSTSCRIPT)
EXTERN char e_cant_open_file_str_3[]
	INIT(= N_("E624: Can't open file \"%s\""));
#endif
#if defined(FEAT_CSCOPE) && !defined(UNIX)
EXTERN char e_cannot_open_cscope_database_str[]
	INIT(= N_("E625: cannot open cscope database: %s"));
EXTERN char e_cannot_get_cscope_database_information[]
	INIT(= N_("E626: cannot get cscope database information"));
#endif
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_missing_colon_str[]
	INIT(= "E627: missing colon: %s");
EXTERN char e_missing_bang_or_slash_in_str[]
	INIT(= "E628: missing ! or / in: %s");
#ifdef NBDEBUG
EXTERN char e_bad_return_from_nb_do_cmd[]
	INIT(= "E629: bad return from nb_do_cmd");
#endif
#endif
#ifdef FEAT_JOB_CHANNEL
EXTERN char e_str_write_while_not_connected[]
	INIT(= N_("E630: %s(): write while not connected"));
EXTERN char e_str_write_failed[]
	INIT(= N_("E631: %s(): write failed"));
#endif
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_invalid_buffer_identifier_in_getlength[]
	INIT(= "E632: invalid buffer identifier in getLength");
EXTERN char e_invalid_buffer_identifier_in_gettext[]
	INIT(= "E633: invalid buffer identifier in getText");
EXTERN char e_invalid_buffer_identifier_in_remove[]
	INIT(= "E634: invalid buffer identifier in remove");
EXTERN char e_invalid_buffer_identifier_in_insert[]
	INIT(= "E635: invalid buffer identifier in insert");
EXTERN char e_invalid_buffer_identifier_in_create[]
	INIT(= "E636: invalid buffer identifier in create");
EXTERN char e_invalid_buffer_identifier_in_startdocumentlisten[]
	INIT(= "E637: invalid buffer identifier in startDocumentListen");
EXTERN char e_invalid_buffer_identifier_in_stopdocumentlisten[]
	INIT(= "E638: invalid buffer identifier in stopDocumentListen");
EXTERN char e_invalid_buffer_identifier_in_settitle[]
	INIT(= "E639: invalid buffer identifier in setTitle");
EXTERN char e_invalid_buffer_identifier_in_initdone[]
	INIT(= "E640: invalid buffer identifier in initDone");
EXTERN char e_invalid_buffer_identifier_in_setbuffernumber[]
	INIT(= "E641: invalid buffer identifier in setBufferNumber");
EXTERN char e_file_str_not_found_in_setbuffernumber[]
	INIT(= "E642: File %s not found in setBufferNumber");
EXTERN char e_invalid_buffer_identifier_in_setfullname[]
	INIT(= "E643: invalid buffer identifier in setFullName");
EXTERN char e_invalid_buffer_identifier_in_editfile[]
	INIT(= "E644: invalid buffer identifier in editFile");
EXTERN char e_invalid_buffer_identifier_in_setvisible[]
	INIT(= "E645: invalid buffer identifier in setVisible");
EXTERN char e_invalid_buffer_identifier_in_setmodified[]
	INIT(= "E646: invalid buffer identifier in setModified");
EXTERN char e_invalid_buffer_identifier_in_setdot[]
	INIT(= "E647: invalid buffer identifier in setDot");
EXTERN char e_invalid_buffer_identifier_in_close[]
	INIT(= "E648: invalid buffer identifier in close");
EXTERN char e_invalid_buffer_identifier_in_close_2[]
	INIT(= "E649: invalid buffer identifier in close");
EXTERN char e_invalid_buffer_identifier_in_defineannotype[]
	INIT(= "E650: invalid buffer identifier in defineAnnoType");
EXTERN char e_invalid_buffer_identifier_in_addanno[]
	INIT(= "E651: invalid buffer identifier in addAnno");
EXTERN char e_invalid_buffer_identifier_in_getanno[]
	INIT(= "E652: Invalid buffer identifier in getAnno");
#endif
// E653 unused
EXTERN char e_missing_delimiter_after_search_pattern_str[]
	INIT(= N_("E654: missing delimiter after search pattern: %s"));
#ifdef FEAT_EVAL
EXTERN char e_too_many_symbolic_links_cycle[]
	INIT(= N_("E655: Too many symbolic links (cycle?)"));
#endif
#ifdef FEAT_NETBEANS_INTG
	// E656
EXTERN char e_netbeans_disallows_writes_of_unmodified_buffers[]
	INIT(= N_("NetBeans disallows writes of unmodified buffers"));
	// E657
EXTERN char e_partial_writes_disallowed_for_netbeans_buffers[]
	INIT(= N_("Partial writes disallowed for NetBeans buffers"));
EXTERN char e_netbeans_connection_lost_for_buffer_nr[]
	INIT(= N_("E658: NetBeans connection lost for buffer %d"));
#endif
#ifdef FEAT_PYTHON
EXTERN char e_cannot_invoke_python_recursively[]
	INIT(= N_("E659: Cannot invoke Python recursively"));
#endif
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_cannot_open_netbeans_connection_info_file[]
	INIT(= "E660: Cannot open NetBeans connection info file");
#endif
#ifdef FEAT_MULTI_LANG
EXTERN char e_sorry_no_str_help_for_str[]
	INIT(= N_("E661: Sorry, no '%s' help for %s"));
#endif
EXTERN char e_at_start_of_changelist[]
	INIT(= N_("E662: At start of changelist"));
EXTERN char e_at_end_of_changelist[]
	INIT(= N_("E663: At end of changelist"));
EXTERN char e_changelist_is_empty[]
	INIT(= N_("E664: changelist is empty"));
#ifdef FEAT_GUI
EXTERN char e_cannot_start_gui_no_valid_font_found[]
	INIT(= N_("E665: Cannot start GUI, no valid font found"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_compiler_not_supported_str[]
	INIT(= N_("E666: compiler not supported: %s"));
#endif
#ifdef HAVE_FSYNC
EXTERN char e_fsync_failed[]
	INIT(= N_("E667: Fsync failed"));
#endif
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_wrong_access_mode_for_netbeans_connection_info_file_str[]
	INIT(= N_("E668: Wrong access mode for NetBeans connection info file: \"%s\""));
#endif
EXTERN char e_unprintable_character_in_group_name[]
	INIT(= N_("E669: Unprintable character in group name"));
EXTERN char e_mix_of_help_file_encodings_within_language_str[]
	INIT(= N_("E670: Mix of help file encodings within a language: %s"));
#ifdef FEAT_GUI_MSWIN
EXTERN char e_cannot_find_window_title_str[]
	INIT(= N_("E671: Cannot find window title \"%s\""));
EXTERN char e_unable_to_open_window_inside_mdi_application[]
	INIT(= N_("E672: Unable to open window inside MDI application"));
#endif
#if defined(FEAT_PRINTER) && defined(FEAT_POSTSCRIPT)
EXTERN char e_incompatible_multi_byte_encoding_and_character_set[]
	INIT(= N_("E673: Incompatible multi-byte encoding and character set"));
EXTERN char e_printmbcharset_cannot_be_empty_with_multi_byte_encoding[]
	INIT(= N_("E674: printmbcharset cannot be empty with multi-byte encoding."));
EXTERN char e_no_default_font_specified_for_multi_byte_printing[]
	INIT(= N_("E675: No default font specified for multi-byte printing."));
#endif
EXTERN char e_no_matching_autocommands_for_acwrite_buffer[]
	INIT(= N_("E676: No matching autocommands for acwrite buffer"));
#ifdef FEAT_SYN_HL
EXTERN char e_error_writing_temp_file[]
	INIT(= N_("E677: Error writing temp file"));
#endif
EXTERN char e_invalid_character_after_str_2[]
	INIT(= N_("E678: Invalid character after %s%%[dxouU]"));
#ifdef FEAT_SYN_HL
EXTERN char e_recursive_loop_loading_syncolor_vim[]
	INIT(= N_("E679: recursive loop loading syncolor.vim"));
#endif
EXTERN char e_buffer_nr_invalid_buffer_number[]
	INIT(= N_("E680: <buffer=%d>: invalid buffer number"));
#ifdef FEAT_QUICKFIX
EXTERN char e_buffer_is_not_loaded[]
	INIT(= N_("E681: Buffer is not loaded"));
EXTERN char e_invalid_search_pattern_or_delimiter[]
	INIT(= N_("E682: Invalid search pattern or delimiter"));
EXTERN char e_file_name_missing_or_invalid_pattern[]
	INIT(= N_("E683: File name missing or invalid pattern"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_list_index_out_of_range_nr[]
	INIT(= N_("E684: list index out of range: %ld"));
#endif
EXTERN char e_internal_error_str[]
	INIT(= N_("E685: Internal error: %s"));
#ifdef FEAT_EVAL
EXTERN char e_argument_of_str_must_be_list[]
	INIT(= N_("E686: Argument of %s must be a List"));
EXTERN char e_less_targets_than_list_items[]
	INIT(= N_("E687: Less targets than List items"));
EXTERN char e_more_targets_than_list_items[]
	INIT(= N_("E688: More targets than List items"));
EXTERN char e_can_only_index_list_dictionary_or_blob[]
	INIT(= N_("E689: Can only index a List, Dictionary or Blob"));
EXTERN char e_missing_in_after_for[]
	INIT(= N_("E690: Missing \"in\" after :for"));
EXTERN char e_can_only_compare_list_with_list[]
	INIT(= N_("E691: Can only compare List with List"));
EXTERN char e_invalid_operation_for_list[]
	INIT(= N_("E692: Invalid operation for List"));
// E693 unused
EXTERN char e_invalid_operation_for_funcrefs[]
	INIT(= N_("E694: Invalid operation for Funcrefs"));
EXTERN char e_cannot_index_a_funcref[]
	INIT(= N_("E695: Cannot index a Funcref"));
EXTERN char e_missing_comma_in_list_str[]
	INIT(= N_("E696: Missing comma in List: %s"));
EXTERN char e_missing_end_of_list_rsb_str[]
	INIT(= N_("E697: Missing end of List ']': %s"));
EXTERN char e_variable_nested_too_deep_for_making_copy[]
	INIT(= N_("E698: variable nested too deep for making a copy"));
EXTERN char e_too_many_arguments[]
	INIT(= N_("E699: Too many arguments"));
EXTERN char e_unknown_function_str_2[]
	INIT(= N_("E700: Unknown function: %s"));
EXTERN char e_invalid_type_for_len[]
	INIT(= N_("E701: Invalid type for len()"));
EXTERN char e_sort_compare_function_failed[]
	INIT(= N_("E702: Sort compare function failed"));
EXTERN char e_using_funcref_as_number[]
	INIT(= N_("E703: Using a Funcref as a Number"));
EXTERN char e_funcref_variable_name_must_start_with_capital_str[]
	INIT(= N_("E704: Funcref variable name must start with a capital: %s"));
EXTERN char e_variable_name_conflicts_with_existing_function_str[]
	INIT(= N_("E705: Variable name conflicts with existing function: %s"));
// E706 unused
EXTERN char e_function_name_conflicts_with_variable_str[]
	INIT(= N_("E707: Function name conflicts with variable: %s"));
EXTERN char e_slice_must_come_last[]
	INIT(= N_("E708: [:] must come last"));
EXTERN char e_slice_requires_list_or_blob_value[]
	INIT(= N_("E709: [:] requires a List or Blob value"));
EXTERN char e_list_value_has_more_items_than_targets[]
	INIT(= N_("E710: List value has more items than targets"));
EXTERN char e_list_value_does_not_have_enough_items[]
	INIT(= N_("E711: List value does not have enough items"));
EXTERN char e_argument_of_str_must_be_list_or_dictionary[]
	INIT(= N_("E712: Argument of %s must be a List or Dictionary"));
EXTERN char e_cannot_use_empty_key_for_dictionary[]
	INIT(= N_("E713: Cannot use empty key for Dictionary"));
EXTERN char e_list_required[]
	INIT(= N_("E714: List required"));
EXTERN char e_dictionary_required[]
	INIT(= N_("E715: Dictionary required"));
EXTERN char e_key_not_present_in_dictionary[]
	INIT(= N_("E716: Key not present in Dictionary: \"%s\""));
EXTERN char e_dictionary_entry_already_exists[]
	INIT(= N_("E717: Dictionary entry already exists"));
EXTERN char e_funcref_required[]
	INIT(= N_("E718: Funcref required"));
EXTERN char e_cannot_slice_dictionary[]
	INIT(= N_("E719: Cannot slice a Dictionary"));
EXTERN char e_missing_colon_in_dictionary[]
	INIT(= N_("E720: Missing colon in Dictionary: %s"));
EXTERN char e_duplicate_key_in_dicitonary[]
	INIT(= N_("E721: Duplicate key in Dictionary: \"%s\""));
EXTERN char e_missing_comma_in_dictionary[]
	INIT(= N_("E722: Missing comma in Dictionary: %s"));
EXTERN char e_missing_dict_end[]
	INIT(= N_("E723: Missing end of Dictionary '}': %s"));
EXTERN char e_variable_nested_too_deep_for_displaying[]
	INIT(= N_("E724: variable nested too deep for displaying"));
EXTERN char e_calling_dict_function_without_dictionary_str[]
	INIT(= N_("E725: Calling dict function without Dictionary: %s"));
EXTERN char e_stride_is_zero[]
	INIT(= N_("E726: Stride is zero"));
EXTERN char e_start_past_end[]
	INIT(= N_("E727: Start past end"));
EXTERN char e_using_dictionary_as_number[]
	INIT(= N_("E728: Using a Dictionary as a Number"));
EXTERN char e_using_funcref_as_string[]
	INIT(= N_("E729: Using a Funcref as a String"));
EXTERN char e_using_list_as_string[]
	INIT(= N_("E730: Using a List as a String"));
EXTERN char e_using_dictionary_as_string[]
	INIT(= N_("E731: Using a Dictionary as a String"));
EXTERN char e_using_endfor_with_while[]
	INIT(= N_("E732: Using :endfor with :while"));
EXTERN char e_using_endwhile_with_for[]
	INIT(= N_("E733: Using :endwhile with :for"));
EXTERN char e_wrong_variable_type_for_str_equal[]
	INIT(= N_("E734: Wrong variable type for %s="));
EXTERN char e_can_only_compare_dictionary_with_dictionary[]
	INIT(= N_("E735: Can only compare Dictionary with Dictionary"));
EXTERN char e_invalid_operation_for_dictionary[]
	INIT(= N_("E736: Invalid operation for Dictionary"));
EXTERN char e_key_already_exists_str[]
	INIT(= N_("E737: Key already exists: %s"));
EXTERN char e_cant_list_variables_for_str[]
	INIT(= N_("E738: Can't list variables for %s"));
EXTERN char e_cannot_create_directory_str[]
	INIT(= N_("E739: Cannot create directory: %s"));
EXTERN char e_too_many_arguments_for_function_str_2[]
	INIT(= N_("E740: Too many arguments for function %s"));
EXTERN char e_value_is_locked[]
	INIT(= N_("E741: Value is locked"));
EXTERN char e_value_is_locked_str[]
	INIT(= N_("E741: Value is locked: %s"));
EXTERN char e_cannot_change_value[]
	INIT(= N_("E742: Cannot change value"));
EXTERN char e_cannot_change_value_of_str[]
	INIT(= N_("E742: Cannot change value of %s"));
EXTERN char e_variable_nested_too_deep_for_unlock[]
	INIT(= N_("E743: variable nested too deep for (un)lock"));
#endif
#ifdef FEAT_NETBEANS_INTG
EXTERN char e_netbeans_does_not_allow_changes_in_read_only_files[]
	INIT(= N_("E744: NetBeans does not allow changes in read-only files"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_using_list_as_number[]
	INIT(= N_("E745: Using a List as a Number"));
EXTERN char e_function_name_does_not_match_script_file_name_str[]
	INIT(= N_("E746: Function name does not match script file name: %s"));
#endif
EXTERN char e_cannot_change_directory_buffer_is_modified_add_bang_to_override[]
	INIT(= N_("E747: Cannot change directory, buffer is modified (add ! to override)"));
EXTERN char e_no_previously_used_register[]
	INIT(= N_("E748: No previously used register"));
EXTERN char e_empty_buffer[]
	INIT(= N_("E749: empty buffer"));
#ifdef FEAT_PROFILE
EXTERN char e_first_use_profile_start_fname[]
	INIT(= N_("E750: First use \":profile start {fname}\""));
#endif
#ifdef FEAT_SPELL
EXTERN char e_output_file_name_must_not_have_region_name[]
	INIT(= N_("E751: Output file name must not have region name"));
EXTERN char e_no_previous_spell_replacement[]
	INIT(= N_("E752: No previous spell replacement"));
EXTERN char e_not_found_str[]
	INIT(= N_("E753: Not found: %s"));
EXTERN char e_only_up_to_nr_regions_supported[]
	INIT(= N_("E754: Only up to %d regions supported"));
EXTERN char e_invalid_region_in_str[]
	INIT(= N_("E755: Invalid region in %s"));
EXTERN char e_spell_checking_is_not_possible[]
	INIT(= N_("E756: Spell checking is not possible"));
EXTERN char e_this_does_not_look_like_spell_file[]
	INIT(= N_("E757: This does not look like a spell file"));
EXTERN char e_truncated_spell_file[]
	INIT(= N_("E758: Truncated spell file"));
EXTERN char e_format_error_in_spell_file[]
	INIT(= N_("E759: Format error in spell file"));
EXTERN char e_no_word_count_in_str[]
	INIT(= N_("E760: No word count in %s"));
EXTERN char e_format_error_in_affix_file_fol_low_or_upp[]
	INIT(= N_("E761: Format error in affix file FOL, LOW or UPP"));
EXTERN char e_character_in_fol_low_or_upp_is_out_of_range[]
	INIT(= N_("E762: Character in FOL, LOW or UPP is out of range"));
EXTERN char e_word_characters_differ_between_spell_files[]
	INIT(= N_("E763: Word characters differ between spell files"));
#endif
#if defined(FEAT_SYN_HL) || defined(FEAT_COMPL_FUNC)
EXTERN char e_option_str_is_not_set[]
	INIT(= N_("E764: Option '%s' is not set"));
#endif
#ifdef FEAT_SPELL
EXTERN char e_spellfile_does_not_have_nr_entries[]
	INIT(= N_("E765: 'spellfile' does not have %d entries"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_insufficient_arguments_for_printf[]
	INIT(= N_("E766: Insufficient arguments for printf()"));
#endif
EXTERN char e_too_many_arguments_to_printf[]
	INIT(= N_("E767: Too many arguments for printf()"));
EXTERN char e_swap_file_exists_str_silent_overrides[]
	INIT(= N_("E768: Swap file exists: %s (:silent! overrides)"));
EXTERN char e_missing_rsb_after_str_lsb[]
	INIT(= N_("E769: Missing ] after %s["));
#ifdef FEAT_SPELL
EXTERN char e_unsupported_section_in_spell_file[]
	INIT(= N_("E770: Unsupported section in spell file"));
EXTERN char e_old_spell_file_needs_to_be_updated[]
	INIT(= N_("E771: Old spell file, needs to be updated"));
EXTERN char e_spell_file_is_for_newer_version_of_vim[]
	INIT(= N_("E772: Spell file is for newer version of Vim"));
#endif
EXTERN char e_symlink_loop_for_str[]
	INIT(= N_("E773: Symlink loop for \"%s\""));
#ifdef FEAT_EVAL
EXTERN char e_operatorfunc_is_empty[]
	INIT(= N_("E774: 'operatorfunc' is empty"));
#else
EXTERN char e_eval_feature_not_available[]
	INIT(= N_("E775: Eval feature not available"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_no_location_list[]
	INIT(= N_("E776: No location list"));
# ifdef FEAT_EVAL
EXTERN char e_string_or_list_expected[]
	INIT(= N_("E777: String or List expected"));
# endif
#endif
#ifdef FEAT_SPELL
EXTERN char e_this_does_not_look_like_sug_file_str[]
	INIT(= N_("E778: This does not look like a .sug file: %s"));
EXTERN char e_old_sug_file_needs_to_be_updated_str[]
	INIT(= N_("E779: Old .sug file, needs to be updated: %s"));
EXTERN char e_sug_file_is_for_newer_version_of_vim_str[]
	INIT(= N_("E780: .sug file is for newer version of Vim: %s"));
EXTERN char e_sug_file_doesnt_match_spl_file_str[]
	INIT(= N_("E781: .sug file doesn't match .spl file: %s"));
EXTERN char e_error_while_reading_sug_file_str[]
	INIT(= N_("E782: error while reading .sug file: %s"));
EXTERN char e_duplicate_char_in_map_entry[]
	INIT(= N_("E783: duplicate char in MAP entry"));
#endif
EXTERN char e_cannot_close_last_tab_page[]
	INIT(= N_("E784: Cannot close last tab page"));
#ifdef FEAT_EVAL
# ifdef FEAT_COMPL_FUNC
EXTERN char e_complete_can_only_be_used_in_insert_mode[]
	INIT(= N_("E785: complete() can only be used in Insert mode"));
# endif
EXTERN char e_range_not_allowed[]
	INIT(= N_("E786: Range not allowed"));
#endif
#ifdef FEAT_DIFF
EXTERN char e_buffer_changed_unexpectedly[]
	INIT(= N_("E787: Buffer changed unexpectedly"));
#endif
EXTERN char e_not_allowed_to_edit_another_buffer_now[]
	INIT(= N_("E788: Not allowed to edit another buffer now"));
#ifdef FEAT_SYN_HL
EXTERN char e_error_missing_rsb_str[]
	INIT(= N_("E789: Missing ']': %s"));
#endif
EXTERN char e_undojoin_is_not_allowed_after_undo[]
	INIT(= N_("E790: undojoin is not allowed after undo"));
#ifdef FEAT_KEYMAP
EXTERN char e_empty_keymap_entry[]
	INIT(= N_("E791: Empty keymap entry"));
#endif
#ifdef FEAT_MENU
EXTERN char e_empty_menu_name[]
	INIT(= N_("E792: Empty menu name"));
#endif
#ifdef FEAT_DIFF
EXTERN char e_no_other_buffer_in_diff_mode_is_modifiable[]
	INIT(= N_("E793: No other buffer in diff mode is modifiable"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_cannot_set_variable_in_sandbox[]
	INIT(= N_("E794: Cannot set variable in the sandbox"));
EXTERN char e_cannot_set_variable_in_sandbox_str[]
	INIT(= N_("E794: Cannot set variable in the sandbox: \"%s\""));
EXTERN char e_cannot_delete_variable[]
	INIT(= N_("E795: Cannot delete variable"));
EXTERN char e_cannot_delete_variable_str[]
	INIT(= N_("E795: Cannot delete variable %s"));
	// E796
# ifdef MSWIN
EXTERN char e_writing_to_device_disabled_with_opendevice_option[]
	INIT(= N_("writing to device disabled with 'opendevice' option"));
# endif
#endif
#ifdef FEAT_SPELL
EXTERN char e_spellfilemising_autocommand_deleted_buffer[]
	INIT(= N_("E797: SpellFileMissing autocommand deleted buffer"));
#endif
#ifdef FEAT_SEARCH_EXTRA
EXTERN char e_id_is_reserved_for_match_nr[]
	INIT(= N_("E798: ID is reserved for \":match\": %d"));
EXTERN char e_invalid_id_nr_must_be_greater_than_or_equal_to_one_1[]
	INIT(= N_("E799: Invalid ID: %d (must be greater than or equal to 1)"));
#endif
#ifndef FEAT_ARABIC
EXTERN char e_arabic_cannot_be_used_not_enabled_at_compile_time[]
	INIT(= N_("E800: Arabic cannot be used: Not enabled at compile time\n"));
#endif
#ifdef FEAT_SEARCH_EXTRA
EXTERN char e_id_already_taken_nr[]
	INIT(= N_("E801: ID already taken: %d"));
EXTERN char e_invalid_id_nr_must_be_greater_than_or_equal_to_one_2[]
	INIT(= N_("E802: Invalid ID: %d (must be greater than or equal to 1)"));
EXTERN char e_id_not_found_nr[]
	INIT(= N_("E803: ID not found: %d"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_percent_with_float[]
	// xgettext:no-c-format
	INIT(= N_("E804: Cannot use '%' with Float"));
#endif
#ifdef FEAT_FLOAT
EXTERN char e_using_float_as_number[]
	INIT(= N_("E805: Using a Float as a Number"));
EXTERN char e_using_float_as_string[]
	INIT(= N_("E806: using Float as a String"));
#endif
#ifdef FEAT_FLOAT
EXTERN char e_expected_float_argument_for_printf[]
	INIT(= N_("E807: Expected Float argument for printf()"));
#endif
#if defined(FEAT_EVAL) && defined(FEAT_FLOAT)
EXTERN char e_number_or_float_required[]
	INIT(= N_("E808: Number or Float required"));
#endif
#ifndef FEAT_EVAL
EXTERN char e_hashsmall_is_not_available_without_the_eval_feature[]
	INIT(= N_("E809: #< is not available without the +eval feature"));
#endif
#ifdef FEAT_DIFF
EXTERN char e_cannot_read_or_write_temp_files[]
	INIT(= N_("E810: Cannot read or write temp files"));
#endif
EXTERN char e_not_allowed_to_change_buffer_information_now[]
	INIT(= N_("E811: Not allowed to change buffer information now"));
EXTERN char e_autocommands_changed_buffer_or_buffer_name[]
	INIT(= N_("E812: Autocommands changed buffer or buffer name"));
EXTERN char e_cannot_close_autocmd_or_popup_window[]
	INIT(= N_("E813: Cannot close autocmd or popup window"));
EXTERN char e_cannot_close_window_only_autocmd_window_would_remain[]
	INIT(= N_("E814: Cannot close window, only autocmd window would remain"));
#ifdef FEAT_MZSCHEME
EXTERN char e_sorry_this_command_is_disabled_the_mzscheme_libraries_could_not_be_loaded[]
	INIT(= N_("E815: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
#endif
#ifdef FEAT_DIFF
EXTERN char e_cannot_read_patch_output[]
	INIT(= N_("E816: Cannot read patch output"));
#endif
#ifdef FEAT_CRYPT
EXTERN char e_blowfish_big_little_endian_use_wrong[]
	INIT(= N_("E817: Blowfish big/little endian use wrong"));
EXTERN char e_sha256_test_failed[]
	INIT(= N_("E818: sha256 test failed"));
EXTERN char e_blowfish_test_failed[]
	INIT(= N_("E819: Blowfish test failed"));
EXTERN char e_sizeof_uint32_isnot_four[]
	INIT(= N_("E820: sizeof(uint32_t) != 4"));
EXTERN char e_file_is_encrypted_with_unknown_method[]
	INIT(= N_("E821: File is encrypted with unknown method"));
#endif
#ifdef FEAT_PERSISTENT_UNDO
EXTERN char e_cannot_open_undo_file_for_reading_str[]
	INIT(= N_("E822: Cannot open undo file for reading: %s"));
EXTERN char e_not_an_undo_file_str[]
	INIT(= N_("E823: Not an undo file: %s"));
EXTERN char e_incompatible_undo_file_str[]
	INIT(= N_("E824: Incompatible undo file: %s"));
EXTERN char e_corrupted_undo_file_str_str[]
	INIT(= N_("E825: Corrupted undo file (%s): %s"));
# ifdef FEAT_CRYPT
EXTERN char e_undo_file_decryption_failed[]
	INIT(= N_("E826: Undo file decryption failed: %s"));
# else
EXTERN char e_undo_file_is_encrypted_str[]
	INIT(= N_("E827: Undo file is encrypted: %s"));
# endif
EXTERN char e_cannot_open_undo_file_for_writing_str[]
	INIT(= N_("E828: Cannot open undo file for writing: %s"));
EXTERN char e_write_error_in_undo_file_str[]
	INIT(= N_("E829: write error in undo file: %s"));
#endif
EXTERN char e_undo_number_nr_not_found[]
	INIT(= N_("E830: Undo number %ld not found"));
#ifdef FEAT_CRYPT
EXTERN char e_bf_key_init_called_with_empty_password[]
	INIT(= N_("E831: bf_key_init() called with empty password"));
# ifdef FEAT_PERSISTENT_UNDO
EXTERN char e_non_encrypted_file_has_encrypted_undo_file[]
	INIT(= N_("E832: Non-encrypted file has encrypted undo file: %s"));
# endif
#else
EXTERN char e_str_is_encrypted_and_this_version_of_vim_does_not_support_encryption[]
	INIT(= N_("E833: %s is encrypted and this version of Vim does not support encryption"));
#endif
EXTERN char e_conflicts_with_value_of_listchars[]
	INIT(= N_("E834: Conflicts with value of 'listchars'"));
EXTERN char e_conflicts_with_value_of_fillchars[]
	INIT(= N_("E835: Conflicts with value of 'fillchars'"));
#ifdef DYNAMIC_PYTHON
EXTERN char e_this_vim_cannot_execute_python_after_using_py3[]
	INIT(= N_("E836: This Vim cannot execute :python after using :py3"));
EXTERN char e_this_vim_cannot_execute_py3_after_using_python[]
	INIT(= N_("E837: This Vim cannot execute :py3 after using :python"));
#endif
#if defined(FEAT_NETBEANS_INTG) && defined(FEAT_GUI)
EXTERN char e_netbeans_is_not_supported_with_this_GUI[]
	INIT(= N_("E838: netbeans is not supported with this GUI"));
#endif
// E839 unused
# ifdef FEAT_COMPL_FUNC
EXTERN char e_complete_function_deleted_text[]
	INIT(= N_("E840: Completion function deleted text"));
# endif
EXTERN char e_reserved_name_cannot_be_used_for_user_defined_command[]
	INIT(= N_("E841: Reserved name, cannot be used for user defined command"));
EXTERN char e_no_line_number_to_use_for_slnum[]
	INIT(= N_("E842: no line number to use for \"<slnum>\""));
#ifdef FEAT_CRYPT
EXTERN char e_error_while_updating_swap_file_crypt[]
	INIT(= N_("E843: Error while updating swap file crypt"));
#endif
#ifdef FEAT_CONCEAL
EXTERN char e_invalid_cchar_value[]
	INIT(= N_("E844: invalid cchar value"));
#endif
#ifdef FEAT_SPELL
EXTERN char e_insufficient_memory_word_list_will_be_incomplete[]
	INIT(= N_("E845: Insufficient memory, word list will be incomplete"));
#endif
EXTERN char e_key_code_not_set[]
	INIT(= N_("E846: Key code not set"));
#ifdef FEAT_SYN_HL
EXTERN char e_too_many_syntax_includes[]
	INIT(= N_("E847: Too many syntax includes"));
EXTERN char e_too_many_syntax_clusters[]
	INIT(= N_("E848: Too many syntax clusters"));
#endif
EXTERN char e_too_many_highlight_and_syntax_groups[]
	INIT(= N_("E849: Too many highlight and syntax groups"));
#ifndef FEAT_CLIPBOARD
EXTERN char e_invalid_register_name[]
	INIT(= N_("E850: Invalid register name"));
#endif
#ifdef FEAT_GUI
EXTERN char e_failed_to_create_new_process_for_GUI[]
	INIT(= N_("E851: Failed to create a new process for the GUI"));
EXTERN char e_the_child_process_failed_to_start_GUI[]
	INIT(= N_("E852: The child process failed to start the GUI"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_duplicate_argument_name_str[]
	INIT(= N_("E853: Duplicate argument name: %s"));
#endif
EXTERN char e_path_too_long_for_completion[]
	INIT(= N_("E854: path too long for completion"));
EXTERN char e_autocommands_caused_command_to_abort[]
	INIT(= N_("E855: Autocommands caused command to abort"));
#ifdef FEAT_EVAL
EXTERN char e_assert_fails_second_arg[]
	INIT(= N_("E856: \"assert_fails()\" second argument must be a string or a list with one or two strings"));
EXTERN char e_dictionary_key_str_required[]
	INIT(= N_("E857: Dictionary key \"%s\" required"));
#endif
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
EXTERN char e_eval_did_not_return_valid_python_object[]
	INIT(= N_("E858: Eval did not return a valid python object"));
EXTERN char e_failed_to_convert_returned_python_object_to_vim_value[]
	INIT(= N_("E859: Failed to convert returned python object to a Vim value"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char e_need_id_and_type_with_both[]
	INIT(= N_("E860: Need 'id' and 'type' with 'both'"));
# ifdef FEAT_TERMINAL
EXTERN char e_cannot_open_second_popup_with_terminal[]
	INIT(= N_("E861: Cannot open a second popup with a terminal"));
# endif
#endif
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_g_here[]
	INIT(= N_("E862: Cannot use g: here"));
#endif
#if defined(FEAT_PROP_POPUP) && defined(FEAT_TERMINAL)
EXTERN char e_not_allowed_for_terminal_in_popup_window[]
	INIT(= N_("E863: Not allowed for a terminal in a popup window"));
#endif
EXTERN char e_percent_hash_can_only_be_followed_by_zero_one_two_automatic_engine_will_be_used[]
	// xgettext:no-c-format
	INIT(= N_("E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be used"));
EXTERN char e_nfa_regexp_end_encountered_prematurely[]
	INIT(= N_("E865: (NFA) Regexp end encountered prematurely"));
EXTERN char e_nfa_regexp_misplaced_chr[]
	INIT(= N_("E866: (NFA regexp) Misplaced %c"));
EXTERN char e_nfa_regexp_unknown_operator_z_chr[]
	INIT(= N_("E867: (NFA regexp) Unknown operator '\\z%c'"));
EXTERN char e_nfa_regexp_unknown_operator_percent_chr[]
	INIT(= N_("E867: (NFA regexp) Unknown operator '\\%%%c'"));
EXTERN char e_error_building_nfa_with_equivalence_class[]
	INIT(= N_("E868: Error building NFA with equivalence class!"));
EXTERN char e_nfa_regexp_unknown_operator_at_chr[]
	INIT(= N_("E869: (NFA regexp) Unknown operator '\\@%c'"));
EXTERN char e_nfa_regexp_error_reading_repetition_limits[]
	INIT(= N_("E870: (NFA regexp) Error reading repetition limits"));
EXTERN char e_nfa_regexp_cant_have_multi_follow_multi[]
	INIT(= N_("E871: (NFA regexp) Can't have a multi follow a multi"));
EXTERN char e_nfa_regexp_too_many_parens[]
	INIT(= N_("E872: (NFA regexp) Too many '('"));
EXTERN char e_nfa_regexp_proper_termination_error[]
	INIT(= N_("E873: (NFA regexp) proper termination error"));
EXTERN char e_nfa_regexp_could_not_pop_stack[]
	INIT(= N_("E874: (NFA regexp) Could not pop the stack!"));
EXTERN char e_nfa_regexp_while_converting_from_postfix_to_nfa_too_many_stats_left_on_stack[]
	INIT(= N_("E875: (NFA regexp) (While converting from postfix to NFA), too many states left on stack"));
EXTERN char e_nfa_regexp_not_enough_space_to_store_whole_nfa[]
	INIT(= N_("E876: (NFA regexp) Not enough space to store the whole NFA"));
EXTERN char e_nfa_regexp_invalid_character_class_nr[]
	INIT(= N_("E877: (NFA regexp) Invalid character class: %d"));
EXTERN char e_nfa_regexp_could_not_allocate_memory_for_branch_traversal[]
	INIT(= N_("E878: (NFA regexp) Could not allocate memory for branch traversal!"));
#ifdef FEAT_SYN_HL
EXTERN char e_nfa_regexp_too_many_z[]
	INIT(= N_("E879: (NFA regexp) Too many \\z("));
#endif
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
EXTERN char e_cant_handle_systemexit_of_python_exception_in_vim[]
	INIT(= N_("E880: Can't handle SystemExit of python exception in vim"));
#endif
EXTERN char e_line_count_changed_unexpectedly[]
	INIT(= N_("E881: Line count changed unexpectedly"));
#ifdef FEAT_EVAL
EXTERN char e_uniq_compare_function_failed[]
	INIT(= N_("E882: Uniq compare function failed"));
EXTERN char e_search_pattern_and_expression_register_may_not_contain_two_or_more_lines[]
	INIT(= N_("E883: search pattern and expression register may not contain two or more lines"));
EXTERN char e_function_name_cannot_contain_colon_str[]
	INIT(= N_("E884: Function name cannot contain a colon: %s"));
#endif
#ifdef FEAT_SIGNS
EXTERN char e_not_possible_to_change_sign_str[]
	INIT(= N_("E885: Not possible to change sign %s"));
#endif
#ifdef FEAT_VIMINFO
EXTERN char e_cant_rename_viminfo_file_to_str[]
	INIT(= N_("E886: Can't rename viminfo file to %s!"));
#endif
EXTERN char e_sorry_this_command_is_disabled_python_side_module_could_not_be_loaded[]
	INIT(= N_("E887: Sorry, this command is disabled, the Python's site module could not be loaded."));
EXTERN char e_nfa_regexp_cannot_repeat_str[]
	INIT(= N_("E888: (NFA regexp) cannot repeat %s"));
#ifdef FEAT_PROP_POPUP
EXTERN char e_number_required[]
	INIT(= N_("E889: Number required"));
#endif
#ifdef FEAT_SYN_HL
EXTERN char e_trailing_char_after_rsb_str_str[]
	INIT(= N_("E890: trailing char after ']': %s]%s"));
#endif
#ifdef FEAT_FLOAT
EXTERN char e_using_funcref_as_float[]
	INIT(= N_("E891: Using a Funcref as a Float"));
EXTERN char e_using_string_as_float[]
	INIT(= N_("E892: Using a String as a Float"));
EXTERN char e_using_list_as_float[]
	INIT(= N_("E893: Using a List as a Float"));
EXTERN char e_using_dictionary_as_float[]
	INIT(= N_("E894: Using a Dictionary as a Float"));
#endif
#ifdef FEAT_MZSCHEME
EXTERN char e_sorry_this_command_is_disabled_the_mzscheme_racket_base_module_could_not_be_loaded[]
	INIT(= N_("E895: Sorry, this command is disabled, the MzScheme's racket/base module could not be loaded."));
#endif
#ifdef FEAT_EVAL
EXTERN char e_argument_of_str_must_be_list_dictionary_or_blob[]
	INIT(= N_("E896: Argument of %s must be a List, Dictionary or Blob"));
EXTERN char e_list_or_blob_required[]
	INIT(= N_("E897: List or Blob required"));
#endif
#ifdef FEAT_JOB_CHANNEL
EXTERN char e_socket_in_channel_connect[]
	INIT(= N_("E898: socket() in channel_connect()"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_argument_of_str_must_be_list_or_blob[]
	INIT(= N_("E899: Argument of %s must be a List or Blob"));
EXTERN char e_maxdepth_must_be_non_negative_number[]
	INIT(= N_("E900: maxdepth must be non-negative number"));
#endif
#ifdef FEAT_JOB_CHANNEL
EXTERN char e_getaddrinfo_in_channel_open_str[]
	INIT(= N_("E901: getaddrinfo() in channel_open(): %s"));
# ifndef FEAT_IPV6
EXTERN char e_gethostbyname_in_channel_open[]
	INIT(= N_("E901: gethostbyname() in channel_open()"));
# endif
EXTERN char e_cannot_connect_to_port[]
	INIT(= N_("E902: Cannot connect to port"));
EXTERN char e_received_command_with_non_string_argument[]
	INIT(= N_("E903: received command with non-string argument"));
EXTERN char e_last_argument_for_expr_call_must_be_number[]
	INIT(= N_("E904: last argument for expr/call must be a number"));
EXTERN char e_third_argument_for_call_must_be_list[]
	INIT(= N_("E904: third argument for call must be a list"));
EXTERN char e_received_unknown_command_str[]
	INIT(= N_("E905: received unknown command: %s"));
EXTERN char e_not_an_open_channel[]
	INIT(= N_("E906: not an open channel"));
#endif
#ifdef FEAT_FLOAT
EXTERN char e_using_special_value_as_float[]
	INIT(= N_("E907: Using a special value as a Float"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_using_invalid_value_as_string_str[]
	INIT(= N_("E908: using an invalid value as a String: %s"));
EXTERN char e_cannot_index_special_variable[]
	INIT(= N_("E909: Cannot index a special variable"));
#endif
#ifdef FEAT_JOB_CHANNEL
EXTERN char e_using_job_as_number[]
	INIT(= N_("E910: Using a Job as a Number"));
EXTERN char e_using_job_as_float[]
	INIT(= N_("E911: Using a Job as a Float"));
EXTERN char e_cannot_use_evalexpr_sendexpr_with_raw_or_nl_channel[]
	INIT(= N_("E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"));
EXTERN char e_using_channel_as_number[]
	INIT(= N_("E913: Using a Channel as a Number"));
EXTERN char e_using_channel_as_float[]
	INIT(= N_("E914: Using a Channel as a Float"));
EXTERN char e_in_io_buffer_requires_in_buf_or_in_name_to_be_set[]
	INIT(= N_("E915: in_io buffer requires in_buf or in_name to be set"));
EXTERN char e_not_valid_job[]
	INIT(= N_("E916: not a valid job"));
EXTERN char e_cannot_use_callback_with_str[]
	INIT(= N_("E917: Cannot use a callback with %s()"));
EXTERN char e_buffer_must_be_loaded_str[]
	INIT(= N_("E918: buffer must be loaded: %s"));
#endif
EXTERN char e_directory_not_found_in_str_str[]
	INIT(= N_("E919: Directory not found in '%s': \"%s\""));
#ifdef FEAT_JOB_CHANNEL
EXTERN char e_io_file_requires_name_to_be_set[]
	INIT(= N_("E920: _io file requires _name to be set"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_invalid_callback_argument[]
	INIT(= N_("E921: Invalid callback argument"));
EXTERN char e_expected_dict[]
	INIT(= N_("E922: expected a dict"));
EXTERN char e_second_argument_of_function_must_be_list_or_dict[]
	INIT(= N_("E923: Second argument of function() must be a list or a dict"));
#endif
#ifdef FEAT_QUICKFIX
EXTERN char e_current_window_was_closed[]
	INIT(= N_("E924: Current window was closed"));
EXTERN char e_current_quickfix_list_was_changed[]
	INIT(= N_("E925: Current quickfix list was changed"));
EXTERN char e_current_location_list_was_changed[]
	INIT(= N_("E926: Current location list was changed"));
#endif
#ifdef FEAT_EVAL
# ifdef FEAT_QUICKFIX
EXTERN char e_invalid_action_str_1[]
	INIT(= N_("E927: Invalid action: '%s'"));
# endif
EXTERN char e_string_required[]
	INIT(= N_("E928: String required"));
#endif
#ifdef FEAT_VIMINFO
EXTERN char e_too_many_viminfo_temp_files_like_str[]
	INIT(= N_("E929: Too many viminfo temp files, like %s!"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_redir_inside_execute[]
	INIT(= N_("E930: Cannot use :redir inside execute()"));
#endif
EXTERN char e_buffer_cannot_be_registered[]
	INIT(= N_("E931: Buffer cannot be registered"));
#ifdef FEAT_EVAL
EXTERN char e_closure_function_should_not_be_at_top_level[]
	INIT(= N_("E932: Closure function should not be at top level: %s"));
EXTERN char e_function_was_deleted_str[]
	INIT(= N_("E933: Function was deleted: %s"));
#endif
#ifdef FEAT_SIGNS
EXTERN char e_cannot_jump_to_buffer_that_does_not_have_name[]
	INIT(= N_("E934: Cannot jump to a buffer that does not have a name"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_invalid_submatch_number_nr[]
	INIT(= N_("E935: invalid submatch number: %d"));
#endif
EXTERN char e_cannot_delete_current_group[]
	INIT(= N_("E936: Cannot delete the current group"));
EXTERN char e_attempt_to_delete_buffer_that_is_in_use_str[]
	INIT(= N_("E937: Attempt to delete a buffer that is in use: %s"));
#ifdef FEAT_EVAL
EXTERN char e_duplicate_key_in_json_str[]
	INIT(= N_("E938: Duplicate key in JSON: \"%s\""));
#endif
EXTERN char e_positive_count_required[]
	INIT(= N_("E939: Positive count required"));
#ifdef FEAT_EVAL
EXTERN char e_cannot_lock_or_unlock_variable_str[]
	INIT(= N_("E940: Cannot lock or unlock variable %s"));
# ifdef FEAT_CLIENTSERVER
EXTERN char e_already_started_server[]
	INIT(= N_("E941: already started a server"));
# else
EXTERN char e_clientserver_feature_not_available[]
	INIT(= N_("E942: +clientserver feature not available"));
# endif
#endif
EXTERN char e_command_table_needs_to_be_updated_run_make_cmdidxs[]
	INIT(= N_("E943: Command table needs to be updated, run 'make cmdidxs'"));
EXTERN char e_reverse_range_in_character_class[]
	INIT(= N_("E944: Reverse range in character class"));
EXTERN char e_range_too_large_in_character_class[]
	INIT(= N_("E945: Range too large in character class"));
#ifdef FEAT_TERMINAL
EXTERN char e_cannot_make_terminal_with_running_job_modifiable[]
	INIT(= N_("E946: Cannot make a terminal with running job modifiable"));
EXTERN char e_job_still_running_in_buffer_str[]
	INIT(= N_("E947: Job still running in buffer \"%s\""));
EXTERN char e_job_still_running[]
	INIT(= N_("E948: Job still running"));
EXTERN char e_job_still_running_add_bang_to_end_the_job[]
	INIT(= N_("E948: Job still running (add ! to end the job)"));
#endif
EXTERN char e_file_changed_while_writing[]
	INIT(= N_("E949: File changed while writing"));
EXTERN char e_cannot_convert_between_str_and_str[]
	INIT(= N_("E950: Cannot convert between %s and %s"));
EXTERN char e_percent_value_too_large[]
	// xgettext:no-c-format
	INIT(= N_("E951: \\% value too large"));
#if defined(FEAT_EVAL) && defined(FEAT_QUICKFIX)
EXTERN char e_autocommand_caused_recursive_behavior[]
	INIT(= N_("E952: Autocommand caused recursive behavior"));
#endif
#ifdef FEAT_TERMINAL
EXTERN char e_file_exists_str[]
	INIT(= N_("E953: File exists: %s"));
#endif
#if defined(FEAT_TERMGUICOLORS) && defined(FEAT_VTP)
EXTERN char e_24_bit_colors_are_not_supported_on_this_environment[]
	INIT(= N_("E954: 24-bit colors are not supported on this environment"));
#endif
#ifdef FEAT_TERMINAL
EXTERN char e_not_terminal_buffer[]
	INIT(= N_("E955: Not a terminal buffer"));
#endif
EXTERN char e_cannot_use_pattern_recursively[]
	INIT(= N_("E956: Cannot use pattern recursively"));
#ifdef FEAT_EVAL
EXTERN char e_invalid_window_number[]
	INIT(= N_("E957: Invalid window number"));
#endif
#ifdef FEAT_TERMINAL
EXTERN char e_job_already_finished[]
	INIT(= N_("E958: Job already finished"));
#endif
#ifdef FEAT_DIFF
EXTERN char e_invalid_diff_format[]
	INIT(= N_("E959: Invalid diff format."));
EXTERN char e_problem_creating_internal_diff[]
	INIT(= N_("E960: Problem creating the internal diff"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_no_line_number_to_use_for_sflnum[]
	INIT(= N_("E961: no line number to use for \"<sflnum>\""));
EXTERN char e_invalid_action_str_2[]
	INIT(= N_("E962: Invalid action: '%s'"));
EXTERN char e_setting_str_to_value_with_wrong_type[]
	INIT(= N_("E963: setting %s to value with wrong type"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char_u e_invalid_column_number_nr[]
	INIT(= N_("E964: Invalid column number: %ld"));
EXTERN char e_missing_property_type_name[]
	INIT(= N_("E965: missing property type name"));
#endif
#ifdef FEAT_EVAL
EXTERN char_u e_invalid_line_number_nr[]
	INIT(= N_("E966: Invalid line number: %ld"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char e_text_property_info_corrupted[]
	INIT(= N_("E967: text property info corrupted"));
EXTERN char e_need_at_least_one_of_id_or_type[]
	INIT(= N_("E968: Need at least one of 'id' or 'type'"));
EXTERN char e_property_type_str_already_defined[]
	INIT(= N_("E969: Property type %s already defined"));
EXTERN char e_unknown_highlight_group_name_str[]
	INIT(= N_("E970: Unknown highlight group name: '%s'"));
EXTERN char e_type_not_exist[]
	INIT(= N_("E971: Property type %s does not exist"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_blob_value_does_not_have_right_number_of_bytes[]
	INIT(= N_("E972: Blob value does not have the right number of bytes"));
EXTERN char e_blob_literal_should_have_an_even_number_of_hex_characters[]
	INIT(= N_("E973: Blob literal should have an even number of hex characters"));
EXTERN char e_using_blob_as_number[]
	INIT(= N_("E974: Using a Blob as a Number"));
# ifdef FEAT_FLOAT
EXTERN char e_using_blob_as_float[]
	INIT(= N_("E975: Using a Blob as a Float"));
# endif
EXTERN char e_using_blob_as_string[]
	INIT(= N_("E976: Using a Blob as a String"));
EXTERN char e_can_only_compare_blob_with_blob[]
	INIT(= N_("E977: Can only compare Blob with Blob"));
EXTERN char e_invalid_operation_for_blob[]
	INIT(= N_("E978: Invalid operation for Blob"));
EXTERN char e_blob_index_out_of_range_nr[]
	INIT(= N_("E979: Blob index out of range: %ld"));
# ifndef USE_INPUT_BUF
EXTERN char e_lowlevel_input_not_supported[]
	INIT(= N_("E980: lowlevel input not supported"));
# endif
#endif
EXTERN char e_command_not_allowed_in_rvim[]
	INIT(= N_("E981: Command not allowed in rvim"));
#if defined(FEAT_TERMINAL) && defined(MSWIN)
EXTERN char e_conpty_is_not_available[]
	INIT(= N_("E982: ConPTY is not available"));
#endif
EXTERN char e_duplicate_argument_str[]
	INIT(= N_("E983: Duplicate argument: %s"));
EXTERN char e_scriptversion_used_outside_of_sourced_file[]
	INIT(= N_("E984: :scriptversion used outside of a sourced file"));
#ifdef FEAT_EVAL
EXTERN char e_dot_equal_not_supported_with_script_version_two[]
	INIT(= N_("E985: .= is not supported with script version >= 2"));
EXTERN char e_cannot_modify_tag_stack_within_tagfunc[]
	INIT(= N_("E986: cannot modify the tag stack within tagfunc"));
EXTERN char e_invalid_return_value_from_tagfunc[]
	INIT(= N_("E987: invalid return value from tagfunc"));
#endif
#ifdef GUI_MAY_SPAWN
EXTERN char e_gui_cannot_be_used_cannot_execute_gvim_exe[]
	INIT(= N_("E988: GUI cannot be used. Cannot execute gvim.exe."));
#endif
#ifdef FEAT_EVAL
EXTERN char e_non_default_argument_follows_default_argument[]
	INIT(= N_("E989: Non-default argument follows default argument"));
EXTERN char e_missing_end_marker_str[]
	INIT(= N_("E990: Missing end marker '%s'"));
EXTERN char e_cannot_use_heredoc_here[]
	INIT(= N_("E991: cannot use =<< here"));
#endif
EXTERN char e_not_allowed_in_modeline_when_modelineexpr_is_off[]
	INIT(= N_("E992: Not allowed in a modeline when 'modelineexpr' is off"));
#ifdef FEAT_EVAL
EXTERN char e_window_nr_is_not_popup_window[]
	INIT(= N_("E993: window %d is not a popup window"));
EXTERN char e_not_allowed_in_popup_window[]
	INIT(= N_("E994: Not allowed in a popup window"));
EXTERN char e_cannot_modify_existing_variable[]
	INIT(= N_("E995: Cannot modify existing variable"));
EXTERN char e_cannot_lock_range[]
	INIT(= N_("E996: Cannot lock a range"));
EXTERN char e_cannot_lock_option[]
	INIT(= N_("E996: Cannot lock an option"));
EXTERN char e_cannot_lock_list_or_dict[]
	INIT(= N_("E996: Cannot lock a list or dict"));
EXTERN char e_cannot_lock_environment_variable[]
	INIT(= N_("E996: Cannot lock an environment variable"));
EXTERN char e_cannot_lock_register[]
	INIT(= N_("E996: Cannot lock a register"));
#endif
#ifdef FEAT_PROP_POPUP
EXTERN char e_tabpage_not_found_nr[]
	INIT(= N_("E997: Tabpage not found: %d"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_reduce_of_an_empty_str_with_no_initial_value[]
	INIT(= N_("E998: Reduce of an empty %s with no initial value"));
#endif
EXTERN char e_scriptversion_not_supported_nr[]
	INIT(= N_("E999: scriptversion not supported: %d"));
// E1000 unused
#ifdef FEAT_EVAL
EXTERN char e_variable_not_found_str[]
	INIT(= N_("E1001: Variable not found: %s"));
EXTERN char e_syntax_error_at_str[]
	INIT(= N_("E1002: Syntax error at %s"));
EXTERN char e_missing_return_value[]
	INIT(= N_("E1003: Missing return value"));
EXTERN char e_white_space_required_before_and_after_str_at_str[]
	INIT(= N_("E1004: White space required before and after '%s' at \"%s\""));
EXTERN char e_too_many_argument_types[]
	INIT(= N_("E1005: Too many argument types"));
EXTERN char e_str_is_used_as_argument[]
	INIT(= N_("E1006: %s is used as an argument"));
EXTERN char e_mandatory_argument_after_optional_argument[]
	INIT(= N_("E1007: Mandatory argument after optional argument"));
EXTERN char e_missing_type[]
	INIT(= N_("E1008: Missing <type>"));
EXTERN char e_missing_gt_after_type[]
	INIT(= N_("E1009: Missing > after type"));
EXTERN char e_type_not_recognized_str[]
	INIT(= N_("E1010: Type not recognized: %s"));
EXTERN char e_name_too_long_str[]
	INIT(= N_("E1011: Name too long: %s"));
EXTERN char e_type_mismatch_expected_str_but_got_str[]
	INIT(= N_("E1012: Type mismatch; expected %s but got %s"));
EXTERN char e_type_mismatch_expected_str_but_got_str_in_str[]
	INIT(= N_("E1012: Type mismatch; expected %s but got %s in %s"));
EXTERN char e_argument_nr_type_mismatch_expected_str_but_got_str[]
	INIT(= N_("E1013: Argument %d: type mismatch, expected %s but got %s"));
EXTERN char e_argument_nr_type_mismatch_expected_str_but_got_str_in_str[]
	INIT(= N_("E1013: Argument %d: type mismatch, expected %s but got %s in %s"));
EXTERN char e_invalid_key_str[]
	INIT(= N_("E1014: Invalid key: %s"));
EXTERN char e_name_expected_str[]
	INIT(= N_("E1015: Name expected: %s"));
EXTERN char e_cannot_declare_a_scope_variable[]
	INIT(= N_("E1016: Cannot declare a %s variable: %s"));
EXTERN char e_cannot_declare_an_environment_variable[]
	INIT(= N_("E1016: Cannot declare an environment variable: %s"));
EXTERN char e_variable_already_declared[]
	INIT(= N_("E1017: Variable already declared: %s"));
EXTERN char e_cannot_assign_to_constant[]
	INIT(= N_("E1018: Cannot assign to a constant: %s"));
EXTERN char e_can_only_concatenate_to_string[]
	INIT(= N_("E1019: Can only concatenate to string"));
EXTERN char e_cannot_use_operator_on_new_variable[]
	INIT(= N_("E1020: Cannot use an operator on a new variable: %s"));
EXTERN char e_const_requires_a_value[]
	INIT(= N_("E1021: Const requires a value"));
EXTERN char e_type_or_initialization_required[]
	INIT(= N_("E1022: Type or initialization required"));
EXTERN char e_using_number_as_bool_nr[]
	INIT(= N_("E1023: Using a Number as a Bool: %lld"));
EXTERN char e_using_number_as_string[]
	INIT(= N_("E1024: Using a Number as a String"));
EXTERN char e_using_rcurly_outside_if_block_scope[]
	INIT(= N_("E1025: Using } outside of a block scope"));
#endif
EXTERN char e_missing_rcurly[]
	INIT(= N_("E1026: Missing }"));
#ifdef FEAT_EVAL
EXTERN char e_missing_return_statement[]
	INIT(= N_("E1027: Missing return statement"));
EXTERN char e_compiling_def_function_failed[]
	INIT(= N_("E1028: Compiling :def function failed"));
EXTERN char e_expected_str_but_got_str[]
	INIT(= N_("E1029: Expected %s but got %s"));
EXTERN char e_using_string_as_number_str[]
	INIT(= N_("E1030: Using a String as a Number: \"%s\""));
EXTERN char e_cannot_use_void_value[]
	INIT(= N_("E1031: Cannot use void value"));
EXTERN char e_missing_catch_or_finally[]
	INIT(= N_("E1032: Missing :catch or :finally"));
EXTERN char e_catch_unreachable_after_catch_all[]
	INIT(= N_("E1033: Catch unreachable after catch-all"));
EXTERN char e_cannot_use_reserved_name[]
	INIT(= N_("E1034: Cannot use reserved name %s"));
EXTERN char e_percent_requires_number_arguments[]
	// xgettext:no-c-format
	INIT(= N_("E1035: % requires number arguments"));
EXTERN char e_char_requires_number_or_float_arguments[]
	INIT(= N_("E1036: %c requires number or float arguments"));
EXTERN char e_cannot_use_str_with_str[]
	INIT(= N_("E1037: Cannot use \"%s\" with %s"));
EXTERN char e_vim9script_can_only_be_used_in_script[]
	INIT(= N_("E1038: \"vim9script\" can only be used in a script"));
EXTERN char e_vim9script_must_be_first_command_in_script[]
	INIT(= N_("E1039: \"vim9script\" must be the first command in a script"));
#endif
EXTERN char e_cannot_use_scriptversion_after_vim9script[]
	INIT(= N_("E1040: Cannot use :scriptversion after :vim9script"));
#ifdef FEAT_EVAL
EXTERN char e_redefining_script_item_str[]
	INIT(= N_("E1041: Redefining script item: \"%s\""));
EXTERN char e_export_can_only_be_used_in_vim9script[]
	INIT(= N_("E1042: Export can only be used in vim9script"));
EXTERN char e_invalid_command_after_export[]
	INIT(= N_("E1043: Invalid command after :export"));
EXTERN char e_export_with_invalid_argument[]
	INIT(= N_("E1044: Export with invalid argument"));
// E1045 not used
// E1046 not used
EXTERN char e_syntax_error_in_import_str[]
	INIT(= N_("E1047: Syntax error in import: %s"));
EXTERN char e_item_not_found_in_script_str[]
	INIT(= N_("E1048: Item not found in script: %s"));
EXTERN char e_item_not_exported_in_script_str[]
	INIT(= N_("E1049: Item not exported in script: %s"));
EXTERN char e_colon_required_before_range_str[]
	INIT(= N_("E1050: Colon required before a range: %s"));
EXTERN char e_wrong_argument_type_for_plus[]
	INIT(= N_("E1051: Wrong argument type for +"));
EXTERN char e_cannot_declare_an_option[]
	INIT(= N_("E1052: Cannot declare an option: %s"));
EXTERN char e_could_not_import_str[]
	INIT(= N_("E1053: Could not import \"%s\""));
EXTERN char e_variable_already_declared_in_script_str[]
	INIT(= N_("E1054: Variable already declared in the script: %s"));
EXTERN char e_missing_name_after_dots[]
	INIT(= N_("E1055: Missing name after ..."));
EXTERN char e_expected_type_str[]
	INIT(= N_("E1056: Expected a type: %s"));
EXTERN char e_missing_enddef[]
	INIT(= N_("E1057: Missing :enddef"));
EXTERN char e_function_nesting_too_deep[]
	INIT(= N_("E1058: Function nesting too deep"));
EXTERN char e_no_white_space_allowed_before_colon_str[]
	INIT(= N_("E1059: No white space allowed before colon: %s"));
EXTERN char e_expected_dot_after_name_str[]
	INIT(= N_("E1060: Expected dot after name: %s"));
EXTERN char e_cannot_find_function_str[]
	INIT(= N_("E1061: Cannot find function %s"));
EXTERN char e_cannot_index_number[]
	INIT(= N_("E1062: Cannot index a Number"));
EXTERN char e_type_mismatch_for_v_variable[]
	INIT(= N_("E1063: Type mismatch for v: variable"));
#endif
EXTERN char e_yank_register_changed_while_using_it[]
	INIT(= N_("E1064: Yank register changed while using it"));
EXTERN char e_command_cannot_be_shortened_str[]
	INIT(= N_("E1065: Command cannot be shortened: %s"));
#ifdef FEAT_EVAL
EXTERN char e_cannot_declare_a_register_str[]
	INIT(= N_("E1066: Cannot declare a register: %s"));
EXTERN char e_separator_mismatch_str[]
	INIT(= N_("E1067: Separator mismatch: %s"));
EXTERN char e_no_white_space_allowed_before_str_str[]
	INIT(= N_("E1068: No white space allowed before '%s': %s"));
EXTERN char e_white_space_required_after_str_str[]
	INIT(= N_("E1069: White space required after '%s': %s"));
EXTERN char e_invalid_string_for_import_str[]
	INIT(= N_("E1071: Invalid string for :import: %s"));
EXTERN char e_cannot_compare_str_with_str[]
	INIT(= N_("E1072: Cannot compare %s with %s"));
EXTERN char e_name_already_defined_str[]
	INIT(= N_("E1073: Name already defined: %s"));
EXTERN char e_no_white_space_allowed_after_dot[]
	INIT(= N_("E1074: No white space allowed after dot"));
EXTERN char e_namespace_not_supported_str[]
	INIT(= N_("E1075: Namespace not supported: %s"));
# ifndef FEAT_FLOAT
EXTERN char e_this_vim_is_not_compiled_with_float_support[]
	INIT(= N_("E1076: This Vim is not compiled with float support"));
# endif
EXTERN char e_missing_argument_type_for_str[]
	INIT(= N_("E1077: Missing argument type for %s"));
#endif
EXTERN char e_invalid_command_nested_did_you_mean_plusplus_nested[]
	INIT(= N_("E1078: Invalid command \"nested\", did you mean \"++nested\"?"));
#ifdef FEAT_EVAL
EXTERN char e_cannot_declare_variable_on_command_line[]
	INIT(= N_("E1079: Cannot declare a variable on the command line"));
EXTERN char e_invalid_assignment[]
	INIT(= N_("E1080: Invalid assignment"));
EXTERN char e_cannot_unlet_str[]
	INIT(= N_("E1081: Cannot unlet %s"));
#endif
EXTERN char e_command_modifier_without_command[]
	INIT(= N_("E1082: Command modifier without command"));
#ifdef FEAT_EVAL
EXTERN char e_missing_backtick[]
	INIT(= N_("E1083: Missing backtick"));
EXTERN char e_cannot_delete_vim9_script_function_str[]
	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"));
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[]
	INIT(= N_("E1088: Script cannot import itself"));
EXTERN char e_unknown_variable_str[]
	INIT(= N_("E1089: Unknown variable: %s"));
EXTERN char e_cannot_assign_to_argument[]
	INIT(= N_("E1090: Cannot assign to argument %s"));
EXTERN char e_function_is_not_compiled_str[]
	INIT(= N_("E1091: Function is not compiled: %s"));
EXTERN char e_cannot_nest_redir[]
	INIT(= N_("E1092: Cannot nest :redir"));
EXTERN char e_expected_nr_items_but_got_nr[]
	INIT(= N_("E1093: Expected %d items but got %d"));
EXTERN char e_import_can_only_be_used_in_script[]
	INIT(= N_("E1094: Import can only be used in a script"));
EXTERN char e_unreachable_code_after_return[]
	INIT(= N_("E1095: Unreachable code after :return"));
EXTERN char e_returning_value_in_function_without_return_type[]
	INIT(= N_("E1096: Returning a value in a function without a return type"));
EXTERN char e_line_incomplete[]
	INIT(= N_("E1097: Line incomplete"));
EXTERN char e_string_list_or_blob_required[]
	INIT(= N_("E1098: String, List or Blob required"));
EXTERN char e_unknown_error_while_executing_str[]
	INIT(= N_("E1099: Unknown error while executing %s"));
EXTERN char e_command_not_supported_in_vim9_script_missing_var_str[]
	INIT(= N_("E1100: Command not supported in Vim9 script (missing :var?): %s"));
EXTERN char e_cannot_declare_script_variable_in_function_str[]
	INIT(= N_("E1101: Cannot declare a script variable in a function: %s"));
EXTERN char e_lambda_function_not_found_str[]
	INIT(= N_("E1102: Lambda function not found: %s"));
EXTERN char e_dictionary_not_set[]
	INIT(= N_("E1103: Dictionary not set"));
EXTERN char e_missing_gt[]
	INIT(= N_("E1104: Missing >"));
EXTERN char e_cannot_convert_str_to_string[]
	INIT(= N_("E1105: Cannot convert %s to string"));
EXTERN char e_one_argument_too_many[]
	INIT(= N_("E1106: One argument too many"));
EXTERN char e_nr_arguments_too_many[]
	INIT(= N_("E1106: %d arguments too many"));
EXTERN char e_string_list_dict_or_blob_required[]
	INIT(= N_("E1107: String, List, Dict or Blob required"));
EXTERN char e_item_not_found_str[]
	INIT(= N_("E1108: Item not found: %s"));
EXTERN char e_list_item_nr_is_not_list[]
	INIT(= N_("E1109: List item %d is not a List"));
EXTERN char e_list_item_nr_does_not_contain_3_numbers[]
	INIT(= N_("E1110: List item %d does not contain 3 numbers"));
EXTERN char e_list_item_nr_range_invalid[]
	INIT(= N_("E1111: List item %d range invalid"));
EXTERN char e_list_item_nr_cell_width_invalid[]
	INIT(= N_("E1112: List item %d cell width invalid"));
EXTERN char e_overlapping_ranges_for_nr[]
	INIT(= N_("E1113: Overlapping ranges for 0x%lx"));
EXTERN char e_only_values_of_0x100_and_higher_supported[]
	INIT(= N_("E1114: Only values of 0x100 and higher supported"));
EXTERN char e_assert_fails_fourth_argument[]
	INIT(= N_("E1115: \"assert_fails()\" fourth argument must be a number"));
EXTERN char e_assert_fails_fifth_argument[]
	INIT(= N_("E1116: \"assert_fails()\" fifth argument must be a string"));
EXTERN char e_cannot_use_bang_with_nested_def[]
	INIT(= N_("E1117: Cannot use ! with nested :def"));
EXTERN char e_cannot_change_locked_list[]
	INIT(= N_("E1118: Cannot change locked list"));
EXTERN char e_cannot_change_locked_list_item[]
	INIT(= N_("E1119: Cannot change locked list item"));
EXTERN char e_cannot_change_dict[]
	INIT(= N_("E1120: Cannot change dict"));
EXTERN char e_cannot_change_dict_item[]
	INIT(= N_("E1121: Cannot change dict item"));
EXTERN char e_variable_is_locked_str[]
	INIT(= N_("E1122: Variable is locked: %s"));
EXTERN char e_missing_comma_before_argument_str[]
	INIT(= N_("E1123: Missing comma before argument: %s"));
EXTERN char e_str_cannot_be_used_in_legacy_vim_script[]
	INIT(= N_("E1124: \"%s\" cannot be used in legacy Vim script"));
EXTERN char e_final_requires_a_value[]
	INIT(= N_("E1125: Final requires a value"));
EXTERN char e_cannot_use_let_in_vim9_script[]
	INIT(= N_("E1126: Cannot use :let in Vim9 script"));
EXTERN char e_missing_name_after_dot[]
	INIT(= N_("E1127: Missing name after dot"));
EXTERN char e_endblock_without_block[]
	INIT(= N_("E1128: } without {"));
EXTERN char e_throw_with_empty_string[]
	INIT(= N_("E1129: Throw with empty string"));
EXTERN char e_cannot_add_to_null_list[]
	INIT(= N_("E1130: Cannot add to null list"));
EXTERN char e_cannot_add_to_null_blob[]
	INIT(= N_("E1131: Cannot add to null blob"));
EXTERN char e_missing_function_argument[]
	INIT(= N_("E1132: Missing function argument"));
EXTERN char e_cannot_extend_null_dict[]
	INIT(= N_("E1133: Cannot extend a null dict"));
EXTERN char e_cannot_extend_null_list[]
	INIT(= N_("E1134: Cannot extend a null list"));
EXTERN char e_using_string_as_bool_str[]
	INIT(= N_("E1135: Using a String as a Bool: \"%s\""));
#endif
EXTERN char e_cmd_mapping_must_end_with_cr_before_second_cmd[]
	INIT(= N_("E1136: <Cmd> mapping must end with <CR> before second <Cmd>"));
EXTERN char e_cmd_maping_must_not_include_str_key[]
	INIT(= N_("E1137: <Cmd> mapping must not include %s key"));
#ifdef FEAT_EVAL
EXTERN char e_using_bool_as_number[]
	INIT(= N_("E1138: Using a Bool as a Number"));
EXTERN char e_missing_matching_bracket_after_dict_key[]
	INIT(= N_("E1139: Missing matching bracket after dict key"));
EXTERN char e_for_argument_must_be_sequence_of_lists[]
	INIT(= N_("E1140: :for argument must be a sequence of lists"));
EXTERN char e_indexable_type_required[]
	INIT(= N_("E1141: Indexable type required"));
EXTERN char e_calling_test_garbagecollect_now_while_v_testing_is_not_set[]
	INIT(= N_("E1142: Calling test_garbagecollect_now() while v:testing is not set"));
EXTERN char e_empty_expression_str[]
	INIT(= N_("E1143: Empty expression: \"%s\""));
EXTERN char e_command_str_not_followed_by_white_space_str[]
	INIT(= N_("E1144: Command \"%s\" is not followed by white space: %s"));
EXTERN char e_missing_heredoc_end_marker_str[]
	INIT(= N_("E1145: Missing heredoc end marker: %s"));
EXTERN char e_command_not_recognized_str[]
	INIT(= N_("E1146: Command not recognized: %s"));
EXTERN char e_list_not_set[]
	INIT(= N_("E1147: List not set"));
EXTERN char e_cannot_index_str[]
	INIT(= N_("E1148: Cannot index a %s"));
EXTERN char e_script_variable_invalid_after_reload_in_function_str[]
	INIT(= N_("E1149: Script variable is invalid after reload in function %s"));
EXTERN char e_script_variable_type_changed[]
	INIT(= N_("E1150: Script variable type changed"));
EXTERN char e_mismatched_endfunction[]
	INIT(= N_("E1151: Mismatched endfunction"));
EXTERN char e_mismatched_enddef[]
	INIT(= N_("E1152: Mismatched enddef"));
EXTERN char e_invalid_operation_for_str[]
	INIT(= N_("E1153: Invalid operation for %s"));
EXTERN char e_divide_by_zero[]
	INIT(= N_("E1154: Divide by zero"));
#endif
EXTERN char e_cannot_define_autocommands_for_all_events[]
	INIT(= N_("E1155: Cannot define autocommands for ALL events"));
EXTERN char e_cannot_change_arglist_recursively[]
	INIT(= N_("E1156: Cannot change the argument list recursively"));
#ifdef FEAT_EVAL
EXTERN char e_missing_return_type[]
	INIT(= N_("E1157: Missing return type"));
EXTERN char e_cannot_use_flatten_in_vim9_script[]
	INIT(= N_("E1158: Cannot use flatten() in Vim9 script, use flattennew()"));
#endif
EXTERN char e_cannot_split_window_when_closing_buffer[]
	INIT(= N_("E1159: Cannot split a window when closing the buffer"));
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_default_for_variable_arguments[]
	INIT(= N_("E1160: Cannot use a default for variable arguments"));
EXTERN char e_cannot_json_encode_str[]
	INIT(= N_("E1161: Cannot json encode a %s"));
EXTERN char e_register_name_must_be_one_char_str[]
	INIT(= N_("E1162: Register name must be one character: %s"));
EXTERN char e_variable_nr_type_mismatch_expected_str_but_got_str[]
	INIT(= N_("E1163: Variable %d: type mismatch, expected %s but got %s"));
EXTERN char e_variable_nr_type_mismatch_expected_str_but_got_str_in_str[]
	INIT(= N_("E1163: Variable %d: type mismatch, expected %s but got %s in %s"));
#endif
EXTERN char e_vim9cmd_must_be_followed_by_command[]
	INIT(= N_("E1164: vim9cmd must be followed by a command"));
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_range_with_assignment_str[]
	INIT(= N_("E1165: Cannot use a range with an assignment: %s"));
EXTERN char e_cannot_use_range_with_dictionary[]
	INIT(= N_("E1166: Cannot use a range with a dictionary"));
EXTERN char e_argument_name_shadows_existing_variable_str[]
	INIT(= N_("E1167: Argument name shadows existing variable: %s"));
EXTERN char e_argument_already_declared_in_script_str[]
	INIT(= N_("E1168: Argument already declared in the script: %s"));
EXTERN char e_expression_too_recursive_str[]
	INIT(= N_("E1169: Expression too recursive: %s"));
EXTERN char e_cannot_use_hash_curly_to_start_comment[]
	INIT(= N_("E1170: Cannot use #{ to start a comment"));
EXTERN char e_missing_end_block[]
	INIT(= N_("E1171: Missing } after inline function"));
EXTERN char e_cannot_use_default_values_in_lambda[]
	INIT(= N_("E1172: Cannot use default values in a lambda"));
EXTERN char e_text_found_after_str_str[]
	INIT(= N_("E1173: Text found after %s: %s"));
EXTERN char e_string_required_for_argument_nr[]
	INIT(= N_("E1174: String required for argument %d"));
EXTERN char e_non_empty_string_required_for_argument_nr[]
	INIT(= N_("E1175: Non-empty string required for argument %d"));
EXTERN char e_misplaced_command_modifier[]
	INIT(= N_("E1176: Misplaced command modifier"));
EXTERN char e_for_loop_on_str_not_supported[]
	INIT(= N_("E1177: For loop on %s not supported"));
EXTERN char e_cannot_lock_unlock_local_variable[]
	INIT(= N_("E1178: Cannot lock or unlock a local variable"));
#endif
#ifdef FEAT_TERMINAL
EXTERN char e_failed_to_extract_pwd_from_str_check_your_shell_config[]
	INIT(= N_("E1179: Failed to extract PWD from %s, check your shell's config related to OSC 7"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_variable_arguments_type_must_be_list_str[]
	INIT(= N_("E1180: Variable arguments type must be a list: %s"));
EXTERN char e_cannot_use_underscore_here[]
	INIT(= N_("E1181: Cannot use an underscore here"));
EXTERN char e_cannot_define_dict_func_in_vim9_script_str[]
	INIT(= N_("E1182: Cannot define a dict function in Vim9 script: %s"));
EXTERN char e_cannot_use_range_with_assignment_operator_str[]
	INIT(= N_("E1183: Cannot use a range with an assignment operator: %s"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_blob_not_set[]
	INIT(= N_("E1184: Blob not set"));
EXTERN char e_missing_redir_end[]
	INIT(= N_("E1185: Missing :redir END"));
EXTERN char e_expression_does_not_result_in_value_str[]
	INIT(= N_("E1186: Expression does not result in a value: %s"));
#endif
EXTERN char e_failed_to_source_defaults[]
	INIT(= N_("E1187: Failed to source defaults.vim"));
#if defined(FEAT_TERMINAL) && defined(FEAT_CMDWIN)
EXTERN char e_cannot_open_terminal_from_command_line_window[]
	INIT(= N_("E1188: Cannot open a terminal from the command line window"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_cannot_use_legacy_with_command_str[]
	INIT(= N_("E1189: Cannot use :legacy with this command: %s"));
EXTERN char e_one_argument_too_few[]
	INIT(= N_("E1190: One argument too few"));
EXTERN char e_nr_arguments_too_few[]
	INIT(= N_("E1190: %d arguments too few"));
EXTERN char e_call_to_function_that_failed_to_compile_str[]
	INIT(= N_("E1191: Call to function that failed to compile: %s"));
EXTERN char e_empty_function_name[]
	INIT(= N_("E1192: Empty function name"));
#endif
// libsodium
#ifdef FEAT_CRYPT
# ifndef FEAT_SODIUM
EXTERN char e_libsodium_not_built_in[]
	INIT(= N_("E1193: cryptmethod xchacha20 not built into this Vim"));
# else
#  if 0
EXTERN char e_libsodium_cannot_encrypt_header[]
	INIT(= N_("E1194: Cannot encrypt header, not enough space"));
EXTERN char e_libsodium_cannot_encrypt_buffer[]
	INIT(= N_("E1195: Cannot encrypt buffer, not enough space"));
EXTERN char e_libsodium_cannot_decrypt_header[]
	INIT(= N_("E1196: Cannot decrypt header, not enough space"));
#  endif
EXTERN char e_libsodium_cannot_allocate_buffer[]
	INIT(= N_("E1197: Cannot allocate_buffer for encryption"));
EXTERN char e_libsodium_decryption_failed_header_incomplete[]
	INIT(= N_("E1198: Decryption failed: Header incomplete!"));
#  if 0
EXTERN char e_libsodium_cannot_decrypt_buffer[]
	INIT(= N_("E1199: Cannot decrypt buffer, not enough space"));
#  endif
EXTERN char e_libsodium_decryption_failed[]
	INIT(= N_("E1200: Decryption failed!"));
EXTERN char e_libsodium_decryption_failed_premature[]
	INIT(= N_("E1201: Decryption failed: pre-mature end of file!"));
# endif
#endif
#ifdef FEAT_EVAL
EXTERN char e_no_white_space_allowed_after_str_str[]
	INIT(= N_("E1202: No white space allowed after '%s': %s"));
EXTERN char e_dot_can_only_be_used_on_dictionary_str[]
	INIT(= N_("E1203: Dot can only be used on a dictionary: %s"));
#endif
EXTERN char e_regexp_number_after_dot_pos_search[]
	INIT(= N_("E1204: No Number allowed after .: '\\%%%c'"));
EXTERN char e_no_white_space_allowed_between_option_and[]
	INIT(= N_("E1205: No white space allowed between option and"));
#ifdef FEAT_EVAL
EXTERN char e_dict_required_for_argument_nr[]
	INIT(= N_("E1206: Dictionary required for argument %d"));
EXTERN char e_expression_without_effect_str[]
	INIT(= N_("E1207: Expression without an effect: %s"));
#endif
EXTERN char e_complete_used_without_allowing_arguments[]
	INIT(= N_("E1208: -complete used without allowing arguments"));
#ifdef FEAT_EVAL
EXTERN char e_invalid_value_for_line_number_str[]
	INIT(= N_("E1209: Invalid value for a line number: \"%s\""));
EXTERN char e_number_required_for_argument_nr[]
	INIT(= N_("E1210: Number required for argument %d"));
EXTERN char e_list_required_for_argument_nr[]
	INIT(= N_("E1211: List required for argument %d"));
EXTERN char e_bool_required_for_argument_nr[]
	INIT(= N_("E1212: Bool required for argument %d"));
EXTERN char e_redefining_imported_item_str[]
	INIT(= N_("E1213: Redefining imported item \"%s\""));
#endif
#if defined(FEAT_DIGRAPHS) && defined(FEAT_EVAL)
EXTERN char e_digraph_must_be_just_two_characters_str[]
	INIT(= N_("E1214: Digraph must be just two characters: %s"));
EXTERN char e_digraph_argument_must_be_one_character_str[]
	INIT(= N_("E1215: Digraph must be one character: %s"));
EXTERN char e_digraph_setlist_argument_must_be_list_of_lists_with_two_items[]
	INIT(= N_("E1216: digraph_setlist() argument must be a list of lists with two items"));
#endif
#ifdef FEAT_EVAL
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"));
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"));
EXTERN char e_string_or_blob_required_for_argument_nr[]
	INIT(= N_("E1221: String or Blob required for argument %d"));
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[]
	INIT(= N_("E1223: String or Dictionary required for argument %d"));
EXTERN char e_string_number_or_list_required_for_argument_nr[]
	INIT(= N_("E1224: String, Number or List required for argument %d"));
EXTERN char e_string_list_or_dict_required_for_argument_nr[]
	INIT(= N_("E1225: String, List or Dictionary required for argument %d"));
EXTERN char e_list_or_blob_required_for_argument_nr[]
	INIT(= N_("E1226: List or Blob required for argument %d"));
EXTERN char e_list_or_dict_required_for_argument_nr[]
	INIT(= N_("E1227: List or Dictionary required for argument %d"));
EXTERN char e_list_dict_or_blob_required_for_argument_nr[]
	INIT(= N_("E1228: List, Dictionary or Blob required for argument %d"));
EXTERN char e_expected_dictionary_for_using_key_str_but_got_str[]
	INIT(= N_("E1229: Expected dictionary for using key \"%s\", but got %s"));
#endif
#ifdef FEAT_SODIUM
EXTERN char e_encryption_sodium_mlock_failed[]
	INIT(= N_("E1230: Encryption: sodium_mlock() failed"));
#endif
EXTERN char e_cannot_use_bar_to_separate_commands_here_str[]
	INIT(= N_("E1231: Cannot use a bar to separate commands here: %s"));
#ifdef FEAT_EVAL
EXTERN char e_argument_of_exists_compiled_must_be_literal_string[]
	INIT(= N_("E1232: Argument of exists_compiled() must be a literal string"));
EXTERN char e_exists_compiled_can_only_be_used_in_def_function[]
	INIT(= N_("E1233: exists_compiled() can only be used in a :def function"));
#endif
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"));
EXTERN char e_cannot_use_str_itself_it_is_imported[]
	INIT(= N_("E1236: Cannot use %s itself, it is imported"));
#endif
EXTERN char e_no_such_user_defined_command_in_current_buffer_str[]
	INIT(= N_("E1237: No such user-defined command in current buffer: %s"));
#ifdef FEAT_EVAL
EXTERN char e_blob_required_for_argument_nr[]
	INIT(= N_("E1238: Blob required for argument %d"));
EXTERN char e_invalid_value_for_blob_nr[]
	INIT(= N_("E1239: Invalid value for blob: %d"));
#endif
EXTERN char e_resulting_text_too_long[]
	INIT(= N_("E1240: Resulting text too long"));
#ifdef FEAT_EVAL
EXTERN char e_separator_not_supported_str[]
	INIT(= N_("E1241: Separator not supported: %s"));
EXTERN char e_no_white_space_allowed_before_separator_str[]
	INIT(= N_("E1242: No white space allowed before separator: %s"));
#endif
#ifdef FEAT_GUI_GTK
EXTERN char e_ascii_code_not_in_range[]
	INIT(= N_("E1243: ASCII code not in 32-127 range"));
#endif
#ifdef FEAT_EVAL
# if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
EXTERN char e_bad_color_string_str[]
	INIT(= N_("E1244: Bad color string: %s"));
# endif
EXTERN char e_cannot_expand_sfile_in_vim9_function[]
	INIT(= N_("E1245: Cannot expand <sfile> in a Vim9 function"));
EXTERN char e_cannot_find_variable_to_unlock_str[]
	INIT(= N_("E1246: Cannot find variable to (un)lock: %s"));
#endif
EXTERN char e_line_number_out_of_range[]
	INIT(= N_("E1247: Line number out of range"));
#ifdef FEAT_EVAL
EXTERN char e_closure_called_from_invalid_context[]
	INIT(= N_("E1248: Closure called from invalid context"));
#endif
EXTERN char e_highlight_group_name_too_long[]
	INIT(= N_("E1249: Highlight group name too long"));
#ifdef FEAT_EVAL
EXTERN char e_argument_of_str_must_be_list_string_dictionary_or_blob[]
	INIT(= N_("E1250: Argument of %s must be a List, String, Dictionary or Blob"));
EXTERN char e_list_dict_blob_or_string_required_for_argument_nr[]
	INIT(= N_("E1251: List, Dictionary, Blob or String required for argument %d"));
EXTERN char e_string_list_or_blob_required_for_argument_nr[]
	INIT(= N_("E1252: String, List or Blob required for argument %d"));
EXTERN char e_string_expected_for_argument_nr[]
	INIT(= N_("E1253: String expected for argument %d"));
EXTERN char e_cannot_use_script_variable_in_for_loop[]
	INIT(= N_("E1254: Cannot use script variable in for loop"));
#endif
EXTERN char e_cmd_mapping_must_end_with_cr[]
	INIT(= N_("E1255: <Cmd> mapping must end with <CR>"));
#ifdef FEAT_EVAL
EXTERN char e_string_or_function_required_for_argument_nr[]
	INIT(= N_("E1256: String or function required for argument %d"));
EXTERN char e_imported_script_must_use_as_or_end_in_dot_vim_str[]
	INIT(= N_("E1257: Imported script must use \"as\" or end in .vim: %s"));
EXTERN char e_no_dot_after_imported_name_str[]
	INIT(= N_("E1258: No '.' after imported name: %s"));
EXTERN char e_missing_name_after_imported_name_str[]
	INIT(= N_("E1259: Missing name after imported name: %s"));
EXTERN char e_cannot_unlet_imported_item_str[]
	INIT(= N_("E1260: Cannot unlet an imported item: %s"));
EXTERN char e_cannot_import_dot_vim_without_using_as[]
	INIT(= N_("E1261: Cannot import .vim without using \"as\""));
EXTERN char e_cannot_import_same_script_twice_str[]
	INIT(= N_("E1262: Cannot import the same script twice: %s"));
EXTERN char e_cannot_use_name_with_hash_in_vim9_script_use_export_instead[]
	INIT(= N_("E1263: cannot use name with # in Vim9 script, use export instead"));
EXTERN char e_autoload_import_cannot_use_absolute_or_relative_path[]
	INIT(= N_("E1264: Autoload import cannot use absolute or relative path: %s"));
EXTERN char e_cannot_use_partial_here[]
	INIT(= N_("E1265: Cannot use a partial here"));
#endif
#if defined(FEAT_PYTHON3) && defined(MSWIN)
EXTERN char e_critical_error_in_python3_initialization_check_your_installation[]
	INIT(= N_("E1266: Critical error in python3 initialization, check your python3 installation"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_function_name_must_start_with_capital_str[]
	INIT(= N_("E1267: Function name must start with a capital: %s"));
EXTERN char e_cannot_use_s_colon_in_vim9_script_str[]
	INIT(= N_("E1268: Cannot use s: in Vim9 script: %s"));
EXTERN char e_cannot_create_vim9_script_variable_in_function_str[]
	INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s"));
#endif
EXTERN char e_cannot_use_s_backslash_in_vim9_script[]
	INIT(= N_("E1270: Cannot use :s\\/sub/ in Vim9 script"));
#ifdef FEAT_EVAL
EXTERN char e_compiling_closure_without_context_str[]
	INIT(= N_("E1271: compiling closure without context: %s"));
EXTERN char e_using_type_not_in_script_context_str[]
	INIT(= N_("E1272: Using type not in a script context: %s"));
#endif
